From e1d0025ec8b1ceedbb00330d1a0cbcbe7a362b05 Mon Sep 17 00:00:00 2001 From: divious1 Date: Tue, 21 May 2019 12:35:33 -0700 Subject: [PATCH 01/72] migrated app, updated ci job, and docs --- .circleci/config.yml | 12 +- .pre-commit-config.yaml | 2 + README.md | 2 +- package/README.md | 31 + package/README/alert_actions.conf.spec | 85 + package/README/analytic_story.conf.spec | 100 + package/README/essoc_story_detail.txt | 15 + package/README/essoc_summary.txt | 24 + package/README/essoc_usage_dashboard.txt | 51 + package/README/savedsearches.conf.example | 38 + .../static/alert_escu_contextualize.png | Bin 0 -> 4530 bytes .../static/alert_escu_investigate.png | Bin 0 -> 4530 bytes package/appserver/static/alerticon.png | Bin 0 -> 8991 bytes .../static/analytic_story_details.css | 186 + .../static/analytic_story_details.js | 601 ++ package/appserver/static/escu_summary.css | 66 + package/appserver/static/escu_summary.js | 78 + package/appserver/static/feedback.js | 19 + package/appserver/static/img/escu/Slide1.PNG | Bin 0 -> 127927 bytes package/appserver/static/img/escu/Slide2.PNG | Bin 0 -> 75290 bytes package/appserver/static/img/escu/Slide3.PNG | Bin 0 -> 133781 bytes package/appserver/static/img/escu/Slide4.PNG | Bin 0 -> 188906 bytes package/appserver/static/img/escu/Slide5.PNG | Bin 0 -> 177642 bytes package/appserver/static/img/escu/Slide6.PNG | Bin 0 -> 163389 bytes package/appserver/static/img/escu/Slide7.PNG | Bin 0 -> 83664 bytes package/appserver/static/img/escu/Slide8.PNG | Bin 0 -> 220471 bytes .../alert_actions_base.py | 211 + .../bin/da_ess_contentupdate/cim_actions.py | 508 ++ .../cloudconnectlib/__init__.py | 10 + .../cloudconnectlib/client.py | 77 + .../cloudconnectlib/common/__init__.py | 0 .../cloudconnectlib/common/lib_util.py | 54 + .../cloudconnectlib/common/log.py | 32 + .../cloudconnectlib/common/util.py | 48 + .../cloudconnectlib/configuration/__init__.py | 1 + .../cloudconnectlib/configuration/loader.py | 300 + .../configuration/schema_1_0_0.json | 344 + .../cloudconnectlib/core/__init__.py | 2 + .../core/cacerts/ca_certs_locater.py | 130 + .../cloudconnectlib/core/defaults.py | 20 + .../cloudconnectlib/core/engine.py | 327 + .../cloudconnectlib/core/exceptions.py | 27 + .../cloudconnectlib/core/ext.py | 336 + .../cloudconnectlib/core/http.py | 234 + .../cloudconnectlib/core/models.py | 277 + .../cloudconnectlib/core/pipemgr.py | 14 + .../cloudconnectlib/core/template.py | 20 + .../splunktacollectorlib/__init__.py | 0 .../cloud_connect_mod_input.py | 71 + .../splunktacollectorlib/common/__init__.py | 52 + .../splunktacollectorlib/common/log.py | 49 + .../splunktacollectorlib/common/rwlock.py | 71 + .../common/schema_meta.py | 7 + .../splunktacollectorlib/config.py | 367 + .../data_collection/__init__.py | 1 + .../data_collection/ta_checkpoint_manager.py | 147 + .../data_collection/ta_config.py | 155 + .../data_collection/ta_consts.py | 54 + .../data_collection/ta_data_client.py | 84 + .../data_collection/ta_data_collector.py | 144 + .../data_collection/ta_data_loader.py | 168 + .../data_collection/ta_helper.py | 154 + .../data_collection/ta_mod_input.py | 272 + .../splunk_ta_import_declare.py | 17 + .../ta_cloud_connect_client.py | 41 + .../cloudconnectlib/splunktalib/__init__.py | 2 + .../splunktalib/common/__init__.py | 0 .../splunktalib/common/consts.py | 1 + .../cloudconnectlib/splunktalib/common/log.py | 137 + .../splunktalib/common/pattern.py | 37 + .../splunktalib/common/util.py | 108 + .../splunktalib/common/xml_dom_parser.py | 47 + .../splunktalib/concurrent/__init__.py | 0 .../concurrent/concurrent_executor.py | 88 + .../splunktalib/concurrent/process_pool.py | 63 + .../splunktalib/concurrent/thread_pool.py | 344 + .../splunktalib/conf_manager/__init__.py | 0 .../conf_manager/conf_endpoints.py | 142 + .../splunktalib/conf_manager/conf_manager.py | 225 + .../conf_manager/data_input_endpoints.py | 152 + .../conf_manager/knowledge_objects.py | 36 + .../conf_manager/property_endpoints.py | 78 + .../splunktalib/conf_manager/request.py | 44 + .../conf_manager/ta_conf_manager.py | 211 + .../splunktalib/credentials.py | 337 + .../splunktalib/event_writer.py | 84 + .../splunktalib/file_monitor.py | 56 + .../cloudconnectlib/splunktalib/kv_client.py | 202 + .../cloudconnectlib/splunktalib/modinput.py | 147 + .../splunktalib/orphan_process_monitor.py | 65 + .../cloudconnectlib/splunktalib/rest.py | 122 + .../splunktalib/schedule/__init__.py | 0 .../splunktalib/schedule/job.py | 90 + .../splunktalib/schedule/scheduler.py | 143 + .../cloudconnectlib/splunktalib/setting.conf | 5 + .../splunktalib/splunk_cluster.py | 53 + .../splunktalib/splunk_platform.py | 104 + .../splunktalib/state_store.py | 264 + .../cloudconnectlib/splunktalib/timer.py | 60 + .../splunktalib/timer_queue.py | 138 + package/bin/da_ess_contentupdate/decorator.py | 414 + .../functools32/__init__.py | 1 + .../functools32/_dummy_thread32.py | 158 + .../functools32/functools32.py | 423 + .../functools32/reprlib32.py | 157 + .../da_ess_contentupdate/httplib2/__init__.py | 1696 ++++ .../da_ess_contentupdate/httplib2/cacerts.txt | 2183 +++++ .../da_ess_contentupdate/httplib2/iri2uri.py | 110 + .../da_ess_contentupdate/httplib2/socks.py | 438 + .../da_ess_contentupdate/jinja2/__init__.py | 70 + .../da_ess_contentupdate/jinja2/_compat.py | 111 + .../jinja2/_stringdefs.py | 132 + .../da_ess_contentupdate/jinja2/bccache.py | 362 + .../da_ess_contentupdate/jinja2/compiler.py | 1686 ++++ .../da_ess_contentupdate/jinja2/constants.py | 32 + .../bin/da_ess_contentupdate/jinja2/debug.py | 350 + .../da_ess_contentupdate/jinja2/defaults.py | 43 + .../jinja2/environment.py | 1213 +++ .../da_ess_contentupdate/jinja2/exceptions.py | 146 + .../bin/da_ess_contentupdate/jinja2/ext.py | 637 ++ .../da_ess_contentupdate/jinja2/filters.py | 996 +++ .../bin/da_ess_contentupdate/jinja2/lexer.py | 734 ++ .../da_ess_contentupdate/jinja2/loaders.py | 481 ++ .../bin/da_ess_contentupdate/jinja2/meta.py | 103 + .../bin/da_ess_contentupdate/jinja2/nodes.py | 919 +++ .../da_ess_contentupdate/jinja2/optimizer.py | 68 + .../bin/da_ess_contentupdate/jinja2/parser.py | 899 ++ .../da_ess_contentupdate/jinja2/runtime.py | 667 ++ .../da_ess_contentupdate/jinja2/sandbox.py | 367 + .../bin/da_ess_contentupdate/jinja2/tests.py | 173 + .../bin/da_ess_contentupdate/jinja2/utils.py | 531 ++ .../da_ess_contentupdate/jinja2/visitor.py | 87 + .../bin/da_ess_contentupdate/jsl/__init__.py | 22 + .../jsl/_compat/__init__.py | 80 + .../jsl/_compat/ordereddict.py | 127 + .../jsl/_compat/prepareable.py | 42 + .../bin/da_ess_contentupdate/jsl/document.py | 419 + .../da_ess_contentupdate/jsl/exceptions.py | 151 + .../jsl/fields/__init__.py | 5 + .../da_ess_contentupdate/jsl/fields/base.py | 263 + .../jsl/fields/compound.py | 578 ++ .../jsl/fields/primitive.py | 161 + .../da_ess_contentupdate/jsl/fields/util.py | 24 + .../bin/da_ess_contentupdate/jsl/registry.py | 31 + .../jsl/resolutionscope.py | 71 + package/bin/da_ess_contentupdate/jsl/roles.py | 230 + .../jsonpath_rw/__init__.py | 4 + .../jsonpath_rw/bin/__init__.py | 0 .../jsonpath_rw/bin/jsonpath.py | 71 + .../jsonpath_rw/jsonpath.py | 510 ++ .../da_ess_contentupdate/jsonpath_rw/lexer.py | 171 + .../jsonpath_rw/parser.py | 187 + .../jsonschema/__init__.py | 24 + .../jsonschema/__main__.py | 2 + .../jsonschema/_format.py | 240 + .../jsonschema/_reflect.py | 155 + .../da_ess_contentupdate/jsonschema/_utils.py | 213 + .../jsonschema/_validators.py | 366 + .../jsonschema/_version.py | 5 + .../da_ess_contentupdate/jsonschema/cli.py | 72 + .../da_ess_contentupdate/jsonschema/compat.py | 60 + .../jsonschema/exceptions.py | 276 + .../jsonschema/schemas/draft3.json | 201 + .../jsonschema/schemas/draft4.json | 224 + .../jsonschema/tests/__init__.py | 0 .../jsonschema/tests/compat.py | 15 + .../jsonschema/tests/test_cli.py | 110 + .../jsonschema/tests/test_exceptions.py | 386 + .../jsonschema/tests/test_format.py | 63 + .../tests/test_jsonschema_test_suite.py | 290 + .../jsonschema/tests/test_validators.py | 908 ++ .../jsonschema/validators.py | 478 ++ .../da_ess_contentupdate/logging_helper.py | 5 + .../bin/da_ess_contentupdate/mako/__init__.py | 8 + .../da_ess_contentupdate/mako/_ast_util.py | 851 ++ package/bin/da_ess_contentupdate/mako/ast.py | 191 + .../bin/da_ess_contentupdate/mako/cache.py | 240 + package/bin/da_ess_contentupdate/mako/cmd.py | 67 + .../bin/da_ess_contentupdate/mako/codegen.py | 1255 +++ .../bin/da_ess_contentupdate/mako/compat.py | 201 + .../da_ess_contentupdate/mako/exceptions.py | 394 + .../da_ess_contentupdate/mako/ext/__init__.py | 0 .../mako/ext/autohandler.py | 68 + .../mako/ext/babelplugin.py | 50 + .../mako/ext/beaker_cache.py | 76 + .../da_ess_contentupdate/mako/ext/extract.py | 108 + .../mako/ext/linguaplugin.py | 43 + .../mako/ext/preprocessors.py | 20 + .../mako/ext/pygmentplugin.py | 127 + .../mako/ext/turbogears.py | 58 + .../bin/da_ess_contentupdate/mako/filters.py | 209 + .../bin/da_ess_contentupdate/mako/lexer.py | 449 + .../bin/da_ess_contentupdate/mako/lookup.py | 367 + .../da_ess_contentupdate/mako/parsetree.py | 616 ++ .../bin/da_ess_contentupdate/mako/pygen.py | 303 + .../bin/da_ess_contentupdate/mako/pyparser.py | 233 + .../bin/da_ess_contentupdate/mako/runtime.py | 909 +++ .../bin/da_ess_contentupdate/mako/template.py | 726 ++ package/bin/da_ess_contentupdate/mako/util.py | 382 + .../markupsafe/__init__.py | 298 + .../markupsafe/_compat.py | 26 + .../markupsafe/_constants.py | 267 + .../markupsafe/_native.py | 46 + .../markupsafe/_speedups.c | 239 + .../da_ess_contentupdate/markupsafe/tests.py | 179 + .../modalert_escu_contextualize_helper.py | 160 + .../modalert_escu_investigate_helper.py | 159 + .../modinput_wrapper/__init__.py | 0 .../modinput_wrapper/base_modinput.py | 547 ++ .../da_ess_contentupdate/munch/__init__.py | 411 + .../munch/python3_compat.py | 22 + .../bin/da_ess_contentupdate/ply/__init__.py | 5 + package/bin/da_ess_contentupdate/ply/cpp.py | 918 +++ .../bin/da_ess_contentupdate/ply/ctokens.py | 133 + package/bin/da_ess_contentupdate/ply/lex.py | 1100 +++ package/bin/da_ess_contentupdate/ply/yacc.py | 3494 ++++++++ package/bin/da_ess_contentupdate/ply/ygen.py | 74 + .../da_ess_contentupdate/requests/__init__.py | 86 + .../requests/_internal_utils.py | 42 + .../da_ess_contentupdate/requests/adapters.py | 503 ++ .../bin/da_ess_contentupdate/requests/api.py | 150 + .../bin/da_ess_contentupdate/requests/auth.py | 288 + .../da_ess_contentupdate/requests/cacert.pem | 5689 +++++++++++++ .../da_ess_contentupdate/requests/certs.py | 25 + .../da_ess_contentupdate/requests/compat.py | 68 + .../da_ess_contentupdate/requests/cookies.py | 542 ++ .../requests/exceptions.py | 116 + .../da_ess_contentupdate/requests/hooks.py | 34 + .../da_ess_contentupdate/requests/models.py | 906 ++ .../requests/packages/__init__.py | 42 + .../requests/packages/chardet/__init__.py | 32 + .../requests/packages/chardet/big5freq.py | 925 +++ .../requests/packages/chardet/big5prober.py | 42 + .../requests/packages/chardet/chardetect.py | 80 + .../packages/chardet/chardistribution.py | 231 + .../packages/chardet/charsetgroupprober.py | 106 + .../packages/chardet/charsetprober.py | 62 + .../packages/chardet/codingstatemachine.py | 61 + .../requests/packages/chardet/compat.py | 34 + .../requests/packages/chardet/constants.py | 39 + .../requests/packages/chardet/cp949prober.py | 44 + .../requests/packages/chardet/escprober.py | 86 + .../requests/packages/chardet/escsm.py | 242 + .../requests/packages/chardet/eucjpprober.py | 90 + .../requests/packages/chardet/euckrfreq.py | 596 ++ .../requests/packages/chardet/euckrprober.py | 42 + .../requests/packages/chardet/euctwfreq.py | 428 + .../requests/packages/chardet/euctwprober.py | 41 + .../requests/packages/chardet/gb2312freq.py | 472 ++ .../requests/packages/chardet/gb2312prober.py | 41 + .../requests/packages/chardet/hebrewprober.py | 283 + .../requests/packages/chardet/jisfreq.py | 569 ++ .../requests/packages/chardet/jpcntx.py | 227 + .../packages/chardet/langbulgarianmodel.py | 229 + .../packages/chardet/langcyrillicmodel.py | 329 + .../packages/chardet/langgreekmodel.py | 225 + .../packages/chardet/langhebrewmodel.py | 201 + .../packages/chardet/langhungarianmodel.py | 225 + .../packages/chardet/langthaimodel.py | 200 + .../requests/packages/chardet/latin1prober.py | 139 + .../packages/chardet/mbcharsetprober.py | 86 + .../packages/chardet/mbcsgroupprober.py | 54 + .../requests/packages/chardet/mbcssm.py | 572 ++ .../packages/chardet/sbcharsetprober.py | 120 + .../packages/chardet/sbcsgroupprober.py | 69 + .../requests/packages/chardet/sjisprober.py | 91 + .../packages/chardet/universaldetector.py | 170 + .../requests/packages/chardet/utf8prober.py | 76 + .../requests/packages/idna/__init__.py | 1 + .../requests/packages/idna/codec.py | 118 + .../requests/packages/idna/compat.py | 12 + .../requests/packages/idna/core.py | 387 + .../requests/packages/idna/idnadata.py | 1584 ++++ .../requests/packages/idna/intranges.py | 46 + .../requests/packages/idna/uts46data.py | 7267 +++++++++++++++++ .../requests/packages/urllib3/__init__.py | 97 + .../requests/packages/urllib3/_collections.py | 324 + .../requests/packages/urllib3/connection.py | 366 + .../packages/urllib3/connectionpool.py | 871 ++ .../packages/urllib3/contrib/__init__.py | 0 .../packages/urllib3/contrib/appengine.py | 296 + .../packages/urllib3/contrib/ntlmpool.py | 112 + .../packages/urllib3/contrib/pyopenssl.py | 431 + .../packages/urllib3/contrib/socks.py | 178 + .../requests/packages/urllib3/exceptions.py | 241 + .../requests/packages/urllib3/fields.py | 178 + .../requests/packages/urllib3/filepost.py | 94 + .../packages/urllib3/packages/__init__.py | 5 + .../urllib3/packages/backports/__init__.py | 0 .../urllib3/packages/backports/makefile.py | 53 + .../packages/urllib3/packages/ordered_dict.py | 259 + .../requests/packages/urllib3/packages/six.py | 868 ++ .../packages/ssl_match_hostname/__init__.py | 19 + .../ssl_match_hostname/_implementation.py | 157 + .../requests/packages/urllib3/poolmanager.py | 363 + .../requests/packages/urllib3/request.py | 148 + .../requests/packages/urllib3/response.py | 618 ++ .../packages/urllib3/util/__init__.py | 46 + .../packages/urllib3/util/connection.py | 145 + .../requests/packages/urllib3/util/request.py | 72 + .../packages/urllib3/util/response.py | 81 + .../requests/packages/urllib3/util/retry.py | 376 + .../requests/packages/urllib3/util/ssl_.py | 336 + .../requests/packages/urllib3/util/timeout.py | 245 + .../requests/packages/urllib3/util/url.py | 226 + .../da_ess_contentupdate/requests/sessions.py | 725 ++ .../requests/status_codes.py | 91 + .../requests/structures.py | 105 + .../da_ess_contentupdate/requests/utils.py | 827 ++ package/bin/da_ess_contentupdate/six.py | 868 ++ package/bin/da_ess_contentupdate/socks.py | 802 ++ .../bin/da_ess_contentupdate/sockshandler.py | 79 + .../da_ess_contentupdate/solnlib/__init__.py | 63 + .../bin/da_ess_contentupdate/solnlib/acl.py | 167 + .../solnlib/api_documenter.py | 680 ++ .../solnlib/compression.py | 121 + .../solnlib/conf_manager.py | 427 + .../solnlib/credentials.py | 328 + .../solnlib/file_monitor.py | 133 + .../solnlib/hec_config.py | 196 + .../da_ess_contentupdate/solnlib/ip_math.py | 305 + .../bin/da_ess_contentupdate/solnlib/log.py | 227 + .../da_ess_contentupdate/solnlib/metadata.py | 99 + .../solnlib/modular_input/__init__.py | 41 + .../solnlib/modular_input/checkpointer.py | 289 + .../solnlib/modular_input/event.py | 225 + .../solnlib/modular_input/event_writer.py | 364 + .../solnlib/modular_input/modular_input.py | 464 ++ .../da_ess_contentupdate/solnlib/net_utils.py | 133 + .../solnlib/orphan_process_monitor.py | 122 + .../solnlib/packages/__init__.py | 53 + .../solnlib/packages/requests/LICENSE | 13 + .../solnlib/packages/requests/__init__.py | 83 + .../solnlib/packages/requests/adapters.py | 453 + .../solnlib/packages/requests/api.py | 145 + .../solnlib/packages/requests/auth.py | 223 + .../solnlib/packages/requests/certs.py | 25 + .../solnlib/packages/requests/compat.py | 62 + .../solnlib/packages/requests/cookies.py | 487 ++ .../solnlib/packages/requests/exceptions.py | 114 + .../solnlib/packages/requests/hooks.py | 34 + .../solnlib/packages/requests/models.py | 851 ++ .../packages/requests/packages/__init__.py | 36 + .../requests/packages/chardet/__init__.py | 32 + .../requests/packages/chardet/big5freq.py | 925 +++ .../requests/packages/chardet/big5prober.py | 42 + .../requests/packages/chardet/chardetect.py | 80 + .../packages/chardet/chardistribution.py | 231 + .../packages/chardet/charsetgroupprober.py | 106 + .../packages/chardet/charsetprober.py | 62 + .../packages/chardet/codingstatemachine.py | 61 + .../requests/packages/chardet/compat.py | 34 + .../requests/packages/chardet/constants.py | 39 + .../requests/packages/chardet/cp949prober.py | 44 + .../requests/packages/chardet/escprober.py | 86 + .../requests/packages/chardet/escsm.py | 242 + .../requests/packages/chardet/eucjpprober.py | 90 + .../requests/packages/chardet/euckrfreq.py | 596 ++ .../requests/packages/chardet/euckrprober.py | 42 + .../requests/packages/chardet/euctwfreq.py | 428 + .../requests/packages/chardet/euctwprober.py | 41 + .../requests/packages/chardet/gb2312freq.py | 472 ++ .../requests/packages/chardet/gb2312prober.py | 41 + .../requests/packages/chardet/hebrewprober.py | 283 + .../requests/packages/chardet/jisfreq.py | 569 ++ .../requests/packages/chardet/jpcntx.py | 227 + .../packages/chardet/langbulgarianmodel.py | 229 + .../packages/chardet/langcyrillicmodel.py | 329 + .../packages/chardet/langgreekmodel.py | 225 + .../packages/chardet/langhebrewmodel.py | 201 + .../packages/chardet/langhungarianmodel.py | 225 + .../packages/chardet/langthaimodel.py | 200 + .../requests/packages/chardet/latin1prober.py | 139 + .../packages/chardet/mbcharsetprober.py | 86 + .../packages/chardet/mbcsgroupprober.py | 54 + .../requests/packages/chardet/mbcssm.py | 572 ++ .../packages/chardet/sbcharsetprober.py | 120 + .../packages/chardet/sbcsgroupprober.py | 69 + .../requests/packages/chardet/sjisprober.py | 91 + .../packages/chardet/universaldetector.py | 170 + .../requests/packages/chardet/utf8prober.py | 76 + .../requests/packages/urllib3/__init__.py | 93 + .../requests/packages/urllib3/_collections.py | 324 + .../requests/packages/urllib3/connection.py | 288 + .../packages/urllib3/connectionpool.py | 818 ++ .../packages/urllib3/contrib/__init__.py | 0 .../packages/urllib3/contrib/appengine.py | 223 + .../packages/urllib3/contrib/ntlmpool.py | 115 + .../packages/urllib3/contrib/pyopenssl.py | 310 + .../requests/packages/urllib3/exceptions.py | 201 + .../requests/packages/urllib3/fields.py | 178 + .../requests/packages/urllib3/filepost.py | 94 + .../packages/urllib3/packages/__init__.py | 5 + .../packages/urllib3/packages/ordered_dict.py | 259 + .../requests/packages/urllib3/packages/six.py | 385 + .../packages/ssl_match_hostname/__init__.py | 13 + .../ssl_match_hostname/_implementation.py | 105 + .../requests/packages/urllib3/poolmanager.py | 281 + .../requests/packages/urllib3/request.py | 151 + .../requests/packages/urllib3/response.py | 514 ++ .../packages/urllib3/util/__init__.py | 44 + .../packages/urllib3/util/connection.py | 101 + .../requests/packages/urllib3/util/request.py | 72 + .../packages/urllib3/util/response.py | 74 + .../requests/packages/urllib3/util/retry.py | 286 + .../requests/packages/urllib3/util/ssl_.py | 317 + .../requests/packages/urllib3/util/timeout.py | 242 + .../requests/packages/urllib3/util/url.py | 217 + .../solnlib/packages/requests/sessions.py | 680 ++ .../solnlib/packages/requests/status_codes.py | 90 + .../solnlib/packages/requests/structures.py | 104 + .../solnlib/packages/requests/utils.py | 721 ++ .../solnlib/packages/schematics/LICENSE | 29 + .../solnlib/packages/schematics/__init__.py | 12 + .../solnlib/packages/schematics/common.py | 25 + .../solnlib/packages/schematics/compat.py | 71 + .../packages/schematics/contrib/__init__.py | 0 .../packages/schematics/contrib/mongo.py | 41 + .../packages/schematics/datastructures.py | 320 + .../solnlib/packages/schematics/exceptions.py | 180 + .../solnlib/packages/schematics/models.py | 421 + .../solnlib/packages/schematics/transforms.py | 547 ++ .../packages/schematics/types/__init__.py | 9 + .../solnlib/packages/schematics/types/base.py | 1099 +++ .../packages/schematics/types/compound.py | 399 + .../solnlib/packages/schematics/types/net.py | 249 + .../packages/schematics/types/serializable.py | 87 + .../packages/schematics/types/union.py | 93 + .../solnlib/packages/schematics/undefined.py | 53 + .../solnlib/packages/schematics/util.py | 86 + .../solnlib/packages/schematics/validate.py | 122 + .../solnlib/packages/simpleyaml/LICENSE | 20 + .../solnlib/packages/simpleyaml/__init__.py | 315 + .../solnlib/packages/simpleyaml/composer.py | 139 + .../packages/simpleyaml/constructor.py | 675 ++ .../solnlib/packages/simpleyaml/cyaml.py | 85 + .../solnlib/packages/simpleyaml/dumper.py | 62 + .../solnlib/packages/simpleyaml/emitter.py | 1140 +++ .../solnlib/packages/simpleyaml/error.py | 75 + .../solnlib/packages/simpleyaml/events.py | 86 + .../solnlib/packages/simpleyaml/loader.py | 40 + .../solnlib/packages/simpleyaml/nodes.py | 49 + .../solnlib/packages/simpleyaml/parser.py | 589 ++ .../solnlib/packages/simpleyaml/reader.py | 190 + .../packages/simpleyaml/representer.py | 484 ++ .../solnlib/packages/simpleyaml/resolver.py | 224 + .../solnlib/packages/simpleyaml/scanner.py | 1457 ++++ .../solnlib/packages/simpleyaml/serializer.py | 111 + .../solnlib/packages/simpleyaml/tokens.py | 104 + .../solnlib/packages/sortedcontainers/LICENSE | 14 + .../packages/sortedcontainers/__init__.py | 52 + .../packages/sortedcontainers/sorteddict.py | 745 ++ .../packages/sortedcontainers/sortedlist.py | 2483 ++++++ .../packages/sortedcontainers/sortedset.py | 327 + .../solnlib/packages/splunklib/__init__.py | 19 + .../solnlib/packages/splunklib/binding.py | 1373 ++++ .../solnlib/packages/splunklib/client.py | 3719 +++++++++ .../solnlib/packages/splunklib/data.py | 258 + .../splunklib/modularinput/__init__.py | 12 + .../splunklib/modularinput/argument.py | 102 + .../packages/splunklib/modularinput/event.py | 107 + .../splunklib/modularinput/event_writer.py | 84 + .../modularinput/input_definition.py | 59 + .../packages/splunklib/modularinput/scheme.py | 84 + .../packages/splunklib/modularinput/script.py | 176 + .../packages/splunklib/modularinput/utils.py | 72 + .../modularinput/validation_definition.py | 83 + .../solnlib/packages/splunklib/ordereddict.py | 128 + .../solnlib/packages/splunklib/results.py | 288 + .../splunklib/searchcommands/__init__.py | 155 + .../splunklib/searchcommands/decorators.py | 447 + .../splunklib/searchcommands/environment.py | 122 + .../searchcommands/eventing_command.py | 142 + .../searchcommands/external_search_command.py | 225 + .../searchcommands/generating_command.py | 320 + .../splunklib/searchcommands/internals.py | 786 ++ .../searchcommands/reporting_command.py | 280 + .../searchcommands/search_command.py | 1103 +++ .../searchcommands/streaming_command.py | 188 + .../splunklib/searchcommands/validators.py | 384 + .../da_ess_contentupdate/solnlib/pattern.py | 42 + .../solnlib/server_info.py | 230 + .../solnlib/splunk_rest_client.py | 202 + .../da_ess_contentupdate/solnlib/splunkenv.py | 276 + .../solnlib/time_parser.py | 129 + .../solnlib/timer_queue.py | 326 + .../solnlib/user_access.py | 868 ++ .../bin/da_ess_contentupdate/solnlib/utils.py | 197 + .../sortedcontainers/__init__.py | 52 + .../sortedcontainers/sorteddict.py | 745 ++ .../sortedcontainers/sortedlist.py | 2483 ++++++ .../sortedcontainers/sortedset.py | 327 + .../splunk_aoblib/__init__.py | 0 .../splunk_aoblib/rest_helper.py | 43 + .../splunk_aoblib/rest_migration.py | 215 + .../splunk_aoblib/setup_util.py | 363 + .../splunk_aoblib/utility.py | 16 + .../splunklib/__init__.py | 19 + .../da_ess_contentupdate/splunklib/binding.py | 1373 ++++ .../da_ess_contentupdate/splunklib/client.py | 3719 +++++++++ .../da_ess_contentupdate/splunklib/data.py | 258 + .../splunklib/modularinput/__init__.py | 12 + .../splunklib/modularinput/argument.py | 102 + .../splunklib/modularinput/event.py | 107 + .../splunklib/modularinput/event_writer.py | 84 + .../modularinput/input_definition.py | 59 + .../splunklib/modularinput/scheme.py | 84 + .../splunklib/modularinput/script.py | 176 + .../splunklib/modularinput/utils.py | 72 + .../modularinput/validation_definition.py | 83 + .../splunklib/ordereddict.py | 128 + .../da_ess_contentupdate/splunklib/results.py | 288 + .../splunklib/searchcommands/__init__.py | 155 + .../splunklib/searchcommands/decorators.py | 447 + .../splunklib/searchcommands/environment.py | 122 + .../searchcommands/eventing_command.py | 142 + .../searchcommands/external_search_command.py | 225 + .../searchcommands/generating_command.py | 320 + .../splunklib/searchcommands/internals.py | 786 ++ .../searchcommands/reporting_command.py | 280 + .../searchcommands/search_command.py | 1101 +++ .../searchcommands/streaming_command.py | 188 + .../splunklib/searchcommands/validators.py | 384 + .../splunktaucclib/__init__.py | 2 + .../splunktaucclib/global_config/__init__.py | 72 + .../global_config/configuration.py | 404 + .../splunktaucclib/global_config/schema.py | 77 + .../splunktaucclib/rest_handler/__init__.py | 3 + .../rest_handler/admin_external.py | 169 + .../rest_handler/credentials.py | 446 + .../splunktaucclib/rest_handler/eai.py | 59 + .../rest_handler/endpoint/__init__.py | 196 + .../rest_handler/endpoint/converter.py | 301 + .../rest_handler/endpoint/field.py | 63 + .../rest_handler/endpoint/validator.py | 470 ++ .../splunktaucclib/rest_handler/entity.py | 19 + .../splunktaucclib/rest_handler/error.py | 45 + .../splunktaucclib/rest_handler/handler.py | 436 + .../splunktaucclib/rest_handler/schema.py | 41 + .../splunktaucclib/rest_handler/util.py | 41 + package/bin/da_ess_contentupdate_declare.py | 18 + {src => package}/bin/dnstwist.py | 2 +- package/bin/escu_contextualize.py | 43 + package/bin/escu_investigate.py | 43 + package/bin/runstory.py | 78 + package/bin/splunklib/__init__.py | 19 + package/bin/splunklib/binding.py | 1373 ++++ package/bin/splunklib/client.py | 3718 +++++++++ package/bin/splunklib/data.py | 258 + .../bin/splunklib/modularinput/__init__.py | 12 + .../bin/splunklib/modularinput/argument.py | 102 + package/bin/splunklib/modularinput/event.py | 107 + .../splunklib/modularinput/event_writer.py | 84 + .../modularinput/input_definition.py | 59 + package/bin/splunklib/modularinput/scheme.py | 84 + package/bin/splunklib/modularinput/script.py | 176 + package/bin/splunklib/modularinput/utils.py | 72 + .../modularinput/validation_definition.py | 83 + package/bin/splunklib/ordereddict.py | 128 + package/bin/splunklib/results.py | 288 + .../bin/splunklib/searchcommands/__init__.py | 155 + .../splunklib/searchcommands/decorators.py | 447 + .../splunklib/searchcommands/environment.py | 122 + .../searchcommands/eventing_command.py | 142 + .../searchcommands/external_search_command.py | 227 + .../searchcommands/generating_command.py | 320 + .../bin/splunklib/searchcommands/internals.py | 786 ++ .../searchcommands/reporting_command.py | 280 + .../searchcommands/search_command.py | 1101 +++ .../searchcommands/streaming_command.py | 188 + .../splunklib/searchcommands/validators.py | 384 + package/default/.gitignore | 1 + {src => package}/default/alert_actions.conf | 0 .../default/analytic_stories.conf | 18 +- package/default/analyticstories.conf | 1 + package/default/app.conf | 31 + package/default/collections.conf | 13 + {src => package}/default/commands.conf | 0 {src => package}/default/content-version.conf | 0 .../data/ui/alerts/escu_contextualize.html | 2 + .../data/ui/alerts/escu_investigate.html | 2 + .../default/data/ui/html/escu_nextsteps.html | 324 + package/default/data/ui/nav/default.xml | 10 + .../data/ui/views/analytic_story_details.xml | 21 + .../default/data/ui/views/escu_summary.xml | 496 ++ package/default/data/ui/views/escu_usage.xml | 152 + .../ui/views/explore_analytic_stories.xml | 81 + package/default/data/ui/views/feedback.xml | 88 + package/default/distsearch.conf | 5 + {src => package}/default/eventtypes.conf | 0 {src => package}/default/macros.conf | 0 package/default/restmap.conf | 6 + {src => package}/default/savedsearches.conf | 128 +- package/default/searchbnf.conf | 25 + {src => package}/default/tags.conf | 0 {src => package}/default/transforms.conf | 0 package/default/ui-tour.conf | 24 + {src => package}/default/usage_searches.conf | 0 .../default/use_case_library.conf | 102 +- .../api_call_by_user_baseline.csv.default | 0 ...e_blocked_outbound_connections.csv.default | 0 .../lookups/brand_monitoring.csv.default | 0 {src => package}/lookups/csc_lookup.csv | 0 {src => package}/lookups/domains.csv | 0 .../lookups/dynamic_dns_providers_default.csv | 0 .../dynamic_dns_providers_local.csv.default | 0 .../lookups/escu_search_id.csv.default | 0 {src => package}/lookups/legit_domains.csv | 0 ..._seen_S3_access_from_remote_ip.csv.default | 0 ...seen_ec2_modifications_by_user.csv.default | 0 .../lookups/prohibited_apps_launching_cmd.csv | 0 .../lookups/prohibited_processes.csv | 0 .../lookups/ransomware_extensions.csv.default | 0 .../lookups/ransomware_notes.csv.default | 0 .../rare_process_whitelist_default.csv | 0 .../rare_process_whitelist_local.csv.default | 0 .../lookups/s3_deletion_baseline.csv.default | 0 .../lookups/security_services.csv | 0 .../suspicious_email_attachments.csv.default | 0 .../lookups/suspicious_files.csv.default | 0 .../lookups/system32_executables.csv | 0 .../lookups/uncommon_processes_default.csv | 0 .../uncommon_processes_local.csv.default | 0 package/static/appIcon.png | Bin 0 -> 3658 bytes package/static/appIconAlt.png | Bin 0 -> 2656 bytes package/static/appIconAlt_2x.png | Bin 0 -> 7442 bytes package/static/appIcon_2x.png | Bin 0 -> 3657 bytes 627 files changed, 163765 insertions(+), 132 deletions(-) create mode 100644 package/README.md create mode 100644 package/README/alert_actions.conf.spec create mode 100644 package/README/analytic_story.conf.spec create mode 100644 package/README/essoc_story_detail.txt create mode 100644 package/README/essoc_summary.txt create mode 100644 package/README/essoc_usage_dashboard.txt create mode 100644 package/README/savedsearches.conf.example create mode 100644 package/appserver/static/alert_escu_contextualize.png create mode 100644 package/appserver/static/alert_escu_investigate.png create mode 100644 package/appserver/static/alerticon.png create mode 100644 package/appserver/static/analytic_story_details.css create mode 100644 package/appserver/static/analytic_story_details.js create mode 100644 package/appserver/static/escu_summary.css create mode 100644 package/appserver/static/escu_summary.js create mode 100644 package/appserver/static/feedback.js create mode 100644 package/appserver/static/img/escu/Slide1.PNG create mode 100644 package/appserver/static/img/escu/Slide2.PNG create mode 100644 package/appserver/static/img/escu/Slide3.PNG create mode 100644 package/appserver/static/img/escu/Slide4.PNG create mode 100644 package/appserver/static/img/escu/Slide5.PNG create mode 100644 package/appserver/static/img/escu/Slide6.PNG create mode 100644 package/appserver/static/img/escu/Slide7.PNG create mode 100644 package/appserver/static/img/escu/Slide8.PNG create mode 100755 package/bin/da_ess_contentupdate/alert_actions_base.py create mode 100755 package/bin/da_ess_contentupdate/cim_actions.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/client.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/common/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/common/lib_util.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/common/log.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/common/util.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/configuration/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/configuration/loader.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/configuration/schema_1_0_0.json create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/cacerts/ca_certs_locater.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/defaults.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/engine.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/ext.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/http.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/models.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/pipemgr.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/core/template.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/cloud_connect_mod_input.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/log.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/rwlock.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/schema_meta.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/config.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_checkpoint_manager.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_config.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_consts.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_client.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_collector.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_loader.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_helper.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_mod_input.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/splunk_ta_import_declare.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/ta_cloud_connect_client.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/consts.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/log.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/pattern.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/util.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/xml_dom_parser.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/concurrent_executor.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/process_pool.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/thread_pool.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/conf_endpoints.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/conf_manager.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/data_input_endpoints.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/knowledge_objects.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/property_endpoints.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/request.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/ta_conf_manager.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/credentials.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/event_writer.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/file_monitor.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/kv_client.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/modinput.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/orphan_process_monitor.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/rest.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/__init__.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/job.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/scheduler.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/setting.conf create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/splunk_cluster.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/splunk_platform.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/state_store.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/timer.py create mode 100755 package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/timer_queue.py create mode 100755 package/bin/da_ess_contentupdate/decorator.py create mode 100755 package/bin/da_ess_contentupdate/functools32/__init__.py create mode 100755 package/bin/da_ess_contentupdate/functools32/_dummy_thread32.py create mode 100755 package/bin/da_ess_contentupdate/functools32/functools32.py create mode 100755 package/bin/da_ess_contentupdate/functools32/reprlib32.py create mode 100755 package/bin/da_ess_contentupdate/httplib2/__init__.py create mode 100755 package/bin/da_ess_contentupdate/httplib2/cacerts.txt create mode 100755 package/bin/da_ess_contentupdate/httplib2/iri2uri.py create mode 100755 package/bin/da_ess_contentupdate/httplib2/socks.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/__init__.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/_compat.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/_stringdefs.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/bccache.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/compiler.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/constants.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/debug.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/defaults.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/environment.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/ext.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/filters.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/lexer.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/loaders.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/meta.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/nodes.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/optimizer.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/parser.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/runtime.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/sandbox.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/tests.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/utils.py create mode 100755 package/bin/da_ess_contentupdate/jinja2/visitor.py create mode 100755 package/bin/da_ess_contentupdate/jsl/__init__.py create mode 100755 package/bin/da_ess_contentupdate/jsl/_compat/__init__.py create mode 100755 package/bin/da_ess_contentupdate/jsl/_compat/ordereddict.py create mode 100755 package/bin/da_ess_contentupdate/jsl/_compat/prepareable.py create mode 100755 package/bin/da_ess_contentupdate/jsl/document.py create mode 100755 package/bin/da_ess_contentupdate/jsl/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/jsl/fields/__init__.py create mode 100755 package/bin/da_ess_contentupdate/jsl/fields/base.py create mode 100755 package/bin/da_ess_contentupdate/jsl/fields/compound.py create mode 100755 package/bin/da_ess_contentupdate/jsl/fields/primitive.py create mode 100755 package/bin/da_ess_contentupdate/jsl/fields/util.py create mode 100755 package/bin/da_ess_contentupdate/jsl/registry.py create mode 100755 package/bin/da_ess_contentupdate/jsl/resolutionscope.py create mode 100755 package/bin/da_ess_contentupdate/jsl/roles.py create mode 100755 package/bin/da_ess_contentupdate/jsonpath_rw/__init__.py create mode 100755 package/bin/da_ess_contentupdate/jsonpath_rw/bin/__init__.py create mode 100755 package/bin/da_ess_contentupdate/jsonpath_rw/bin/jsonpath.py create mode 100755 package/bin/da_ess_contentupdate/jsonpath_rw/jsonpath.py create mode 100755 package/bin/da_ess_contentupdate/jsonpath_rw/lexer.py create mode 100755 package/bin/da_ess_contentupdate/jsonpath_rw/parser.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/__init__.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/__main__.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/_format.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/_reflect.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/_utils.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/_validators.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/_version.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/cli.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/compat.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/schemas/draft3.json create mode 100755 package/bin/da_ess_contentupdate/jsonschema/schemas/draft4.json create mode 100755 package/bin/da_ess_contentupdate/jsonschema/tests/__init__.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/tests/compat.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/tests/test_cli.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/tests/test_exceptions.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/tests/test_format.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/tests/test_jsonschema_test_suite.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/tests/test_validators.py create mode 100755 package/bin/da_ess_contentupdate/jsonschema/validators.py create mode 100755 package/bin/da_ess_contentupdate/logging_helper.py create mode 100755 package/bin/da_ess_contentupdate/mako/__init__.py create mode 100755 package/bin/da_ess_contentupdate/mako/_ast_util.py create mode 100755 package/bin/da_ess_contentupdate/mako/ast.py create mode 100755 package/bin/da_ess_contentupdate/mako/cache.py create mode 100755 package/bin/da_ess_contentupdate/mako/cmd.py create mode 100755 package/bin/da_ess_contentupdate/mako/codegen.py create mode 100755 package/bin/da_ess_contentupdate/mako/compat.py create mode 100755 package/bin/da_ess_contentupdate/mako/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/__init__.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/autohandler.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/babelplugin.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/beaker_cache.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/extract.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/linguaplugin.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/preprocessors.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/pygmentplugin.py create mode 100755 package/bin/da_ess_contentupdate/mako/ext/turbogears.py create mode 100755 package/bin/da_ess_contentupdate/mako/filters.py create mode 100755 package/bin/da_ess_contentupdate/mako/lexer.py create mode 100755 package/bin/da_ess_contentupdate/mako/lookup.py create mode 100755 package/bin/da_ess_contentupdate/mako/parsetree.py create mode 100755 package/bin/da_ess_contentupdate/mako/pygen.py create mode 100755 package/bin/da_ess_contentupdate/mako/pyparser.py create mode 100755 package/bin/da_ess_contentupdate/mako/runtime.py create mode 100755 package/bin/da_ess_contentupdate/mako/template.py create mode 100755 package/bin/da_ess_contentupdate/mako/util.py create mode 100755 package/bin/da_ess_contentupdate/markupsafe/__init__.py create mode 100755 package/bin/da_ess_contentupdate/markupsafe/_compat.py create mode 100755 package/bin/da_ess_contentupdate/markupsafe/_constants.py create mode 100755 package/bin/da_ess_contentupdate/markupsafe/_native.py create mode 100755 package/bin/da_ess_contentupdate/markupsafe/_speedups.c create mode 100755 package/bin/da_ess_contentupdate/markupsafe/tests.py create mode 100755 package/bin/da_ess_contentupdate/modalert_escu_contextualize_helper.py create mode 100755 package/bin/da_ess_contentupdate/modalert_escu_investigate_helper.py create mode 100755 package/bin/da_ess_contentupdate/modinput_wrapper/__init__.py create mode 100755 package/bin/da_ess_contentupdate/modinput_wrapper/base_modinput.py create mode 100755 package/bin/da_ess_contentupdate/munch/__init__.py create mode 100755 package/bin/da_ess_contentupdate/munch/python3_compat.py create mode 100755 package/bin/da_ess_contentupdate/ply/__init__.py create mode 100755 package/bin/da_ess_contentupdate/ply/cpp.py create mode 100755 package/bin/da_ess_contentupdate/ply/ctokens.py create mode 100755 package/bin/da_ess_contentupdate/ply/lex.py create mode 100755 package/bin/da_ess_contentupdate/ply/yacc.py create mode 100755 package/bin/da_ess_contentupdate/ply/ygen.py create mode 100755 package/bin/da_ess_contentupdate/requests/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/_internal_utils.py create mode 100755 package/bin/da_ess_contentupdate/requests/adapters.py create mode 100755 package/bin/da_ess_contentupdate/requests/api.py create mode 100755 package/bin/da_ess_contentupdate/requests/auth.py create mode 100755 package/bin/da_ess_contentupdate/requests/cacert.pem create mode 100755 package/bin/da_ess_contentupdate/requests/certs.py create mode 100755 package/bin/da_ess_contentupdate/requests/compat.py create mode 100755 package/bin/da_ess_contentupdate/requests/cookies.py create mode 100755 package/bin/da_ess_contentupdate/requests/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/requests/hooks.py create mode 100755 package/bin/da_ess_contentupdate/requests/models.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/big5freq.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/big5prober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/chardetect.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/chardistribution.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/charsetgroupprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/charsetprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/codingstatemachine.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/compat.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/constants.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/cp949prober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/escprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/escsm.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/eucjpprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/euckrfreq.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/euckrprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/euctwfreq.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/euctwprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/gb2312freq.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/gb2312prober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/hebrewprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/jisfreq.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/jpcntx.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/langbulgarianmodel.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/langcyrillicmodel.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/langgreekmodel.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/langhebrewmodel.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/langhungarianmodel.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/langthaimodel.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/latin1prober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/mbcharsetprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/mbcsgroupprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/mbcssm.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/sbcharsetprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/sbcsgroupprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/sjisprober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/universaldetector.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/chardet/utf8prober.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/idna/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/idna/codec.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/idna/compat.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/idna/core.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/idna/idnadata.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/idna/intranges.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/idna/uts46data.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/_collections.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/connection.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/connectionpool.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/contrib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/contrib/appengine.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/contrib/ntlmpool.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/contrib/pyopenssl.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/contrib/socks.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/fields.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/filepost.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/packages/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/packages/backports/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/packages/backports/makefile.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/packages/ordered_dict.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/packages/six.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/poolmanager.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/request.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/response.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/util/__init__.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/util/connection.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/util/request.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/util/response.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/util/retry.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/util/ssl_.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/util/timeout.py create mode 100755 package/bin/da_ess_contentupdate/requests/packages/urllib3/util/url.py create mode 100755 package/bin/da_ess_contentupdate/requests/sessions.py create mode 100755 package/bin/da_ess_contentupdate/requests/status_codes.py create mode 100755 package/bin/da_ess_contentupdate/requests/structures.py create mode 100755 package/bin/da_ess_contentupdate/requests/utils.py create mode 100755 package/bin/da_ess_contentupdate/six.py create mode 100755 package/bin/da_ess_contentupdate/socks.py create mode 100755 package/bin/da_ess_contentupdate/sockshandler.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/acl.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/api_documenter.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/compression.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/conf_manager.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/credentials.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/file_monitor.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/hec_config.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/ip_math.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/log.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/metadata.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/modular_input/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/modular_input/checkpointer.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/modular_input/event.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/modular_input/event_writer.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/modular_input/modular_input.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/net_utils.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/orphan_process_monitor.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/LICENSE create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/adapters.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/api.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/auth.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/certs.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/compat.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/cookies.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/hooks.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/models.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/big5freq.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/big5prober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/chardetect.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/chardistribution.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/charsetgroupprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/charsetprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/codingstatemachine.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/compat.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/constants.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/cp949prober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/escprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/escsm.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/eucjpprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/euckrfreq.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/euckrprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/euctwfreq.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/euctwprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/gb2312freq.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/gb2312prober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/hebrewprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/jisfreq.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/jpcntx.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/langbulgarianmodel.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/langcyrillicmodel.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/langgreekmodel.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/langhebrewmodel.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/langhungarianmodel.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/langthaimodel.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/latin1prober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/mbcharsetprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/mbcsgroupprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/mbcssm.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/sbcharsetprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/sbcsgroupprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/sjisprober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/universaldetector.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/chardet/utf8prober.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/_collections.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/connection.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/connectionpool.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/contrib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/contrib/appengine.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/contrib/ntlmpool.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/contrib/pyopenssl.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/fields.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/filepost.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/packages/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/packages/ordered_dict.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/packages/six.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/poolmanager.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/request.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/response.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/util/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/util/connection.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/util/request.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/util/response.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/util/retry.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/util/ssl_.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/util/timeout.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/packages/urllib3/util/url.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/sessions.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/status_codes.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/structures.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/requests/utils.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/LICENSE create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/common.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/compat.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/contrib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/contrib/mongo.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/datastructures.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/exceptions.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/models.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/transforms.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/types/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/types/base.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/types/compound.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/types/net.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/types/serializable.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/types/union.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/undefined.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/util.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/schematics/validate.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/LICENSE create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/composer.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/constructor.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/cyaml.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/dumper.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/emitter.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/error.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/events.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/loader.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/nodes.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/parser.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/reader.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/representer.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/resolver.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/scanner.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/serializer.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/simpleyaml/tokens.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/sortedcontainers/LICENSE create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/sortedcontainers/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/sortedcontainers/sorteddict.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/sortedcontainers/sortedlist.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/sortedcontainers/sortedset.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/binding.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/client.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/data.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/argument.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/event.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/event_writer.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/input_definition.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/scheme.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/script.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/utils.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/modularinput/validation_definition.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/ordereddict.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/results.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/__init__.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/decorators.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/environment.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/eventing_command.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/external_search_command.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/generating_command.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/internals.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/reporting_command.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/search_command.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/streaming_command.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/packages/splunklib/searchcommands/validators.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/pattern.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/server_info.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/splunk_rest_client.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/splunkenv.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/time_parser.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/timer_queue.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/user_access.py create mode 100755 package/bin/da_ess_contentupdate/solnlib/utils.py create mode 100755 package/bin/da_ess_contentupdate/sortedcontainers/__init__.py create mode 100755 package/bin/da_ess_contentupdate/sortedcontainers/sorteddict.py create mode 100755 package/bin/da_ess_contentupdate/sortedcontainers/sortedlist.py create mode 100755 package/bin/da_ess_contentupdate/sortedcontainers/sortedset.py create mode 100755 package/bin/da_ess_contentupdate/splunk_aoblib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/splunk_aoblib/rest_helper.py create mode 100755 package/bin/da_ess_contentupdate/splunk_aoblib/rest_migration.py create mode 100755 package/bin/da_ess_contentupdate/splunk_aoblib/setup_util.py create mode 100755 package/bin/da_ess_contentupdate/splunk_aoblib/utility.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/binding.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/client.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/data.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/__init__.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/argument.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/event.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/event_writer.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/input_definition.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/scheme.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/script.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/utils.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/modularinput/validation_definition.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/ordereddict.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/results.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/__init__.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/decorators.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/environment.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/eventing_command.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/external_search_command.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/generating_command.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/internals.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/reporting_command.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/search_command.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/streaming_command.py create mode 100755 package/bin/da_ess_contentupdate/splunklib/searchcommands/validators.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/__init__.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/global_config/__init__.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/global_config/configuration.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/global_config/schema.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/__init__.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/admin_external.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/credentials.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/eai.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/endpoint/__init__.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/endpoint/converter.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/endpoint/field.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/endpoint/validator.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/entity.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/error.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/handler.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/schema.py create mode 100755 package/bin/da_ess_contentupdate/splunktaucclib/rest_handler/util.py create mode 100755 package/bin/da_ess_contentupdate_declare.py rename {src => package}/bin/dnstwist.py (99%) create mode 100755 package/bin/escu_contextualize.py create mode 100755 package/bin/escu_investigate.py create mode 100755 package/bin/runstory.py create mode 100755 package/bin/splunklib/__init__.py create mode 100755 package/bin/splunklib/binding.py create mode 100755 package/bin/splunklib/client.py create mode 100755 package/bin/splunklib/data.py create mode 100755 package/bin/splunklib/modularinput/__init__.py create mode 100755 package/bin/splunklib/modularinput/argument.py create mode 100755 package/bin/splunklib/modularinput/event.py create mode 100755 package/bin/splunklib/modularinput/event_writer.py create mode 100755 package/bin/splunklib/modularinput/input_definition.py create mode 100755 package/bin/splunklib/modularinput/scheme.py create mode 100755 package/bin/splunklib/modularinput/script.py create mode 100755 package/bin/splunklib/modularinput/utils.py create mode 100755 package/bin/splunklib/modularinput/validation_definition.py create mode 100755 package/bin/splunklib/ordereddict.py create mode 100755 package/bin/splunklib/results.py create mode 100755 package/bin/splunklib/searchcommands/__init__.py create mode 100755 package/bin/splunklib/searchcommands/decorators.py create mode 100755 package/bin/splunklib/searchcommands/environment.py create mode 100755 package/bin/splunklib/searchcommands/eventing_command.py create mode 100755 package/bin/splunklib/searchcommands/external_search_command.py create mode 100755 package/bin/splunklib/searchcommands/generating_command.py create mode 100755 package/bin/splunklib/searchcommands/internals.py create mode 100755 package/bin/splunklib/searchcommands/reporting_command.py create mode 100755 package/bin/splunklib/searchcommands/search_command.py create mode 100755 package/bin/splunklib/searchcommands/streaming_command.py create mode 100755 package/bin/splunklib/searchcommands/validators.py create mode 100644 package/default/.gitignore rename {src => package}/default/alert_actions.conf (100%) rename {src => package}/default/analytic_stories.conf (99%) create mode 120000 package/default/analyticstories.conf create mode 100644 package/default/app.conf create mode 100644 package/default/collections.conf rename {src => package}/default/commands.conf (100%) rename {src => package}/default/content-version.conf (100%) create mode 100644 package/default/data/ui/alerts/escu_contextualize.html create mode 100644 package/default/data/ui/alerts/escu_investigate.html create mode 100644 package/default/data/ui/html/escu_nextsteps.html create mode 100644 package/default/data/ui/nav/default.xml create mode 100644 package/default/data/ui/views/analytic_story_details.xml create mode 100644 package/default/data/ui/views/escu_summary.xml create mode 100644 package/default/data/ui/views/escu_usage.xml create mode 100644 package/default/data/ui/views/explore_analytic_stories.xml create mode 100644 package/default/data/ui/views/feedback.xml create mode 100644 package/default/distsearch.conf rename {src => package}/default/eventtypes.conf (100%) rename {src => package}/default/macros.conf (100%) create mode 100644 package/default/restmap.conf rename {src => package}/default/savedsearches.conf (99%) create mode 100644 package/default/searchbnf.conf rename {src => package}/default/tags.conf (100%) rename {src => package}/default/transforms.conf (100%) create mode 100644 package/default/ui-tour.conf rename {src => package}/default/usage_searches.conf (100%) rename {src => package}/default/use_case_library.conf (99%) rename {src => package}/lookups/api_call_by_user_baseline.csv.default (100%) rename {src => package}/lookups/baseline_blocked_outbound_connections.csv.default (100%) rename {src => package}/lookups/brand_monitoring.csv.default (100%) rename {src => package}/lookups/csc_lookup.csv (100%) rename {src => package}/lookups/domains.csv (100%) rename {src => package}/lookups/dynamic_dns_providers_default.csv (100%) rename {src => package}/lookups/dynamic_dns_providers_local.csv.default (100%) rename {src => package}/lookups/escu_search_id.csv.default (100%) rename {src => package}/lookups/legit_domains.csv (100%) rename {src => package}/lookups/previously_seen_S3_access_from_remote_ip.csv.default (100%) rename {src => package}/lookups/previously_seen_ec2_modifications_by_user.csv.default (100%) rename {src => package}/lookups/prohibited_apps_launching_cmd.csv (100%) rename {src => package}/lookups/prohibited_processes.csv (100%) rename {src => package}/lookups/ransomware_extensions.csv.default (100%) rename {src => package}/lookups/ransomware_notes.csv.default (100%) rename {src => package}/lookups/rare_process_whitelist_default.csv (100%) rename {src => package}/lookups/rare_process_whitelist_local.csv.default (100%) rename {src => package}/lookups/s3_deletion_baseline.csv.default (100%) rename {src => package}/lookups/security_services.csv (100%) rename {src => package}/lookups/suspicious_email_attachments.csv.default (100%) rename {src => package}/lookups/suspicious_files.csv.default (100%) rename {src => package}/lookups/system32_executables.csv (100%) rename {src => package}/lookups/uncommon_processes_default.csv (100%) rename {src => package}/lookups/uncommon_processes_local.csv.default (100%) create mode 100644 package/static/appIcon.png create mode 100644 package/static/appIconAlt.png create mode 100644 package/static/appIconAlt_2x.png create mode 100644 package/static/appIcon_2x.png diff --git a/.circleci/config.yml b/.circleci/config.yml index e3001e2fdc..497a3ac9c3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,9 +58,9 @@ jobs: command: | cd security-content source venv/bin/activate - python bin/generate.py --path . --output src --storiesv1 --use_case_lib -v + python bin/generate.py --path . --output package --storiesv1 --use_case_lib -v - persist_to_workspace: - root: security-content/src/default + root: security-content/package/default paths: - use_case_library.conf - analytic_stories.conf @@ -87,16 +87,16 @@ jobs: name: store updated analyticstories.conf command: | cd security-content - cp -v ~/repo/updated/* src/default/ + cp -v ~/repo/updated/* package/default/ git config credential.helper 'cache --timeout=120' git config user.email "research@splunk.com" git config user.name "research bot" git config --global push.default simple - git add src/default/* - git commit --allow-empty -m "updating src files [ci skip]" + git add package/default/* + git commit --allow-empty -m "updating package files [ci skip]" # Push quietly to prevent showing the token in log git push https://${GITHUB_TOKEN}@github.com/splunk/security-content.git ${CIRCLE_BRANCH} - tar -czvf content-pack.tar.gz src/* + tar -czvf content-pack.tar.gz package/* - persist_to_workspace: root: security-content/ paths: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9f90ca03c7..5ed12d9e6d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,6 +4,7 @@ repos: hooks: - id: trailing-whitespace - id: check-executables-have-shebangs + exclude: 'package/bin/da_ess_contentupdate/|package/bin/splunklib/|venv/' - id: check-json - id: check-symlinks - id: check-yaml @@ -11,4 +12,5 @@ repos: args: [--autofix] - id: flake8 args: [--max-line-length=131] + exclude: 'package/bin/da_ess_contentupdate/|package/bin/splunklib/|venv/|package/bin/escu_contextualize.py|package/bin/escu_investigate.py|package/bin/runstory.py' - id: requirements-txt-fixer diff --git a/README.md b/README.md index 84a315e2f3..dd4312b146 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Can be consumed using: * [investigations/](investigations/) - splunk, and phantom investigation content that are used in stories * [responses/](responses/) - automated splunk and phantom responses that are used in stories * [baselines/](baselines/) - phantom and Splunk baseline needed to support detections in stories -* [src/](src/) - splunk content app source files, includes lookups, binaries, and defaul config files +* [package/](package/) - splunk content app source files, includes lookups, binaries, and defaul config files * [bin/](bin/) - where all binaries to produce, and test content lives * [spec/](spec/) - location of all spec files that describe ESCU content * [docs/](docs/) - documentation for all of the spec files diff --git a/package/README.md b/package/README.md new file mode 100644 index 0000000000..7184c1a07f --- /dev/null +++ b/package/README.md @@ -0,0 +1,31 @@ +# Fidelity + +The fidelity of a narrative describes the ratio of signal (valid/positive) to noise (invalid/false positive) anticipated based on field experience. + +* High - This indicates a relatively high signal to noise ratio, and therefore a lower likelihood of false positives, and it should not require additional searches to validate it. + +Example: + +``` + +sourcetype=WinEventLog:* EventCode=4728 +``` + + + +* Low - This indicates a relatively low signal to noise ratio, and therefore a higher likelihood of false positives. Confidence in the output can be increased through other means (i.e. cross-correlation and/or subsequent searches). + +Example: + +``` + +url=* | eval url_length = len(url) | where url_length > 256 +``` +* Moderate - This indicates an unpredictable signal to noise ratio with a bias towards signal, and therefore a higher likelihood of false positives than high. Confidence in the output can be increased through other means (i.e. cross-correlation and/or subsequent searches). + +Example: + +``` +http_user_agent = "*nullptr*" +``` + diff --git a/package/README/alert_actions.conf.spec b/package/README/alert_actions.conf.spec new file mode 100644 index 0000000000..5e1a7184f3 --- /dev/null +++ b/package/README/alert_actions.conf.spec @@ -0,0 +1,85 @@ +# Copyright (C) 2009-2016 Splunk Inc. All Rights Reserved. +# +# This file contains additional options for an alert_actions.conf file. +# +# To learn more about configuration files (including precedence) please see the documentation +# located at http://www.splunk.com/base/Documentation/latest/Admin/Aboutconfigurationfiles +# +[escu] + +enabled = [true|false|0|1] + * Whether or not this use-case is enabled. + * This exists so that we are a true noop for scheduled searches. + * action.usecase=0 action.usecase.enabled=1 + * Required. + * Defaults to false. + +version = [string] + * Version of this search + +asset_at_risk = [string] + * The type of asset that is at risk from the behavior this search is attempting to find + * Defaults to None + +category = [string] + * A description of the category that this use-case falls into + * Defaults to None + +channel = [string] + * The name of the channel the search belongs to + +confidence = [low|medium|high] + * A description of the confidence value + * Valid values are: low, medium, high + * Defaults to None + +creation_time = [datetime] + * The date & time that the search was first created + * The date-time should be formatted an epoch time (in GMT) + +datamodels = [json] + * A JSON list of the data models used by this search + * Defaults to None + +eli5 = [string] + * Text explaining this search to a 5 year old + * Defaults to None + +full_search_name = [string] + * The entire search name + * Defaults to None + +how_to_implement = [string] + * Text discussing what needs to be done to implement this search and any local modifications that can be performed + * Defaults to None + +known_false_positives = [string] + * A description of cases in which this use-case may generate false positive alerts + * Defaults to None + +mappings = [json] + * A JSON list of the kill chain phases this search covers + * Defaults to None + +modification_time = [datetime] + * The date that the search was last modified + * The date-time should be formatted an epoch time (in GMT) + +remediation = [string] + * A high-level description of how the issue described by this use-case can be remediated. + * Defaults to None + +providing_technologies = [json] + * A JSON list of the technology examples that can be used to gather data to power this search + * Defaults to None + +analytic_story = [json] + * A JSON list of the use cases this search applies to + * Defaults to None + +earliest_time_offset = [integer] + * Time in seconds before event time that the search should cover + +latest_time_offset = [integer] + * Time in seconds after event time that the search should cover + diff --git a/package/README/analytic_story.conf.spec b/package/README/analytic_story.conf.spec new file mode 100644 index 0000000000..4aebc9f729 --- /dev/null +++ b/package/README/analytic_story.conf.spec @@ -0,0 +1,100 @@ +# Copyright (C) 2009-2016 Splunk Inc. All Rights Reserved. +# +# This file contains all possible options for a usecases.conf file. Use this file to define a use-case. +# +# To learn more about configuration files (including precedence) please see the documentation +# located at http://www.splunk.com/base/Documentation/latest/Admin/Aboutconfigurationfiles +# +[] +category = [string] + * The category of the analytic story + * Defaults to None + +creation_time = [datetime] + * The date & time that the analytic story was first created + * The date-time should be formatted an epoch time (in GMT) + +data_models = [json] + * A JSON list of the data models used by the analytic story + * Defaults to None + +description = [string] + * A bried description of the analytic story + * Defaults to None + +id = [string] + * A description of the analytic story + * Defaults to None + +mappings = [json] + * A JSON dictionary of the different mappings this story maps to + * See appendix B for the format of this field + * Defaults to None + +modification_time = [datetime] + * The date & time that the analytic story was last modified + * The date-time should be formatted an epoch time (in GMT) + +narrative = [string] + * A longer narrative of the analytic story that describes the detection searches, any support searches, + * and the corresponding contextual and investigative searches + * Defaults to None + +references = [json] + * A JSON list of references for this story + * Defaults to None + +detection_searches = [json] + * A JSON list of the detection searches that the analytic story applies to. + * See appendix A for the format of this field + * Defaults to None + +investigative_searches = [json] + * A JSON list of the investigative searches that the analytic story applies to. + * See appendix A for the format of this field + * Defaults to None + +contextual_searches = [json] + * A JSON list of contextual searches that the analytic story applies to. + * See appendix A for the format of this field + * Defaults to None + +support_searches = [json] + * JSON list of support searches that the analytic story applies to. + * See appendix A for the format of this field + * Defaults to None + +providing_technologies = [json] + * A JSON list of example technologies that can be used to capture the data needed for the analytic story + * Defaults to None + +version = [int] + * An integer indicating which revision of the analytic story this is + * This value should start with one and increase for each release + +###### Appendix A: *_searches Specification ####### +# This can just be a list of saved search names. However, this also supports a hierarchical structure to denote searches that rely on other searches. +# +# A non-hierarchical version would look like this: +# [ "search1", "search2" ] +# +# A hierarchical version would look like this: +#[ +# "search1": [ "search1a", "search1b" ], +# "search2": [ "search2a" ] +#] + + +###### Appendix B: Mappings Specification ####### +# +# This is a dictionary of the different mappings this analytic story maps to. +# The mapping will be the key, and the value will be an array of the labels it applies to +# +# Example: +# { +# "kill_chain_phase": ["Delivery", "Command and Control"], +# "sans cis": ["CIS 9", "CIS 12"], +# "att&ck": ["Command and Control"] +# } +# + diff --git a/package/README/essoc_story_detail.txt b/package/README/essoc_story_detail.txt new file mode 100644 index 0000000000..5333752842 --- /dev/null +++ b/package/README/essoc_story_detail.txt @@ -0,0 +1,15 @@ +The Analytic Story Details dashboard renders all the details of the content related to a specific analytic story which +can be chose via the drop down + +Each analytic story has attributes associated with it and the following: +______________________________________________________________________ + + + Analytic Story: name of the analytic story + Description ; description of the analytic story + Search Name : The name of the searches belonging to the chosen analytic story + Search : The search query which looks for an attack pattern corresponding to the analytic story + Search Description: The description of the search query + Asset Type: The analytic story specifies what asset in the infrastructure may be compromised + Category: The category that the search belongs to (malware, vulnerabilities, best practices, abuse) + Kill Chain Phase: The kill chain phase of the attack that the search is after. \ No newline at end of file diff --git a/package/README/essoc_summary.txt b/package/README/essoc_summary.txt new file mode 100644 index 0000000000..d7dde31ec6 --- /dev/null +++ b/package/README/essoc_summary.txt @@ -0,0 +1,24 @@ +The ES_SOC Summary Dashboard provides you a summarized view of the analytic story contents of the ES-SOC app. +The dashboard has the following panels gives you following details + +1) Analytic story Summary + - Total Analytic Stories : The total number of Analytic stories in the ES-SOC application + - Total Searches: The total number of searches in ES-SOC + - Searches added last week: Number of searches added to ES-SOC in the last week. + + 2) Analytic story Category: This dashboard panel summarizes the categories of the searches that the ES-SOC app contains. The categories of the analytic stories are as follow + -Malware: These searches detect specific malware behavior for a particular phase of the attack kill chain. E.g. a malware’s delivery method via email or a malware’s installation behavior via registry key changes + -Vulnerability: These searches detect behavior or a signature of a vulnerable software in use. These searches are not designed to replace vulnerability management or scanning systems. The purpose of these searches is to discover a vulnerability through side effects or behaviors. + -Abuse: Some actions can be deemed malicious because they are unexpected, violate corporate policy or are significantly different than the actions of other users. E.g. A USB disk that is seen on multiple systems or a user that uploads excessive files to a cloud service or a database query that dumps an entire table + -Best Practices: Searches that correspond to specific guidelines from organizations like SANS or OWASP + + 3) Kill Chain phases: Every analytic story has one or more searches which look for a certain kind of attack pattern/behavior. These searches have an attribute which essentially tells you what Kill chain phase does the search correspond to. + The numbers on the dashboard represents the number of searches correponding to each kill chain phase + + 4) Analytic story table: This table gives the user a comprehensive view of some of the details of the analytic story. Some of the listed attributes are: + - Analytic Story : The name of the analytic story + - Description: The description of the analyttic story + - Search names: The name of the searches in each analytic story + - Datamodels: The name of the datamodel that the search is querying against. + - Technology Examples: This field represent some examples related to the technologies required to populate the datamodels(Nessues, Cisco Firewall,etc) + - Kill chain phase: The name of the kill chain phase that the search belongs to \ No newline at end of file diff --git a/package/README/essoc_usage_dashboard.txt b/package/README/essoc_usage_dashboard.txt new file mode 100644 index 0000000000..fcbc842881 --- /dev/null +++ b/package/README/essoc_usage_dashboard.txt @@ -0,0 +1,51 @@ +###################### +ESSOC Usage Dashboard# +###################### + +The ESSOC Usage dashboard is designed to provide high-level insight into the usage of the ES-SOC app. It is suitable for display when providing feedback to the Splunk team or for identifying how the ES-SOC app is being used. This dashboard has two time selectors that work independently - the top time selector determines the search time range for all the single-value. And the lower time selector, determines the time range for the usage table. + +IMPORTANT: The user loading this dashboard must have permission to search the _audit index + +################## +#Dashboard panels# +################## + +Searches Ran + +The total number of searches in ES-SOC that were executed. This number includes scheduled searches and ad hoc searches run from the search bar using the '| savedsearch ‘ syntax + +Unique Searches + +The unique/distinct searches executed on the deployment. This is equivalent to the distinct count of searches run in the ES-SOC app. + +Most Run + +The total number of searches in ES-SOC that were executed. This number includes scheduled searches and ad hoc searches run from the search bar using the '| savedsearch ‘ syntax. + +Ad hoc Searches + +The total number of searches run from the search bar using the '| savedsearch ‘ syntax. + +Scheduled + +The total number of ESSOC searches run that were scheduled. + +Most Active User + +The user who executed the highest number/count of searches. This calculation includes scheduled searches and ad hoc searches run from the search bar using the '| savedsearch ‘ syntax. + +Search Run Time (seconds) + +Total run time of all searches executed in seconds. This calculation includes scheduled searches and ad hoc searches run from the search bar using the '| savedsearch ‘ syntax. + +Average Run Time (seconds) + +Average run time of all searches executed in seconds. This calculation includes scheduled searches and ad hoc searches run from the search bar using the '| savedsearch ‘ syntax. + +Max Run Time (seconds) + +The run time of the longest running search. This calculation includes scheduled searches and ad hoc searches run from the search bar using the '| savedsearch ‘ syntax. + +Search summary + +This table provides details on each search that was executed in the ESSOC app. \ No newline at end of file diff --git a/package/README/savedsearches.conf.example b/package/README/savedsearches.conf.example new file mode 100644 index 0000000000..feb696f7ff --- /dev/null +++ b/package/README/savedsearches.conf.example @@ -0,0 +1,38 @@ +[SMTP PII file sent] + +# Alert action stuff +action.usecase = 0 +action.usecase.enabled = 1 +action.usecase.category = pii_monitoring +action.usecase.reference = https://en.wikipedia.org/wiki/Extended_SMTP +action.usecase.kill_chain_phases = Weaponization,Delivery +action.usecase.search_score = 5 +action.usecase.confidence = high +action.usecase.known_false_positives = Some Unix SMTP servers will use enhanced SMTP commands that can trigger this event even though no malicious activity is present +action.usecase.remediation = Block this activity at your email server using magic + +# Normal saved search stuff +cron_schedule = */30 * * * * +disabled = False +dispatch.earliest_time = -24h +dispatch.latest_time = +0s +enableSched = True +is_visible = false +search = | `tstats` values(sourcetype) from datamodel=Change_Analysis.All_Changes by All_Changes.Endpoint_Changes.Filesystem_Changes.file_hash | `tstats` append=true values(sourcetype) from datamodel=Email.All_Email by All_Email.file_hash | `tstats` append=true values(sourcetype) from datamodel=Malware.Malware_Attacks by Malware_Attacks.file_hash | `tstats` append=true values(sourcetype) from datamodel=Updates.Updates by Updates.file_hash | rename All_Changes.Endpoint_Changes.Filesystem_Changes.* as *,All_Email.* as *,Malware_Attacks.* as *,Updates.* as * | stats values(sourcetype) as orig_sourcetypes by file_hash | lookup threatintel_by_file_hash file_hash OUTPUT | search threat_collection_key=* | `zipexpand_threat_matches` | `makesv(orig_sourcetypes)` +description = This search does PII monitoring + + +## EXAMPLE EMPTY FIELDS +action.usecase                       = 0 +action.usecase.enabled               = 1 +action.usecase.category              = +action.usecase.reference             = +action.usecase.kill_chain_phases     = +action.usecase.search_score          = +action.usecase.confidence            = +action.usecase.known_false_positives = +action.usecase.remediation = +search                               = +description                          = +dispatch.earliest_time               = -24h@h +dispatch.latest_time                 = 0 \ No newline at end of file diff --git a/package/appserver/static/alert_escu_contextualize.png b/package/appserver/static/alert_escu_contextualize.png new file mode 100644 index 0000000000000000000000000000000000000000..23c161b5c2ee5d1007635a39d73cf5de8bbf4913 GIT binary patch literal 4530 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 Q0{{R307*qoM6N<$f{TQtHvj+t literal 0 HcmV?d00001 diff --git a/package/appserver/static/alert_escu_investigate.png b/package/appserver/static/alert_escu_investigate.png new file mode 100644 index 0000000000000000000000000000000000000000..23c161b5c2ee5d1007635a39d73cf5de8bbf4913 GIT binary patch literal 4530 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 Q0{{R307*qoM6N<$f{TQtHvj+t literal 0 HcmV?d00001 diff --git a/package/appserver/static/alerticon.png b/package/appserver/static/alerticon.png new file mode 100644 index 0000000000000000000000000000000000000000..c7f9d26890d80e8b61811ebcfbf1a08089e9eed9 GIT binary patch literal 8991 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 FV1kDzasL1S literal 0 HcmV?d00001 diff --git a/package/appserver/static/analytic_story_details.css b/package/appserver/static/analytic_story_details.css new file mode 100644 index 0000000000..f42035edd4 --- /dev/null +++ b/package/appserver/static/analytic_story_details.css @@ -0,0 +1,186 @@ +/* .rTable { + display: table; + width: 100%; +} + +.rTableRow { + display: table-row; +} + +.rTableHeading { + display: table-header-group; + background-color: #ddd; +} + +.rTableCell, .rTableHead { + display: table-cell; + padding: 3px 10px; + //border: 1px solid #999999; +} + +.rTableLeftCell { + display: table-cell; + padding: 3px 10px; + //border: 1px solid #999999; + width: 200px; +} + +.rTableHeading { + display: table-header-group; + background-color: #ddd; + font-weight: bold; +} + +.rTableFoot { + display: table-footer-group; + font-weight: bold; + background-color: #ddd; +} + +.rTableBody { + display: table-row-group; +} */ + +h1 { + font-size: 24px; + font-weight: 200; + margin: 0; +} + +h3 { + padding-left: 10px; +} + +.as_title_attr_bar { + padding-left: 15%; + background-color: #eee; + height: 40px; + line-height: 40px; + margin-bottom: 7px; +} + +.as_title_attr { + float: left; + margin-right: 5%; + padding-right: 20px; + font-size: 14px; +} + +.as_search_accordion { + width: 100%; + margin-top: 10px; +} + +.as_story_details { + display: flex; + max-height: 500px; + clear: both; +} + +.as_story_details_left_col { + float: right; + width: 34%; + display: block; + overflow: scroll; + padding: 10px; + margin: 10px; + border: 1px solid #ddd; +} + +.as_story_details_right_col { + float: left; + width: 60%; + overflow: scroll; + padding: 10px; + margin: 10px; + border: 1px solid #ddd; +} + +.as_left_attr{ + display: inline-block; + width: 100%; +} + +.as_story_detail_left_attr_label { + float: left; + width: 30%; + padding-top: 2%; +} + +.as_story_detail_left_attr { + margin-top: 5px; + float: left; + width: 70%; +} + +.value_label { + float: left; + margin-right: 5px; + background-color: #eee; + padding: 4px; + border-radius: 6px; + margin-bottom: 5px; +} + +.as_story_detail_right_attr_label { + margin-bottom: 7px; +} + +.search_content { + display: flex; + clear: both; +} + +.search_left_panel { + float: left; + width: 70%; + margin: 10px; + padding: 10px; + border: 1px solid #ddd; +} + +.search_right_panel { + float: left; + width: 25%; + margin: 10px; + padding: 10px; + border: 1px solid #ddd; +} + +.search_left_attr { + margin: 10px; +} + +.search_right_attr { + margin: 10px; + display: table; +} + +.search_string{ + padding: 10px; + background-color: #ddd; + border: 1px solid #aaa; + border-radius: 2px; +} + +.data_model_tag { + background-color: #11a88b; +} + +.kill_chain_tag { + background-color: #ed8440; +} + +.attack_tag { + background-color: #3863a0; + color: #eee; +} + +.heading-story { + width: 80%; + float: left; +} + +.run_story_btn { + float: right; +} \ No newline at end of file diff --git a/package/appserver/static/analytic_story_details.js b/package/appserver/static/analytic_story_details.js new file mode 100644 index 0000000000..3b245f5780 --- /dev/null +++ b/package/appserver/static/analytic_story_details.js @@ -0,0 +1,601 @@ +require([ + 'underscore', + 'jquery', + 'splunkjs/mvc', + 'splunkjs/mvc/searchmanager', + 'splunkjs/mvc/searchbarview', + 'splunkjs/mvc/tableview', + 'splunk.util', + '../app/DA-ESS-ContentUpdate/js/lib/showdown.min', + '../app/DA-ESS-ContentUpdate/js/lib/jquery-ui/jquery-ui', + 'css!../app/DA-ESS-ContentUpdate/js/lib/jquery-ui/jquery-ui.css', + 'css!../app/DA-ESS-ContentUpdate/analytic_story_details.css', + 'splunkjs/mvc/simplexml/ready!' +], function(_, $, mvc, SearchManager, SearchBarView, TableView, splunkUtil, showdown) { + + let tokenModel = mvc.Components.get("default"); + let renderedComponents = []; + + let templ = ` +
+
+ Category: +
+
+ Version: +
+
+ Created: +
+
+ Modified: +
+
+
+
+

+
+
+ +
+
+
+
+
+ Description: +
+
+ +
+
+ Narrative: +
+
+ +
+
+
+
+
+ ATT&CK: +
+
+
+
+
+
+ Kill Chain Phases: +
+
+
+
+
+
+ CIS Controls: +
+
+
+
+
+
+ Data Model: +
+
+
+
+
+
+ Technologies: +
+
+
+
+
+
+ References: +
+
+
+
+
+
+
+

+ Analytic Story Searches +

+
+

Detection

+
+
+
+
+

Context

+
+
+
+
+

Investigative

+
+
+
+
+

Support

+
+
+
+
+
+
+ `; + + $('#analytic_story_details').html(_.template(templ)); + + if (tokenModel.get('analytic_story_name')) { + fetchAnalyticStoryDetails(tokenModel.get('analytic_story_name')); + } + + tokenModel.on("change:analytic_story_name", function(model, value, options) { + fetchAnalyticStoryDetails(value); + }); + + function fetchAnalyticStoryDetails(asName) { + let epoch = (new Date).getTime(); + let searchGetAnalyticStoryData = new SearchManager({ + id: epoch, + earliest_time: "-1h@h", + latest_time: "now", + cache: false, + search: "| rest /services/configs/conf-analytic_stories splunk_server=local count=0 | search title=\"" + asName + "\" | spath input=providing_technologies path={} output=tex | spath input=reference path={} output=ref | spath input=data_models path={} output=dm | table title, category, description, version, mappings, creation_date, modification_date, dm, narrative, tex, ref" + }); + + $('.run-story').unbind('click'); + + $('.run-story').on('click', function(evt) { + splunkUtil.redirect_to('/app/DA-ESS-ContentUpdate/search', { + q: `| runstory story="${asName}" | table name, num_search_results, description, kill_chain_phases, mitre_attack`, + earliest: "-60m", + latest: "now", + + }, window.open(), true); + }); + + let asSearch = splunkjs.mvc.Components.getInstance(epoch); + let asResults = asSearch.data("results", { + count: 0 + }); + asResults.on("data", function() { + let as_attributes = {}; + let fields = asResults.data().fields; + let rows = asResults.data().rows; + + for (let i = 0; i < fields.length; i++) { + as_attributes[fields[i]] = rows[0][i]; + } + renderStoryAttributes(as_attributes); + }); + + var searchGetSearchesData = new SearchManager({ + id: "s" + epoch, + earliest_time: "-1h@h", + latest_time: "now", + cache: false, + search: "| rest /services/saved/searches splunk_server=local count=0 | spath input=action.escu.analytic_story path={} output=uc | search uc = \"" + asName + "\" | spath input=action.escu.data_models path={} output=dm | spath input=action.escu.providing_technologies path={} output=tex | table action.escu.full_search_name, search, description, action.escu.search_type, action.escu.how_to_implement, action.escu.eli5, action.escu.version, action.escu.mappings, dm, tex, action.escu.asset_at_risk, action.escu.confidence, action.escu.known_false_positives, updated, action.escu.modification_date, action.escu.creation_date " + + }); + var searchesSearch = splunkjs.mvc.Components.getInstance("s" + epoch); + var searchesResults = searchesSearch.data("results", { + count: 0 + }); + + + searchesResults.on("data", function() { + let asSearchAttr = []; + var fields = searchesResults.data().fields; + var rows = searchesResults.data().rows; + + for (let i = 0; i < rows.length; i++) { + let searchObj = {}; + for (let j = 0; j < fields.length; j++) { + searchObj[fields[j]] = rows[i][j]; + } + asSearchAttr.push(searchObj); + } + renderSearches(asSearchAttr); + }); + } + + function renderStoryAttributes(asAttributes) { + let converter = new showdown.Converter(); + let mappings = JSON.parse(asAttributes.mappings); + $('#as_label_category').html(asAttributes.category); + $('#as_label_version').html(asAttributes.version); + $('#as_label_created').html(asAttributes.creation_date); + $('#as_label_modified').html(asAttributes.modification_date); + $('#story_heading').html(asAttributes.title); + $('#attack').html(mappings.mitre_attack); + $('#narrative').html(converter.makeHtml(asAttributes.narrative)); + $('#description').html(converter.makeHtml(asAttributes.description)); + $('#mitre_attack').html(getValueLabels(mappings.mitre_attack, 'attack_tag')); + $('#data_model').html(getValueLabels(asAttributes.dm, 'data_model_tag')); + $('#technology').html(getValueLabels(asAttributes.tex)); + $('#kill_chain_phases').html(getValueLabels(mappings.kill_chain_phases, 'kill_chain_tag')); + $('#cis_20').html(getValueLabels(mappings.cis20)); + $('#references').html(getReferenceURLS(asAttributes.ref)); + } + + function getReferenceURLS(refs) { + if (refs === null) { + return " "; + } else { + let refsResult = ``; + if (Array.isArray(refs)) { + refs.map(ref => { + refsResult = refsResult + `${ ref }
`; + }); + } else { + refsResult = refsResult + `${ refs }
` + } + + return refsResult; + } + } + + function renderSearches(asSearches) { + clearSearchView(); + let i = 0; + let converter = new showdown.Converter(); + asSearches.forEach(search => { + i++; + let epoch = (new Date).getTime(); + let searchID = `#search${ i }`; + let resultID = `#result${ i }`; + let searchSelector = `search${ i }`; + let controlID = `as_search${ i }` + let resultsControlID = `as_results_search${ i }`; + let btnID = `btn_es_${i}`; + + let searchPanel = ` +

${ search['action.escu.full_search_name'] }

+
+
+ +
+
+ Description +
+
+ ${ converter.makeHtml(search['description']) } +
+
+
+
+
+
+ Search +
+
+
+
+
+
+
+
+ How to Implement +
+
+ ${ converter.makeHtml(search['action.escu.how_to_implement']) } +
+
+
+
+ Known False Positives +
+
+ ${ converter.makeHtml(search['action.escu.known_false_positives']) } +
+
+
+
+
+
+ Data Models +
+
+ ${ getValueLabels(search['dm'], 'data_model_tag') } +
+
+
+
+ Technologies +
+
+ ${ getValueLabels(search['tex']) } +
+
+
+
`; + + if (search['action.escu.search_type'] === "support") { + //Process Support Search Accordion + + let mappings = JSON.parse(search['action.escu.mappings']); + $('#search_support').append(searchPanel); + + // Adding extra params to support search + let supportLeftAttr = `
+
+ Explain It Like I'm 5 +
+
+ ${ converter.makeHtml(search['action.escu.eli5']) } +
+
`; + + + $(`#${searchSelector}-eli5`).append(supportLeftAttr); + + } else if (search['action.escu.search_type'] === "detection") { + let mappings = JSON.parse(search['action.escu.mappings']); + $('#search_detection').append(searchPanel); + // Adding extra params to detection search + let detectionAttrTop = ` +
+
+ ATT&CK +
+
+ ${ getValueLabels(mappings.mitre_attack, 'attack_tag') } +
+
+
+
+ Kill Chain Phases +
+
+ ${ getValueLabels(mappings.kill_chain_phases, 'kill_chain_tag') } +
+
+
+
+ CIS Controls +
+
+ ${ getValueLabels(mappings.cis20) } +
+
+ `; + + let detectionAttrBottom = ` +
+
+ Asset at Risk +
+
+ ${ search['action.escu.asset_at_risk'] } +
+
+
+
+ Confidence +
+
+ ${ search['action.escu.confidence'] } +
+
+
+
+ Creation Date +
+
+ ${ search['action.escu.creation_date'] } +
+
+
+
+ Modification Date +
+
+ ${ search['action.escu.modification_date'] } +
+
`; + + let detectionLeftAttr = `
+
+ Explain It Like I'm 5 +
+
+ ${ converter.makeHtml(search['action.escu.eli5']) } +
+
`; + $(detectionAttrTop).insertBefore($(`#${searchSelector}-content`).find('.data_model_srch_attr')); + $(`#${searchSelector}-content`).find('.search_right_panel').append(detectionAttrBottom); + $(`#${searchSelector}-eli5`).append(detectionLeftAttr); + } else if (search['action.escu.search_type'] === "contextual") { + //Process contextual Search Accordion + + let mappings = JSON.parse(search['action.escu.mappings']); + $('#search_contextual').append(searchPanel); + + + // Adding extra params to contextual search + let contextualLeftAttr = `
+
+ Explain It Like I'm 5 +
+
+ ${ converter.makeHtml(search['action.escu.eli5']) } +
+
`; + $(`#${searchSelector}-eli5`).append(contextualLeftAttr); + + } else if (search['action.escu.search_type'] === "investigative") { + //Process Investigative Search Accordion + let mappings = JSON.parse(search['action.escu.mappings']); + $('#search_investigative').append(searchPanel); + + // Adding extra params to investigative search + let investigativeLeftAttr = `
+
+ Explain It Like I'm 5 +
+
+ ${ converter.makeHtml(search['action.escu.eli5']) } +
+
`; + + + $(`#${searchSelector}-eli5`).append(investigativeLeftAttr); + } + + /* + let updatedAttr = ` +
+
+ Last Updated +
+
+ ${ search['updated'] } +
+
+ `; + $(`#${searchSelector}-content`).find('.search_right_panel').append(updatedAttr); + */ + + $(`#${ btnID }`).on('click', (evt) => { + console.log($(evt.target).data("searchType")); + if ($(evt.target).data("searchType") === "detection") { + splunkUtil.redirect_to('app/SplunkEnterpriseSecuritySuite/correlation_search_edit', { + search: `${$(evt.target).data("searchName")}` + }, window.open(), true); + } else { + splunkUtil.redirect_to(`manager/DA-ESS-ContentUpdate/saved/searches`, { + search: `${$(evt.target).data("searchName")}` + }, window.open(), true); + } + }) + + let searchManagerID = search['action.escu.full_search_name'].split(' ').join(''); + + let searchManager = new SearchManager({ + id: searchManagerID, + earliest_time: "-24h@h", + latest_time: "now", + status_buckets: 300, + required_field_list: "*", + preview: true, + cache: true, + autostart: false, // Prevent the search from running automatically + search: search['search'], + }); + + let searchBar = new SearchBarView({ + id: searchID, + managerId: searchManagerID, + timerange: true, + el: $('.' + controlID), + value: search['search'], + timerange_preset: "Last 24 hours" + }).render(); + + let tableviewer = new TableView({ + id: resultsControlID, + managerid: searchManagerID, + pageSize: 5, + el: $("." + resultsControlID) + }).render(); + + searchBar.on("change", function() { + searchManager.settings.unset("search"); + + // Update the search query + searchManager.settings.set("search", searchBar.val()); + + // Run the search (because autostart=false) + searchManager.startSearch(); + }); + + searchBar.timerange.on("change", function() { + // Update the time range of the search + searchManager.search.set(searchBar.timerange.val()); + + // Run the search (because autostart=false) + searchManager.startSearch(); + }) + + + renderedComponents.push(searchID, searchManagerID, resultsControlID); + + }); + + $('#accordion').accordion({ + heightStyle: "content" + }); + $('#search_support').accordion({ + heightStyle: "content" + }); + $('#search_detection').accordion({ + heightStyle: "content" + }); + $('#search_contextual').accordion({ + heightStyle: "content" + }); + $('#search_investigative').accordion({ + heightStyle: "content" + }); + } + + function clearSearchView() { + if ($('#accordion').hasClass('ui-accordion')) { + $('#accordion').accordion('destroy'); + } + + if ($('#search_support').hasClass('ui-accordion')) { + $('#search_support').accordion('destroy'); + $('#search_support').empty(); + } + + if ($('#search_detection').hasClass('ui-accordion')) { + $('#search_detection').accordion('destroy'); + $('#search_detection').empty(); + } + + if ($('#search_contextual').hasClass('ui-accordion')) { + $('#search_contextual').accordion('destroy'); + $('#search_contextual').empty(); + } + + if ($('#search_investigative').hasClass('ui-accordion')) { + $('#search_investigative').accordion('destroy'); + $('#search_investigative').empty(); + } + + $('.configure_in_es').unbind("click"); + + let len = renderedComponents.length; + while (len--) { + let id = renderedComponents.pop(); + mvc.Components.getInstance(id).dispose(); + } + } + + function getValueLabels(values, className) { + let cls = ""; + if (className !== undefined || className) { + cls = className; + } + let valueArray = []; + if (values) { + if (typeof values === "string") { + valueArray.push(values) + } else { + valueArray = values; + } + } + let htmlTmpl = ""; + valueArray.forEach(val => { + htmlTmpl += `
${ val }
 ` + }); + + return htmlTmpl; + } +}); diff --git a/package/appserver/static/escu_summary.css b/package/appserver/static/escu_summary.css new file mode 100644 index 0000000000..48fe5b72c3 --- /dev/null +++ b/package/appserver/static/escu_summary.css @@ -0,0 +1,66 @@ +.btn-pill { + display: inline; +} + +.killchain-phases { + width: 100%; + margin-left: 6%; +} + +.killchain_card { + width: 14%; + float:left; +} + +.killchain { + height: 55px; + line-height: 55px; + -webkit-clip-path: polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%); + clip-path: polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%); +} + +.killchain-text { + font-size: 300%; + font-weight: 600; + color: #fff; + text-align: center; + white-space: wrap; +} + + +.killchain-label { + margin-top: 7px; + text-align: center; + color: #666; + font-size: 14px; + font-weight: 700; + margin-left: 10%; + width: 60%; +} + +.killchain-text-one-line { + font-size: 16px; + color: #fff; + font-family: system-ui; + white-space: wrap; + width: 100%; + padding-top: 7%; + padding-left: 26%; +} + +.killchain-text-second { + font-size: 16px; + color: #fff; + font-family: system-ui; + margin-top: -10px; + padding-left: 26%; +} + +.killchain-phases { + display: inline-block; + width: 100%; +} + +.notfirst { + margin-left: -2%; +} diff --git a/package/appserver/static/escu_summary.js b/package/appserver/static/escu_summary.js new file mode 100644 index 0000000000..7b3427b74c --- /dev/null +++ b/package/appserver/static/escu_summary.js @@ -0,0 +1,78 @@ +require([ + 'underscore', + 'jquery', + 'splunkjs/mvc', + 'splunkjs/mvc/searchmanager', + '../app/DA-ESS-ContentUpdate/js/lib/tabs', + 'css!../app/DA-ESS-ContentUpdate/js/lib/tabs.css', + 'css!../app/DA-ESS-ContentUpdate/escu_summary.css', + 'splunkjs/mvc/simplexml/ready!' + ], function(_, $, mvc, SearchManager) { + $('.es-soc-analytic-story-stats').html(_.template('<%- _("Analytic Story Summary").t() %>')); + $('.es-soc-search-stats').html(_.template('<%- _("Search Summary").t() %>')); + + const tokenModel = mvc.Components.get('default'); + const submittedTokens = mvc.Components.get('submitted'); + + $.ajax({ + url: Splunk.util.make_url('/splunkd/__raw/servicesNS/nobody/DA-ESS-ContentUpdate/apps/local'), + type: 'GET', + async: true, + data: { + output_mode: 'json', + count: -1, + }, + }).done(result => { + if (result.entry) { + const foundEss = result.entry.find(app => app.name === 'SplunkEnterpriseSecuritySuite'); + if (foundEss.content.version === "5.2.0") { + submittedTokens.set('explore-use-case-es-show', 'true'); + const use_case_library_link = Splunk.util.make_url('app/SplunkEnterpriseSecuritySuite/ess_use_case_library'); + const template = `
+ ${ _('Εxplore ESCU content updates directly from the Use Case Library within ES. To explore it, click').t() } + ${ _('here').t() }. +
`; + $('#explore-use-case-es-info').html(_.template(template, { use_case_library_link: use_case_library_link })); + } + } + }).fail(err => { + }); + + + + // searchQuery - + let kcpSearch = new SearchManager({ + id: "kcpSearch", + preview: true, + cache: true, + status_buckets: 300, + earliest_time: '-24h@h', + latest_time: 'now', + search: '| rest /services/configs/conf-analytic_stories splunk_server=local count=0 | spath input=mappings path=kill_chain_phases{} output=kcp | stats count by kcp', + }); + + let results = kcpSearch.data("preview"); + + results.on("data", function() { + results.data().rows.forEach(row => { + let killchainID = '#' + row[0].toLowerCase().replace(/ /g,''); + $(killchainID).html(row[1]); + }); + }); + + $('#analytic_filter_clear').on('click', function() { + tokenModel.set('form.as_cis', '*'); + tokenModel.set('form.as_category', '*'); + tokenModel.set('form.as_kill_chain_phase', '*'); + tokenModel.set('form.as_mitre_attack', '*'); + tokenModel.set('form.as_data_models', '*'); + }); + + $('#search_filter_clear').on('click', function() { + tokenModel.set('form.cis', '*'); + tokenModel.set('form.searchtype', '*'); + tokenModel.set('form.kill_chain_phase', '*'); + tokenModel.set('form.mitre_attack', '*'); + tokenModel.set('form.data_models', '*'); + }); + }); diff --git a/package/appserver/static/feedback.js b/package/appserver/static/feedback.js new file mode 100644 index 0000000000..48c3f4cb74 --- /dev/null +++ b/package/appserver/static/feedback.js @@ -0,0 +1,19 @@ + + require([ + 'underscore', + 'jquery', + 'splunkjs/mvc', + 'splunkjs/mvc/simplexml/ready!' + ], function(_, $, mvc, TableView) { + + var defaultTokenSpace = mvc.Components.getInstance('default'); + + // This will take every textarea that has a data-token attribute and will make the given token with the value of the textarea + $('textarea[data-token]').each(function (textarea) { + $(this).on('input', function(input) { + var token_to_set = $(this).data('token'); + defaultTokenSpace.set(token_to_set, $(this).val()); + }) + }) + }); + diff --git a/package/appserver/static/img/escu/Slide1.PNG b/package/appserver/static/img/escu/Slide1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..4e5f7311ac42f1ba7224163d974d69aa271eb2df GIT binary patch literal 127927 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

l}4Ujj`OEP7I!_ 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

!CvwmWDmlVSEL-%F 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

  • BTX{Jo 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

    yMHFzrT)il`eT&ez~1)B^G1%+RM+EdG~#z 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 ZZy7Z_aGi%E(Q5NT40MdN^R;e1_%E$a4%h$y literal 0 HcmV?d00001 diff --git a/package/appserver/static/img/escu/Slide6.PNG b/package/appserver/static/img/escu/Slide6.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bb0cfaefdd3f193f606bcba3aeb5f6fa92a64346 GIT binary patch literal 163389 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%0Divq5R{Dg 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

    3Sm{dCbUOS~znEb*@FK#^9k|MppCQQmT#hAxIj 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 U*(88aOh6zntMan&h4K6U1Hwihwg3PC literal 0 HcmV?d00001 diff --git a/package/appserver/static/img/escu/Slide8.PNG b/package/appserver/static/img/escu/Slide8.PNG new file mode 100644 index 0000000000000000000000000000000000000000..328fccfbf7e911d2c8a39821c16e5d23591a860d GIT binary patch literal 220471 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�xf~v(TCn`;sm;E^Bbwdm!9E5QXynV=U7f#| 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


    |U%tn#ZyEi>OJ)4`GMXvt$Mvwgn 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 z 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 BNSy!x literal 0 HcmV?d00001 diff --git a/package/bin/da_ess_contentupdate/alert_actions_base.py b/package/bin/da_ess_contentupdate/alert_actions_base.py new file mode 100755 index 0000000000..fc8ce27915 --- /dev/null +++ b/package/bin/da_ess_contentupdate/alert_actions_base.py @@ -0,0 +1,211 @@ +import csv +import gzip +import sys + +from splunk.clilib.bundle_paths import make_splunkhome_path + +sys.path.insert(0, make_splunkhome_path(["etc", "apps", "Splunk_SA_CIM", "lib"])) + +import requests +from cim_actions import ModularAction +from logging_helper import get_logger +import logging +from splunk_aoblib.rest_helper import TARestHelper +from splunk_aoblib.setup_util import Setup_Util + + +class ModularAlertBase(ModularAction): + def __init__(self, ta_name, alert_name): + self._alert_name = alert_name + # self._logger_name = "modalert_" + alert_name + self._logger_name = alert_name + "_modalert" + self._logger = get_logger(self._logger_name) + super(ModularAlertBase, self).__init__( + sys.stdin.read(), self._logger, alert_name) + self.setup_util_module = None + self.setup_util = None + self.result_handle = None + self.ta_name = ta_name + self.splunk_uri = self.settings.get('server_uri') + self.setup_util = Setup_Util(self.splunk_uri, self.session_key, self._logger) + + level = self.get_log_level() + if level: + self._logger.setLevel(level) + self.rest_helper = TARestHelper(self._logger) + + def log_error(self, msg): + self.message(msg, 'failure', level=logging.ERROR) + + def log_info(self, msg): + self.message(msg, 'success', level=logging.INFO) + + def log_debug(self, msg): + self.message(msg, None, level=logging.DEBUG) + + def log_warn(self, msg): + self.message(msg, None, level=logging.WARN) + + def set_log_level(self, level): + self._logger.setLevel(level) + + def get_param(self, param_name): + return self.configuration.get(param_name) + + def get_global_setting(self, var_name): + return self.setup_util.get_customized_setting(var_name) + + def get_user_credential(self, username): + ''' + if the username exists, return + { + "username": username, + "password": credential + } + ''' + return self.setup_util.get_credential_by_username(username) + + @property + def log_level(self): + return self.get_log_level() + + @property + def proxy(self): + return self.get_proxy() + + def get_log_level(self): + return self.setup_util.get_log_level() + + def get_proxy(self): + ''' if the proxy setting is set. return a dict like + { + proxy_url: ... , + proxy_port: ... , + proxy_username: ... , + proxy_password: ... , + proxy_type: ... , + proxy_rdns: ... + } + ''' + return self.setup_util.get_proxy_settings() + + def _get_proxy_uri(self): + uri = None + proxy = self.get_proxy() + if proxy and proxy.get('proxy_url') and proxy.get('proxy_type'): + uri = proxy['proxy_url'] + if proxy.get('proxy_port'): + uri = '{0}:{1}'.format(uri, proxy.get('proxy_port')) + if proxy.get('proxy_username') and proxy.get('proxy_password'): + uri = '{0}://{1}:{2}@{3}/'.format(proxy['proxy_type'], proxy[ + 'proxy_username'], proxy['proxy_password'], uri) + else: + uri = '{0}://{1}'.format(proxy['proxy_type'], uri) + return uri + + def send_http_request(self, url, method, parameters=None, payload=None, headers=None, cookies=None, verify=True, cert=None, timeout=None, use_proxy=True): + return self.rest_helper.send_http_request(url=url, method=method, parameters=parameters, payload=payload, + headers=headers, cookies=cookies, verify=verify, cert=cert, + timeout=timeout, + proxy_uri=self._get_proxy_uri() if use_proxy else None) + + def build_http_connection(self, config, timeout=120, + disable_ssl_validation=False): + from httplib2 import (socks, ProxyInfo, Http) + """ + :config: dict like, proxy and account information are in the following + format { + "username": xx, + "password": yy, + "proxy_url": zz, + "proxy_port": aa, + "proxy_username": bb, + "proxy_password": cc, + "proxy_type": http,http_no_tunnel,sock4,sock5, + "proxy_rdns": 0 or 1, + } + :return: Http2.Http object + """ + if not config: + config = {} + + proxy_type_to_code = { + "http": socks.PROXY_TYPE_HTTP, + "http_no_tunnel": socks.PROXY_TYPE_HTTP_NO_TUNNEL, + "socks4": socks.PROXY_TYPE_SOCKS4, + "socks5": socks.PROXY_TYPE_SOCKS5, + } + if config.get("proxy_type") in proxy_type_to_code: + proxy_type = proxy_type_to_code[config["proxy_type"]] + else: + proxy_type = socks.PROXY_TYPE_HTTP + + rdns = config.get("proxy_rdns") + + proxy_info = None + if config.get("proxy_url") and config.get("proxy_port"): + if config.get("proxy_username") and config.get("proxy_password"): + proxy_info = ProxyInfo(proxy_type=proxy_type, + proxy_host=config["proxy_url"], + proxy_port=int(config["proxy_port"]), + proxy_user=config["proxy_username"], + proxy_pass=config["proxy_password"], + proxy_rdns=rdns) + else: + proxy_info = ProxyInfo(proxy_type=proxy_type, + proxy_host=config["proxy_url"], + proxy_port=int(config["proxy_port"]), + proxy_rdns=rdns) + if proxy_info: + http = Http(proxy_info=proxy_info, timeout=timeout, + disable_ssl_certificate_validation=disable_ssl_validation) + else: + http = Http(timeout=timeout, + disable_ssl_certificate_validation=disable_ssl_validation) + + if config.get("username") and config.get("password"): + http.add_credentials(config["username"], config["password"]) + return http + + def process_event(self, *args, **kwargs): + raise NotImplemented() + + def pre_handle(self, num, result): + result.setdefault('rid', str(num)) + self.update(result) + return result + + def get_events(self): + self.result_handle = gzip.open(self.results_file, 'rb') + return (self.pre_handle(num, result) for num, result in enumerate(csv.DictReader(self.result_handle))) + + def prepare_meta_for_cam(self): + with gzip.open(self.results_file, 'rb') as rf: + for num, result in enumerate(csv.DictReader(rf)): + result.setdefault('rid', str(num)) + self.update(result) + self.invoke() + break + + def run(self, argv): + status = 0 + if len(argv) < 2 or argv[1] != "--execute": + msg = 'Error: argv="{}", expected="--execute"'.format(argv) + print >> sys.stderr, msg + sys.exit(1) + + try: + status = self.process_event() + except Exception as e: + msg = "Unexpected error: {}." + if e.message: + self.log_error(msg.format(e.message)) + else: + import traceback + self.log_error(msg.format(traceback.format_exc())) + sys.exit(2) + finally: + if self.result_handle: + self.result_handle.close() + + return status diff --git a/package/bin/da_ess_contentupdate/cim_actions.py b/package/bin/da_ess_contentupdate/cim_actions.py new file mode 100755 index 0000000000..7a7813d4f6 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cim_actions.py @@ -0,0 +1,508 @@ +import collections +import csv +import json +import logging +import logging.handlers +import os +import random +import re +import splunk.rest as rest +import time + +from splunk.clilib.bundle_paths import make_splunkhome_path +from splunk.util import mktimegm, normalizeBoolean + +# set the maximum allowable CSV field size +# +# The default of the csv module is 128KB; upping to 10MB. See SPL-12117 for +# the background on issues surrounding field sizes. +# (this method is new in python 2.5) +csv.field_size_limit(10485760) + + +class InvalidResultID(Exception): + pass + + +class ModularAction(object): + DEFAULT_MSGFIELDS = ['signature', + 'action_name', + 'search_name', + 'sid', + 'orig_sid', + 'rid', + 'orig_rid', + 'app', + 'user', + 'action_mode', + 'action_status'] + DEFAULT_MESSAGE = 'sendmodaction - ' + ' '.join(['{i}="{{d[{i}]}}"'.format(i=i) for i in DEFAULT_MSGFIELDS]) + # The above yields a string.format() compatible format string: + # + # 'sendmodaction - signature="{d[signature]}" action_name="{d[action_name]}" + # search_name="{d[search_name]}" sid="{d[sid]}" orig_sid="{d[orig_sid]}" + # rid="{d[rid]}" orig_rid="{d[orig_rid]}" app="{d[app]}" user="{d[user]}" + # action_mode="{d[action_mode]}" action_status="{d[action_status]}"' + + DEFAULT_DROPEXP = lambda x: ((x.startswith('_') and x not in ['_raw', '_time']) + or x.startswith('date_') + or x in ['punct', 'sid', 'rid', 'orig_sid', 'orig_rid']) + + DEFAULT_MAPEXP = lambda x: (x.startswith('tag::') + or x in ['_time', '_raw', 'splunk_server', 'index', + 'source', 'sourcetype', 'host', 'linecount', + 'timestartpos', 'timeendpos', 'eventtype', + 'tag', 'search_name', 'event_hash', 'event_id']) + + DEFAULT_HEADER = '***SPLUNK*** index="%s" host="%s" source="%s"' + DEFAULT_BREAKER = '==##~~##~~ 1E8N3D4E6V5E7N2T9 ~~##~~##==\n' + DEFAULT_IDLINE = '***Common Action Model*** orig_action_name="%s" orig_sid="%s" orig_rid="%s" sourcetype="%s"\n' + DEFAULT_INDEX = 'summary' + DEFAULT_CHUNK = 50000 + + SHORT_FORMAT = '%(asctime)s %(levelname)s %(message)s' + + def __init__(self, settings, logger, action_name='unknown'): + """ Initialize ModularAction class. + + @param settings: A modular action payload in JSON format. + @param logger: A logging instance. + Recommend using ModularAction.setup_logger. + @param action_name: The action name. + action_name in payload will take precedence. + """ + self.settings = json.loads(settings) + self.logger = logger + self.session_key = self.settings.get('session_key') + self.sid = self.settings.get('sid') + self.sid_snapshot = '' + ## if sid contains rt_scheduler with snapshot-sid; drop snapshot-sid + ## sometimes self.sid may be an integer (1465593470.1228) + try: + rtsid = re.match('^(rt_scheduler.*)\.(\d+)$', self.sid) + if rtsid: + self.sid = rtsid.group(1) + self.sid_snapshot = rtsid.group(2) + except: + pass + + ## rid_ntuple is a named tuple that represents + ## the three variables that change on a per-result basis + self.rid_ntuple = collections.namedtuple('ID', ['orig_sid','rid','orig_rid']) + ## rids is a list of rid_ntuple values + ## automatically maintained by update() calls + self.rids = [] + ## current orig_sid based on update() + ## aka self.rids[-1].orig_sid + self.orig_sid = '' + ## current rid based on update() + ## aka self.rids[-1].rid + self.rid = '' + ## current orig_rid based on update() + ## aka self.rids[-1].orig_rid + self.orig_rid = '' + + self.results_file = self.settings.get('results_file') + ## info + self.info = {} + if self.results_file: + self.info_file = os.path.join(os.path.dirname(self.results_file), 'info.csv') + self.search_name = self.settings.get('search_name') + self.app = self.settings.get('app') + self.user = self.settings.get('user') or self.settings.get('owner') + self.configuration = self.settings.get('configuration', {}) + ## enforce configuration is a 'dict' + if not isinstance(self.configuration, dict): + self.configuration = {} + ## set loglevel to DEBUG if verbose + if normalizeBoolean(self.configuration.get('verbose', 'false')): + self.logger.setLevel(logging.DEBUG) + self.logger.debug('loglevel set to DEBUG') + ## use | sendalert param.action_name=$action_name$ + self.action_name = self.configuration.get('action_name') or action_name + ## use sid to determine action_mode + if isinstance(self.sid, basestring) and 'scheduler' in self.sid: + self.action_mode = 'saved' + else: + self.action_mode = 'adhoc' + + self.action_status = '' + ## Since we don't use the result object we get from settings it will be purged + try: + del self.settings['result'] + except Exception: + pass + ## events + self.events = [] + + def addinfo(self): + """ The purpose of this method is to populate the + modular action info variable with the contents of info.csv. + + @raise Exception: raises Exception if self.info_file could not be opened + or if there were problems parsing the info.csv data + """ + if self.info_file: + try: + with open(self.info_file, 'rU') as fh: + self.info = csv.DictReader(fh).next() + except Exception as e: + self.message('Could not retrieve info.csv', level=logging.WARN) + + def addjobinfo(self): + """ The purpose of this method is to populate the job variable + with the contents from REST (/services/search/jobs/) + + SPL-112815 - sendalert - not all $job.$ parameters come through + + @raise Exception: raises Exception if search job information could not + be retrieved via REST (search/jobs) based on self.sid + """ + self.job = {} + if self.sid: + try: + response, content = rest.simpleRequest('search/jobs/%s' % self.sid, + sessionKey=self.session_key, + getargs={'output_mode': 'json'}) + if response.status == 200: + self.job = json.loads(content)['entry'][0]['content'] + self.message('Successfully retrieved search job info') + self.logger.debug(self.job) + else: + self.message('Could not retrieve search job info', level=logging.WARN) + except Exception as e: + self.message('Could not retrieve search job info', level=logging.WARN) + + def message(self, signature, status=None, rids=None, level=logging.INFO, **kwargs): + """ The purpose of this method is to provide a common messaging interface. + + @param signature: A string representing the message we want to log. + @param status: An optional status that we want to log. + Defaults to None. + @param rids: An optional list of rid_ntuple values in case we + want to generate the message for multiple rids. + Defaults to None (use the rid currently loaded). + @param level: The logging level to use when writing the message. + Defaults to logging.INFO (INFO) + @param kwargs: Additional keyword arguments to be included with the + message. + Defaults to "no arguments". + + @return message: This method logs the message; however, for + backwards compatibility we also return the message. + """ + ## status + status = status or self.action_status or '' + ## rid + if not isinstance(rids, list): + rids = [self.rid_ntuple(self.orig_sid, self.rid, self.orig_rid)] + ## kwargs - prune any duplicate keys based on DEFAULT_MSGFIELDS + ## prune any keys with special characters [A-Za-z_]+ + newargs = [x for x in kwargs\ + if (x not in ModularAction.DEFAULT_MSGFIELDS) and re.match('[A-Za-z_]+', x)] + ## MSG + msg = '%s %s' % (ModularAction.DEFAULT_MESSAGE, ' '.join(['{i}="{{d[{i}]}}"'.format(i=i) for i in newargs])) + + # This will set the default value of any value NOT in the dictionary to the + # empty string. + argsdict = collections.defaultdict(str) + # order is important here - here we update first from kwargs, then from our + # expected arg set. + argsdict.update(kwargs) + argsdict.update({ + 'signature': signature or '', + 'action_name': self.action_name or '', + 'search_name': self.search_name or '', + 'sid': self.sid or '', + 'app': self.app or '', + 'user': self.user or '', + 'action_mode': self.action_mode or '', + 'action_status': status + }) + + for rid_ntuple in rids: + if len(rid_ntuple)==3: + ## Update the arguments dictionary + argsdict.update({ + 'orig_sid': rid_ntuple.orig_sid or '', + 'rid': rid_ntuple.rid or '', + 'orig_rid': rid_ntuple.orig_rid or '' + }) + ## This is where the magic happens. The format string will use the + ## attributes of "argsdict" + message = msg.format(d=argsdict) + ## prune empty string key-value pairs + for match in re.finditer('[A-Za-z_]+=\"\"(\s|$)', message): + message = message.replace(match.group(0),'',1) + message = message.strip() + self.logger.log(level, message) + else: + self.logger.warn('Could not unpack rid_ntuple') + message = '' + + return message + + def update(self, result): + """ The purpose of this method is to update the ModularAction instance + identifiers based on the current result being operated on. + + This is the most important method in the library as it sets up + rid, orig_sid, and orig_rid to be used by subsequent class methods. + + Not calling update() immediately for each result before doing additional + work can have adverse affects. + + @param signature: A string representing the message we want to log. + @param status: An optional status that we want to log. + Defaults to None. + @param rids: An optional list of rid_ntuple values in case we + want to generate the message for multiple rids. + Defaults to None (use the rid currently loaded). + @param level: The logging level to use when writing the message. + Defaults to logging.INFO (INFO) + @param kwargs: Additional keyword arguments to be included with the + message. + Defaults to "no arguments". + + @return message: This method logs the message; however, for + backwards compatiblity we also return the message. + """ + ## This is for events/results that were created as the result of a previous action + self.orig_sid = result.get('orig_sid', '') + ## This is for events/results that were created as the result of a previous action + self.orig_rid = result.get('orig_rid', '') + if 'rid' in result and isinstance(result['rid'], (basestring, int)): + self.rid = str(result['rid']) + if self.sid_snapshot: + self.rid = '%s.%s' % (self.rid, self.sid_snapshot) + ## add result info to list of named tuples + self.rids.append(self.rid_ntuple(self.orig_sid, self.rid, self.orig_rid)) + else: + raise InvalidResultID('Result must have an ID') + + def invoke(self): + """ The purpose of this method is to generate per-result invocation messages. + This method is used to identify that an action is being attempted on a per-result basis. + + Remember to call update() prior to invoke() to ensure that the invocation message + reflects the appropriate identifiers. + """ + self.message('Invoking modular action') + + def result2stash(self, result, dropexp=DEFAULT_DROPEXP, mapexp=DEFAULT_MAPEXP, addinfo=False): + """ The purpose of this method is to formulate an event in stash format + + @param result: The result dictionary to generate a stash event for. + @param dropexp: A lambda expression used to determine whether a field + should be dropped or not. + Defaults to DEFAULT_DROPEXP. + @param mapexp: A lambda expression used to determine whether a field + should be mapped (prepended with "orig_") or not. + Defaults to DEFAULT_MAPEXP. + @param addinfo: Whether or not to add search information to the event. + "info" includes search_now, info_min_time, info_max_time, + and info_search_time fields. + Requires that information was loaded into the ModularAction + instance via addinfo() + + @return _raw: Returns a string which represents the result in stash format. + + The following example has been broken onto multiple lines for readability: + 06/21/2016 10:00:00 -0700, + search_name="Access - Brute Force Access Behavior Detected - Rule", + search_now=0.000, info_min_time=1466528400.000, info_max_time=1466532600.000, info_search_time=1465296264.179, + key1=key1val, key2=key2val, key3=key3val, key4=key4val1, key4=key4val2, ... + """ + dropexp = dropexp or (lambda x: False) + mapexp = mapexp or (lambda x: False) + orig_dropexp = lambda x: x.startswith('orig_') and x[5:] in result and mapexp(x[5:]) + + ## addinfo + if addinfo: + result['info_min_time'] = self.info.get('_search_et', '0.000') + info_max_time = self.info.get('_search_lt') + if not info_max_time or info_max_time==0 or info_max_time=='0': + info_max_time = '+Infinity' + result['info_max_time'] = info_max_time + result['info_search_time'] = self.info.get('_timestamp', '') + + ## construct _raw + _raw = '%s' % result.get('_time', mktimegm(time.gmtime())) + if self.search_name: + _raw += ', search_name="%s"' % self.search_name + + processed_keys = [] + for key, val in sorted(result.items()): + vals = [] + ## if we have a proper mv field + if (key.startswith('__mv_') + and val and isinstance(val, basestring) + and val.startswith('$') and val.endswith('$')): + real_key = key[5:] + vals = val[1:-1].split('$;$') + ## if proper sv field + elif val and not key.startswith('__mv_'): + real_key = key + vals = [val] + + ## if we have vals and key hasn't been processed + ## and key is not to be dropped... + if (vals + and (real_key not in processed_keys) + and not dropexp(real_key) + and not orig_dropexp(real_key)): + ## iterate vals + for val in vals: + ## format literal '$' + if key.startswith('__mv'): + val = val.replace('$$', '$') + ## escape quotes + if isinstance(val, basestring): + val = val.replace('"', r'\"') + ## check map + if mapexp(real_key): + _raw += ', %s="%s"' % ('orig_' + real_key.lstrip('_'), val) + else: + _raw += ', %s="%s"' % (real_key, val) + processed_keys.append(real_key) + + return _raw + + def addevent(self, raw, sourcetype, cam_header=True): + """ The purpose of this method is to add a properly constructed event + to the events list in the ModularAction instance. This ensures events + are created with the appropriate index-time header. + + The index-time header is responsible for setting sourcetype, + orig_action_name, orig_sid, and orig_rid. The index-time header will + not be present in the _raw of generated events. + + Remember to call update() prior to addevent() to ensure that the events + reflect the appropriate orig_sid and orig_rid identifiers. + + @param raw: The text of the event you want to generate. + @param sourcetype: The sourcetype of the event you want to generate. + @param cam_header: Optionally exclude the inclusion of the index-time header. + Defaults to True (include header). + """ + if cam_header: + if self.orig_sid: + action_idline = ModularAction.DEFAULT_IDLINE % ( + self.action_name, + self.orig_sid, + self.orig_rid, + sourcetype) + else: + action_idline = ModularAction.DEFAULT_IDLINE % ( + self.action_name, + self.sid, + self.rid, + sourcetype) + self.events.append(action_idline + raw) + else: + self.events.append(raw) + + def writeevents(self, index='summary', host=None, source=None, fext='common_action_model'): + """ The purpose of this method is to create arbitrary splunk events + from the list of events in the ModularAction instance. + + Please use addevent() for populating the list of events in + the ModularAction instance. + + @param index: The index to write the events to. + Defaults to "summary". + @param host: The value of host the events should take on. + Defaults to None (auto). + @param source: The value of source the events should take on. + Defaults to None (auto). + @param fext: The extension of the file to write out. + Files are written to $SPLUNK_HOME/var/spool/splunk. + File extensions can only contain word characters, + dash, and have a 200 char max. + "stash_" is automatically prepended to all extensions. + Defaults to "common_action_model" ("stash_common_action_model"). + Only override if you've set up a corresponding props.conf + stanza to handle the extension. + + @return bool: Returns True if all events were successfully written + Returns False if any errors were encountered + """ + ## internal makeevents method for normalizing strings + ## that will be used in the various headers we write out + def get_string(input, default): + try: + return input.replace('"', '_') + except AttributeError: + return default + + if self.events: + ## sanitize file extension + if not fext or not re.match('^[\w-]+$', fext): + self.logger.warn('Requested file extension was ignored due to invalid characters') + fext = 'common_action_model' + elif len(fext)>200: + self.logger.warn('Requested file extension was ignored due to length') + fext = 'common_action_model' + ## header + header_line = ModularAction.DEFAULT_HEADER % ( + get_string(index, ModularAction.DEFAULT_INDEX), + get_string(host, ''), + get_string(source, '')) + ## process event chunks + for chunk in (self.events[x:x+ModularAction.DEFAULT_CHUNK] + for x in xrange(0, len(self.events), ModularAction.DEFAULT_CHUNK)): + ## initialize output string + default_breaker = '\n' + ModularAction.DEFAULT_BREAKER + fout = header_line + default_breaker + (default_breaker).join(chunk) + ## write output string + try: + fn = '%s_%s.stash_%s' % (mktimegm(time.gmtime()), random.randint(0, 100000), fext) + fp = make_splunkhome_path(['var', 'spool', 'splunk', fn]) + ## obtain fh + with open(fp, 'w') as fh: + fh.write(fout) + except: + signature = 'Error obtaining file handle during makeevents' + self.message(signature, level=logging.ERROR, file_path=fp) + self.logger.exception(signature + ' file_path=%s' % fp) + return False + self.message('Successfully created splunk events', event_count=len(self.events)) + return True + return False + + def dowork(self): + """ This method serves as an illustration stub. + Serves as a container for operations which satisfy the nature of the action. + For instance, the third party API call. + + For cleanliness it is recommended that you subclass ModularAction + and implement your own dowork() method. + """ + return + + @staticmethod + def setup_logger(name, level=logging.INFO, maxBytes=25000000, backupCount=5, format=SHORT_FORMAT): + """ Set up a logging instance. + + @param name: The log file name. + We recommend "$action_name$_modalert". + @param level: The logging level. + @param maxBytes: The maximum log file size before rollover. + @param backupCount: The number of log files to retain. + + @return logger: Returns an instance of logger + """ + logfile = make_splunkhome_path(['var', 'log', 'splunk', name + '.log']) + logger = logging.getLogger(name) + logger.setLevel(level) + logger.propagate = False # Prevent the log messages from being duplicated in the python.log file + + # Prevent re-adding handlers to the logger object, which can cause duplicate log lines. + handler_exists = any([True for h in logger.handlers if h.baseFilename == logfile]) + if not handler_exists: + file_handler = logging.handlers.RotatingFileHandler(logfile, maxBytes=maxBytes, backupCount=backupCount) + formatter = logging.Formatter(format) + file_handler.setFormatter(formatter) + logger.addHandler(file_handler) + + return logger diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/__init__.py new file mode 100755 index 0000000000..1123e90e0b --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/__init__.py @@ -0,0 +1,10 @@ +""" +APP Cloud Connect +""" +import os + +from .common.lib_util import register_cacert_locater + +register_cacert_locater(os.path.join(os.path.dirname(__file__), 'core', 'cacerts')) + +__version__ = '1.0.1' diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/client.py b/package/bin/da_ess_contentupdate/cloudconnectlib/client.py new file mode 100755 index 0000000000..7f7bd42b8b --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/client.py @@ -0,0 +1,77 @@ +import copy +import os.path +import traceback + +from .common.log import get_cc_logger +from .common.util import load_json_file +from .configuration import get_loader_by_version +from .core import CloudConnectEngine +from .core.exceptions import ConfigException + +_logger = get_cc_logger() + + +class CloudConnectClient(object): + """The client of cloud connect used to start a cloud connect engine instance. + """ + + def __init__(self, context, config_file, checkpoint_mgr): + """ + Constructs a `CloudConnectClient` with `context` which contains variables + to render template in the configuration parsed from file `config_file`. + :param context: context to render template. + :param config_file: file path for load user passed interface. + """ + self._context = context + self._config_file = config_file + self._engine = None + self._config = None + self._checkpoint_mgr = checkpoint_mgr + + def _load_config(self): + """Load a JSON based configuration definition from file. + :return: A `dict` contains user defined JSON interface. + """ + try: + conf = load_json_file(self._config_file) + except: + raise ConfigException( + 'Unable to load configuration file %s: %s' + % (self._config_file, traceback.format_exc()) + ) + + version = conf.get('meta', {'apiVersion', None}).get('apiVersion', None) + if not version: + raise ConfigException( + 'Config meta or api version not present in {}'.format( + self._config_file)) + + config_loader, schema_file = get_loader_by_version(version) + schema_path = os.path.join( + os.path.dirname(__file__), 'configuration', schema_file) + + return config_loader.load(conf, schema_path, self._context) + + def start(self): + """ + Initialize a new `CloudConnectEngine` instance and start it. + """ + try: + if self._config is None: + self._config = self._load_config() + + self._engine = CloudConnectEngine() + self._engine.start( + context=copy.deepcopy(self._context), + config=self._config, + checkpoint_mgr=self._checkpoint_mgr + ) + except Exception as ex: + _logger.exception('Error while starting client') + raise ex + + def stop(self): + """Stop the current cloud connect engine. + """ + if self._engine: + self._engine.stop() diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/common/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/common/__init__.py new file mode 100755 index 0000000000..e69de29bb2 diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/common/lib_util.py b/package/bin/da_ess_contentupdate/cloudconnectlib/common/lib_util.py new file mode 100755 index 0000000000..08014a492c --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/common/lib_util.py @@ -0,0 +1,54 @@ +import os +import os.path as op +import platform +import sys + +import __main__ + +from ..splunktacollectorlib.common import log as stulog + + +def get_main_file(): + """Return the running mod input file""" + return __main__.__file__ + + +def get_app_root_dir(): + """Return the root dir of app""" + return op.dirname(op.dirname(op.abspath(get_main_file()))) + + +def get_mod_input_script_name(): + """Return the name of running mod input""" + script_name = os.path.basename(get_main_file()) + if script_name.lower().endswith('.py'): + script_name = script_name[:-3] + return script_name + + +def register_module(new_path): + """ register_module(new_path): adds a directory to sys.path. + Do nothing if it does not exist or if it's already in sys.path. + """ + if not os.path.exists(new_path): + return + + new_path = os.path.abspath(new_path) + if platform.system() == 'Windows': + new_path = new_path.lower() + for x in sys.path: + x = os.path.abspath(x) + if platform.system() == 'Windows': + x = x.lower() + if new_path in (x, x + os.sep): + return + sys.path.insert(0, new_path) + + +def register_cacert_locater(cacerts_locater_path): + for x in sys.modules: + if (x == "httplib2" or x.endswith(".httplib2")) and sys.modules[x] \ + is not None: + stulog.logger.warning("Httplib2 module '{}' is already installed. " + "The ca_certs_locater may not work".format(x)) + register_module(cacerts_locater_path) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/common/log.py b/package/bin/da_ess_contentupdate/cloudconnectlib/common/log.py new file mode 100755 index 0000000000..bdc92a2702 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/common/log.py @@ -0,0 +1,32 @@ +import logging + +from solnlib.pattern import Singleton +from ..splunktacollectorlib.common import log as stulog + + +class CloudClientLogAdapter(logging.LoggerAdapter): + __metaclass__ = Singleton + + def __init__(self, logger=None, extra=None, prefix=""): + super(CloudClientLogAdapter, self).__init__(logger, extra) + self.cc_prefix = prefix if prefix else "" + + def process(self, msg, kwargs): + msg = "{} {}".format(self.cc_prefix, msg) + return super(CloudClientLogAdapter, self).process(msg, kwargs) + + def set_level(self, val): + self.logger.setLevel(val) + + +_adapter = CloudClientLogAdapter(stulog.logger) + + +def set_cc_logger(logger, logger_prefix=''): + global _adapter + _adapter.logger = logger + _adapter.cc_prefix = logger_prefix or '' + + +def get_cc_logger(): + return _adapter diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/common/util.py b/package/bin/da_ess_contentupdate/cloudconnectlib/common/util.py new file mode 100755 index 0000000000..1d1133eacd --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/common/util.py @@ -0,0 +1,48 @@ +import json +from ..splunktalib.common import util +from solnlib.modular_input.event import XMLEvent + + +def is_valid_bool(val): + """Check whether a string can be convert to bool. + :param val: value as string. + :return: `True` if value can be convert to bool else `False`. + """ + return util.is_true(val) or util.is_false(val) + + +def is_true(val): + return util.is_true(val) + + +def is_valid_port(port): + """Check whether a port is valid. + :param port: port to check. + :return: `True` if port is valid else `False`. + """ + try: + return 1 <= int(port) <= 65535 + except ValueError: + return False + + +def load_json_file(file_path): + """ + Load a dict from a JSON file. + :param file_path: JSON file path. + :return: A `dict` object. + """ + with open(file_path, 'r') as file_pointer: + return json.load(file_pointer) + + +def format_events(raw_events, time=None, + index=None, host=None, source=None, sourcetype=None, + stanza=None, unbroken=False, done=False): + return XMLEvent.format_events(XMLEvent(data, time=time, + index=index, host=host, + source=source, + sourcetype=sourcetype, + stanza=stanza, unbroken=unbroken, + done=done) for data in + raw_events) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/__init__.py new file mode 100755 index 0000000000..4b1c2b18a9 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/__init__.py @@ -0,0 +1 @@ +from .loader import get_loader_by_version diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/loader.py b/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/loader.py new file mode 100755 index 0000000000..6db9db7af6 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/loader.py @@ -0,0 +1,300 @@ +import logging +import re +import traceback +from abc import abstractmethod + +from jsonschema import validate, ValidationError +from munch import munchify +from ..common.log import get_cc_logger +from ..common.util import ( + load_json_file, is_valid_bool, is_valid_port, is_true +) +from ..core.exceptions import ConfigException +from ..core.ext import lookup_method +from ..core.models import ( + BasicAuthorization, Request, Processor, + Condition, Task, Checkpoint, IterationMode, + DictToken +) + +_logger = get_cc_logger() + +_PROXY_TYPES = ['http', 'socks4', 'socks5', 'http_no_tunnel'] +_AUTH_TYPES = { + 'basic_auth': BasicAuthorization +} + +_LOGGING_LEVELS = { + 'DEBUG': logging.DEBUG, + 'INFO': logging.INFO, + 'WARNING': logging.WARNING, + 'ERROR': logging.ERROR, + 'FATAL': logging.FATAL, + 'CRITICAL': logging.CRITICAL +} + +# FIXME Make this configurable +_DEFAULT_LOG_LEVEL = 'INFO' + + +class CloudConnectConfigLoader(object): + """The Base cloud connect configuration loader""" + + @staticmethod + def _get_schema_from_file(schema_file): + """ Load JSON based schema definition from schema file path. + :return: A `dict` contains schema. + """ + try: + return load_json_file(schema_file) + except: + raise ConfigException( + 'Cannot load schema from file {}: {}'.format( + schema_file, traceback.format_exc()) + ) + + @abstractmethod + def load(self, definition, schema_file, context): + pass + + +class CloudConnectConfigLoaderV1(CloudConnectConfigLoader): + @staticmethod + def _render_from_dict(source, ctx): + rendered = DictToken(source).render(ctx) + + return dict((k, v.strip() if isinstance(v, basestring) else v) + for k, v in rendered.iteritems()) + + def _load_proxy(self, candidate, variables): + """ + Render and validate proxy setting with given variables. + :param candidate: raw proxy setting as `dict` + :param variables: variables to render template in proxy setting. + :return: A `dict` contains rendered proxy setting. + """ + if not candidate: + return {} + + proxy = self._render_from_dict(candidate, variables) + + enabled = proxy.get('enabled', '0') + if not is_valid_bool(enabled): + raise ValueError( + 'Proxy "enabled" expect to be bool type: {}'.format(enabled) + ) + + proxy['enabled'] = is_true(enabled) + + host, port = proxy.get('host'), proxy.get('port') + + if host or port: + if not host: + raise ValueError('Proxy "host" must not be empty') + + if not is_valid_port(port): + raise ValueError( + 'Proxy "port" expect to be in range [1,65535]: %s' % port + ) + + # proxy type default to 'http' + proxy_type = proxy.get('type') + proxy_type = proxy_type.lower() if proxy_type else 'http' + if proxy_type not in _PROXY_TYPES: + raise ValueError( + 'Proxy "type" expect to be one of [{}]: {}'.format( + ','.join(_PROXY_TYPES), proxy_type) + ) + else: + proxy['type'] = proxy_type + + # proxy rdns default to '0' + proxy_rdns = proxy.get('rdns', '0') + if not is_valid_bool(proxy_rdns): + raise ValueError( + 'Proxy "rdns" expect to be bool type: {}'.format(proxy_rdns) + ) + else: + proxy['rdns'] = is_true(proxy_rdns) + + return proxy + + @staticmethod + def _get_log_level(level_name): + if level_name: + level_name = level_name.upper().strip() + + for k, v in _LOGGING_LEVELS.iteritems(): + if k.startswith(level_name): + return v + + _logger.warning( + 'The log level "%s" is invalid, set it to default: "%s"', + level_name, _DEFAULT_LOG_LEVEL + ) + + return _LOGGING_LEVELS[_DEFAULT_LOG_LEVEL] + + def _load_logging(self, log_setting, variables): + logger = self._render_from_dict(log_setting, variables) + + logger['level'] = self._get_log_level(logger.get('level')) + + return logger + + def _load_global_setting(self, candidate, variables): + """ + Load and render global setting with variables. + :param candidate: Global setting as a `dict` + :param variables: variables from context to render setting + :return: A `Munch` object + """ + candidate = candidate or {} + proxy_setting = self._load_proxy(candidate.get('proxy'), variables) + log_setting = self._load_logging(candidate.get('logging'), variables) + + return munchify({'proxy': proxy_setting, 'logging': log_setting}) + + @staticmethod + def _load_authorization(candidate): + if candidate is None: + return None + auth_type = candidate['type'].lower() + + if auth_type not in _AUTH_TYPES: + raise ValueError( + 'Auth type expect to be one of [{}]: {}'.format( + ','.join(_AUTH_TYPES.keys()), auth_type) + ) + return _AUTH_TYPES[auth_type](candidate['options']) + + def _load_options(self, options): + return Request( + auth=self._load_authorization(options.get('auth')), + url=options['url'], + method=options.get('method', 'GET'), + header=options.get('headers', {}), + body=options.get('body', {}) + ) + + @staticmethod + def _validate_method(method): + if lookup_method(method) is None: + raise ValueError('Unimplemented method: {}'.format(method)) + + def _parse_tasks(self, raw_tasks): + tasks = [] + for item in raw_tasks: + self._validate_method(item['method']) + tasks.append(Task(item['input'], item['method'], item.get('output'))) + return tasks + + def _parse_conditions(self, raw_conditions): + conditions = [] + for item in raw_conditions: + self._validate_method(item['method']) + conditions.append(Condition(item['input'], item['method'])) + return conditions + + @staticmethod + def _load_checkpoint(checkpoint): + if not checkpoint: + return None + return Checkpoint( + checkpoint.get('namespace', []), checkpoint['content']) + + def _load_iteration_mode(self, iteration_mode): + count = iteration_mode.get('iteration_count', '0') + try: + iteration_count = int(count) + except ValueError: + raise ValueError( + '"iteration_count" must be an integer: %s' % count) + + stop_conditions = self._parse_conditions( + iteration_mode['stop_conditions']) + + return IterationMode(iteration_count=iteration_count, + conditions=stop_conditions) + + def _load_processor(self, processor): + skip_conditions = self._parse_conditions( + processor.get('skip_conditions', []) + ) + pipeline = self._parse_tasks(processor.get('pipeline', [])) + return Processor( + skip_conditions=skip_conditions, + pipeline=pipeline + ) + + def _load_request(self, request): + options = self._load_options(request['request']) + + pre_process = self._load_processor(request.get('pre_process', {})) + post_process = self._load_processor(request['post_process']) + checkpoint = self._load_checkpoint(request.get('checkpoint')) + iteration_mode = self._load_iteration_mode(request['iteration_mode']) + + return munchify({ + 'request': options, + 'pre_process': pre_process, + 'post_process': post_process, + 'checkpoint': checkpoint, + 'iteration_mode': iteration_mode, + }) + + def load(self, definition, schema_file, context): + """Load cloud connect configuration from a `dict` and validate + it with schema and global settings will be rendered. + :param schema_file: Schema file location used to validate config. + :param definition: A dictionary contains raw configs. + :param context: variables to render template in global setting. + :return: A `Munch` object. + """ + try: + validate(definition, self._get_schema_from_file(schema_file)) + except ValidationError: + raise ConfigException( + 'Failed to validate interface with schema: {}'.format( + traceback.format_exc())) + + try: + global_settings = self._load_global_setting( + definition.get('global_settings'), context + ) + + requests = [self._load_request(item) for item in definition['requests']] + + return munchify({ + 'meta': munchify(definition['meta']), + 'tokens': definition['tokens'], + 'global_settings': global_settings, + 'requests': requests, + }) + except Exception as ex: + error = 'Unable to load configuration: %s' % str(ex) + _logger.exception(error) + raise ConfigException(error) + + +_loader_and_schema_by_version = { + r'1\.0\.0': (CloudConnectConfigLoaderV1, 'schema_1_0_0.json'), +} + + +def get_loader_by_version(version): + """ Instantiate a configuration loader on basis of a given version. + A `ConfigException` will raised if the version is not supported. + :param version: Version to lookup config loader. + :return: A config loader. + """ + for support_version in _loader_and_schema_by_version: + if re.match(support_version, version): + loader_cls, schema = _loader_and_schema_by_version[support_version] + return loader_cls(), schema + + raise ConfigException( + 'Unsupported schema version {}, current supported' + ' versions should match these regex [{}]'.format(version, ','.join( + _loader_and_schema_by_version)) + ) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/schema_1_0_0.json b/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/schema_1_0_0.json new file mode 100755 index 0000000000..92b80aa08c --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/configuration/schema_1_0_0.json @@ -0,0 +1,344 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "definitions": { + "Authentication": { + "additionalProperties": false, + "properties": { + "options": { + "type": "object" + }, + "type": { + "enum": [ + "digest", + "basic_auth" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "Checkpoint": { + "additionalProperties": false, + "properties": { + "content": { + "type": "object" + }, + "namespace": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "content" + ], + "type": "object" + }, + "GlobalSettings": { + "additionalProperties": false, + "properties": { + "logging": { + "properties": { + "level": { + "type": "string" + } + }, + "type": "object" + }, + "proxy": { + "$ref": "#/definitions/Proxy" + } + }, + "type": "object" + }, + "IterationMode": { + "additionalProperties": false, + "properties": { + "iteration_count": { + "oneOf": [ + { + "pattern": "^[+-]?[1-9]\\d*|0$", + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "stop_conditions": { + "items": { + "additionalProperties": false, + "properties": { + "input": { + "items": { + "type": "string" + }, + "type": "array" + }, + "method": { + "type": "string" + } + }, + "required": [ + "input", + "method" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "Meta": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "pattern": "(?:\\d{1,3}\\.){2}[\\w\\-]{1,15}", + "type": "string" + } + }, + "required": [ + "apiVersion" + ], + "type": "object" + }, + "Proxy": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": false, + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "integer" + } + ] + }, + "host": { + "type": "string" + }, + "password": { + "type": "string" + }, + "port": { + "oneOf": [ + { + "type": "string" + }, + { + "exclusiveMaximum": true, + "exclusiveMinimum": true, + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + ] + }, + "rdns": { + "type": "string" + }, + "type": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": [ + "host", + "port" + ], + "type": "object" + }, + "Request": { + "additionalProperties": false, + "properties": { + "checkpoint": { + "$ref": "#/definitions/Checkpoint" + }, + "iteration_mode": { + "$ref": "#/definitions/IterationMode" + }, + "post_process": { + "additionalProperties": false, + "properties": { + "pipeline": { + "items": { + "additionalProperties": false, + "properties": { + "input": { + "items": { + "type": "string" + }, + "type": "array" + }, + "method": { + "type": "string" + }, + "output": { + "type": "string" + } + }, + "required": [ + "input", + "method" + ], + "type": "object" + }, + "type": "array" + }, + "skip_conditions": { + "items": { + "additionalProperties": false, + "properties": { + "input": { + "items": { + "type": "string" + }, + "type": "array" + }, + "method": { + "type": "string" + } + }, + "required": [ + "input", + "method" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "pre_process": { + "additionalProperties": false, + "properties": { + "pipeline": { + "items": { + "additionalProperties": false, + "properties": { + "input": { + "items": { + "type": "string" + }, + "type": "array" + }, + "method": { + "type": "string" + }, + "output": { + "type": "string" + } + }, + "required": [ + "input", + "method" + ], + "type": "object" + }, + "type": "array" + }, + "skip_conditions": { + "items": { + "additionalProperties": false, + "properties": { + "input": { + "items": { + "type": "string" + }, + "type": "array" + }, + "method": { + "type": "string" + } + }, + "required": [ + "input", + "method" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "request": { + "additionalProperties": false, + "properties": { + "auth": { + "$ref": "#/definitions/Authentication" + }, + "body": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "method": { + "default": "GET", + "enum": [ + "GET", + "POST" + ], + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + }, + "required": [ + "request", + "post_process", + "iteration_mode" + ], + "type": "object" + } + }, + "properties": { + "global_settings": { + "$ref": "#/definitions/GlobalSettings" + }, + "meta": { + "$ref": "#/definitions/Meta" + }, + "requests": { + "items": { + "$ref": "#/definitions/Request" + }, + "minItems": 1, + "type": "array" + }, + "tokens": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "meta", + "tokens", + "requests" + ], + "type": "object" +} diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/__init__.py new file mode 100755 index 0000000000..c2424fb1ad --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/__init__.py @@ -0,0 +1,2 @@ +from .engine import CloudConnectEngine +from .exceptions import ConfigException, HTTPError diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/cacerts/ca_certs_locater.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/cacerts/ca_certs_locater.py new file mode 100755 index 0000000000..7d8cd5b8c9 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/cacerts/ca_certs_locater.py @@ -0,0 +1,130 @@ +""" +`ca_certs_locater` is a lib for extending httplib2 to allow system certificate store to be used when +verifying SSL certificates, to enable this lib, you should add it to your python import path before +initializing httplib2. As we're not trying to implement SSL certificate RFCs, parsing and validating +certificates are not included. +""" + +import atexit +import os +import os.path as op +import ssl +import sys + +TEMP_CERT_FILE_NAME = 'httplib2_merged_certificates_{}.crt' +LINUX_CERT_PATH_1 = '/etc/pki/tls/certs/ca-bundle.crt' # RedHat +LINUX_CERT_PATH_2 = '/etc/ssl/certs/ca-certificates.crt' # Debian +DARWIN_CERT_PATH = '/usr/local/etc/openssl/cert.pem' +HTTPLIB2_CA_CERT_FILE_NAME = 'cacerts.txt' + +TEMP_CERT_FILE_PATH = None + + +def get(): + """ + Returns: a path to generated certificate authority file + + """ + try: + return _get() + except (IOError, OSError, ssl.SSLError): + _fallback() # IO and SSL relative errors should be swallowed to protect the HTTP request + + +def _get(): + global TEMP_CERT_FILE_PATH + # also check file existence as it's possible for the temp file to be deleted + if TEMP_CERT_FILE_PATH is None or not os.path.exists(TEMP_CERT_FILE_PATH): + temp_cert_file_path = _generate_temp_cert_file_name() + ssl_ca_certs = _read_ssl_default_ca_certs() + if not ssl_ca_certs: + # it's possible the ca load path is not well configured, try some typical paths + ssl_ca_certs = _read_platform_pem_cert_file() + + if ssl_ca_certs: # only update temp cert file when there's additional PEM certs found + cert_files = [ssl_ca_certs, _read_httplib2_default_certs()] + _update_temp_cert_file(temp_cert_file_path, cert_files) + TEMP_CERT_FILE_PATH = temp_cert_file_path + else: + _fallback() + + return TEMP_CERT_FILE_PATH + + +def _fallback(): + """ + Give up the loading process by throwing specified exception, httplib2 will then use its + bundled certificates + """ + raise ImportError('Unable to load system certificate authority files') + + +def _read_platform_pem_cert_file(): + if sys.platform.startswith('linux'): + pem_files = [_read_pem_file(LINUX_CERT_PATH_1), _read_pem_file(LINUX_CERT_PATH_2)] + return '\n'.join(filter(None, pem_files)) + elif sys.platform.startswith('darwin'): + return _read_pem_file(DARWIN_CERT_PATH) + else: + return "" + + +def _read_ssl_default_ca_certs(): + # it's not guaranteed to return PEM formatted certs when `binary_form` is False + der_certs = ssl.create_default_context().get_ca_certs(binary_form=True) + pem_certs = [ssl.DER_cert_to_PEM_cert(der_cert_bytes) for der_cert_bytes in der_certs] + return '\n'.join(pem_certs) + + +def _read_httplib2_default_certs(): + import httplib2 # import error should not happen here, and will be well handled by outer called + httplib_dir = os.path.dirname(os.path.abspath(httplib2.__file__)) + ca_certs_path = os.path.join(httplib_dir, HTTPLIB2_CA_CERT_FILE_NAME) + return _read_pem_file(ca_certs_path) + + +def _read_pem_file(path): + if os.path.exists(path): + with open(path, mode='r') as pem_file: + return pem_file.read() + else: + return "" + + +def _update_temp_cert_file(temp_file, pem_texts): + with open(temp_file, mode='w') as temp_cert_file: + for pem_text in pem_texts: + if len(pem_text) > 0: + temp_cert_file.write(pem_text + '\n') + temp_cert_file.flush() + atexit.register(_do_safe_remove, temp_file) + + +def _do_safe_remove(file_path): + if os.path.exists(file_path): + try: + os.remove(file_path) + except: + pass + + +def _get_temp_cert_file_dir(): + import __main__ + app_root = op.dirname(op.dirname(op.abspath(__main__.__file__))) + + temp_dir = op.join(app_root, 'temp_certs') + if not op.isdir(temp_dir): + try: + os.mkdir(temp_dir) + except: + pass + for candidate in ['temp_certs', 'local', 'default']: + dir_path = op.join(app_root, candidate) + if op.isdir(dir_path): + return dir_path + return app_root + + +def _generate_temp_cert_file_name(): + file_name = TEMP_CERT_FILE_NAME.format(os.getpid()) + return os.path.join(_get_temp_cert_file_dir(), file_name) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/defaults.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/defaults.py new file mode 100755 index 0000000000..84d7989722 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/defaults.py @@ -0,0 +1,20 @@ +"""Default config for cloud connect""" + +timeout = 120 # request timeout is two minutes + +disable_ssl_cert_validation = False # default enable SSL validation + +success_statuses = (200, 201) # statuses be treated as success. + +# response status which need to retry. +retry_statuses = (429, 500, 501, 502, 503, 504, 505, 506, 507, + 509, 510, 511) + +# response status which need print a warning log. +warning_statuses = (203, 204, 205, 206, 207, 208, 226, + 300, 301, 302, 303, 304, 305, 306, 307, 308) +retries = 3 # Default maximum retry times. + +max_iteration_count = 100 # maximum iteration loop count + +charset = 'utf-8' # Default response charset if not found in response header diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/engine.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/engine.py new file mode 100755 index 0000000000..d474544fee --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/engine.py @@ -0,0 +1,327 @@ +import json +import threading + +from . import defaults +from .exceptions import HTTPError, StopCCEIteration +from .http import HTTPRequest +from ..common.log import get_cc_logger + +_logger = get_cc_logger() + + +class CloudConnectEngine(object): + """The cloud connect engine to process request instantiated + from user options.""" + + def __init__(self): + self._stopped = False + self._running_job = None + + @staticmethod + def _set_logging(log_setting): + _logger.set_level(log_setting.level) + + def start(self, context, config, checkpoint_mgr): + """Start current client instance to execute each request parsed + from config. + """ + if not config: + raise ValueError('Config must not be empty') + + context = context or {} + global_setting = config.global_settings + + CloudConnectEngine._set_logging(global_setting.logging) + + _logger.info('Start to execute requests jobs.') + processed = 0 + + for request in config.requests: + job = Job( + request=request, + context=context, + checkpoint_mgr=checkpoint_mgr, + proxy=global_setting.proxy, + ) + self._running_job = job + job.run() + + processed += 1 + _logger.info('%s job(s) process finished', processed) + + if self._stopped: + _logger.info( + 'Engine has been stopped, stopping to execute jobs.') + break + + self._stopped = True + _logger.info('Engine executing finished') + + def stop(self): + """Stops engine and running job. Do nothing if engine already + been stopped.""" + if self._stopped: + _logger.info('Engine already stopped, do nothing.') + return + + _logger.info('Stopping engine') + + if self._running_job: + _logger.info('Attempting to stop the running job.') + self._running_job.terminate() + _logger.info('Stopping job finished.') + + self._stopped = True + + +class Job(object): + """Job class represents a single request to send HTTP request until + reached it's stop condition. + """ + + def __init__(self, request, context, checkpoint_mgr, proxy=None): + """ + Constructs a `Job` with properties request, context and a + optional proxy setting. + :param request: A `Request` instance which contains request settings. + :param context: A values set contains initial values for template + variables. + :param proxy: A optional `Proxy` object contains proxy related + settings. + """ + self._request = request + self._context = context + self._checkpoint_mgr = checkpoint_mgr + self._client = HTTPRequest(proxy) + self._stopped = True + self._should_stop = False + + self._request_iterated_count = 0 + self._iteration_mode = self._request.iteration_mode + self._max_iteration_count = self._get_max_iteration_count() + + self._running_thread = None + self._terminated = threading.Event() + + def _get_max_iteration_count(self): + mode_max_count = self._iteration_mode.iteration_count + default_max_count = defaults.max_iteration_count + return min(default_max_count, mode_max_count) \ + if mode_max_count > 0 else default_max_count + + def terminate(self, block=True, timeout=30): + """Terminate this job, the current thread will blocked util + the job is terminate finished if block is True """ + if self.is_stopped(): + _logger.info('Job already been stopped.') + return + + if self._running_thread == threading.current_thread(): + _logger.warning('Job cannot terminate itself.') + return + + _logger.info('Stopping job') + self._should_stop = True + + if not block: + return + if not self._terminated.wait(timeout): + _logger.warning('Terminating job timeout.') + + def _set_context(self, key, value): + self._context[key] = value + + def _execute_tasks(self, tasks): + if not tasks: + return + for task in tasks: + if self._check_should_stop(): + return + self._context.update(task.execute(self._context)) + + def _on_pre_process(self): + """ + Execute tasks in pre process one by one if condition satisfied. + """ + pre_processor = self._request.pre_process + + if pre_processor.should_skipped(self._context): + _logger.info('Skip pre process condition satisfied, do nothing') + return + + tasks = pre_processor.pipeline + _logger.debug( + 'Got %s tasks need be executed before process', len(tasks)) + self._execute_tasks(tasks) + + def _on_post_process(self): + """ + Execute tasks in post process one by one if condition satisfied. + """ + post_processor = self._request.post_process + + if post_processor.should_skipped(self._context): + _logger.info('Skip post process condition satisfied, ' + 'do nothing') + return + + tasks = post_processor.pipeline + _logger.debug( + 'Got %s tasks need to be executed after process', len(tasks) + ) + self._execute_tasks(tasks) + + def _update_checkpoint(self): + """Updates checkpoint based on checkpoint namespace and content.""" + checkpoint = self._request.checkpoint + if not checkpoint: + _logger.info('Checkpoint not specified, do not update it.') + return + + self._checkpoint_mgr.update_ckpt( + checkpoint.normalize_content(self._context), + namespaces=checkpoint.normalize_namespace(self._context), + ) + + def _get_checkpoint(self): + checkpoint = self._request.checkpoint + if not checkpoint: + _logger.info('Checkpoint not specified, do not read it.') + return + + namespaces = checkpoint.normalize_namespace(self._context) + checkpoint = self._checkpoint_mgr.get_ckpt(namespaces) + if checkpoint: + self._context.update(checkpoint) + + def _is_stoppable(self): + """Check if repeat mode conditions satisfied.""" + if self._request_iterated_count >= self._max_iteration_count: + _logger.info( + 'Job iteration count is %s, current request count is %s,' + ' stop condition satisfied.', + self._max_iteration_count, self._request_iterated_count + ) + return True + + if self._iteration_mode.passed(self._context): + _logger.info('Job stop condition satisfied.') + return True + + return False + + def is_stopped(self): + """Return if this job is stopped.""" + return self._stopped + + def run(self): + """Start job and exit util meet stop condition. """ + _logger.info('Start to process job') + + self._stopped = False + try: + self._running_thread = threading.current_thread() + self._run() + except Exception: + _logger.exception('Error encountered while running job.') + raise + finally: + self._terminated.set() + self._stopped = True + + _logger.info('Job processing finished') + + def _check_should_stop(self): + if self._should_stop: + _logger.info('Job should been stopped.') + return self._should_stop + + def _run(self): + request = self._request.request + method = request.method + authorizer = request.auth + self._get_checkpoint() + + while 1: + if self._check_should_stop(): + return + + try: + self._on_pre_process() + except StopCCEIteration: + _logger.info('Stop iteration command in pre process is received, exit job now.') + return + + url = request.normalize_url(self._context) + header = request.normalize_header(self._context) + body = request.normalize_body(self._context) + body_json = json.dumps(body) if body else None + + if authorizer: + authorizer(header, self._context) + + if self._check_should_stop(): + return + + response, need_terminate = \ + self._send_request(url, method, header, body=body_json) + + if need_terminate: + _logger.info('This job need to be terminated.') + break + + self._request_iterated_count += 1 + self._set_context('__response__', response) + if self._check_should_stop(): + return + + try: + self._on_post_process() + except StopCCEIteration: + _logger.info('Stop iteration command in post process is received, exit job now.') + return + + if self._check_should_stop(): + return + self._update_checkpoint() + + if self._is_stoppable(): + _logger.info('Stop condition reached, exit job now') + break + + def _send_request(self, url, method, header, body): + """Do send request with a simple error handling strategy. Refer to + https://confluence.splunk.com/display/PROD/CC+1.0+-+Detail+Design""" + try: + response = self._client.request( + url, method, headers=header, body=body + ) + except HTTPError as error: + _logger.exception( + 'HTTPError reason=%s when sending request to ' + 'url=%s method=%s', error.reason, url, method) + return None, True + + status = response.status_code + + if status in defaults.success_statuses: + if not (response.body or '').strip(): + _logger.info( + 'The response body of request which url=%s and' + ' method=%s is empty, status=%s.', + url, method, status + ) + return None, True + return response, False + + error_log = ('The response status=%s for request which url=%s and' + ' method=%s.') % ( + status, url, method + ) + + if status in defaults.warning_statuses: + _logger.warning(error_log) + else: + _logger.error(error_log) + + return None, True diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/exceptions.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/exceptions.py new file mode 100755 index 0000000000..ebe30cae7d --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/exceptions.py @@ -0,0 +1,27 @@ +"""APP Cloud Connect errors""" + + +class ConfigException(Exception): + """Config exception""" + pass + + +class FuncException(Exception): + """Ext function call exception""" + pass + + +class HTTPError(Exception): + """ HTTPError raised when HTTP request returned a error.""" + + def __init__(self, reason=None): + """ + Initialize HTTPError with `response` object and `status`. + """ + self.reason = reason + super(HTTPError, self).__init__(reason) + + +class StopCCEIteration(Exception): + """Exception to exit from the engine iteration.""" + pass diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/ext.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/ext.py new file mode 100755 index 0000000000..72bce1dc61 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/ext.py @@ -0,0 +1,336 @@ +import calendar +import json +import re +import traceback +from datetime import datetime + +from jsonpath_rw import parse +from .exceptions import FuncException, StopCCEIteration +from .pipemgr import PipeManager +from ..common import util, log + +_logger = log.get_cc_logger() + + +def regex_match(pattern, source, flags=0): + """ + Determine whether a string is match a regex pattern. + + :param pattern: regex pattern + :param source: candidate to match regex + :param flags: flags for regex match + :return: `True` if candidate match pattern else `False` + """ + try: + return re.match(pattern, source, flags) is not None + except Exception: + _logger.warning( + 'Unable to match source with pattern=%s, cause=%s', + pattern, + traceback.format_exc() + ) + return False + + +def regex_not_match(pattern, source, flags=0): + """ + Determine whether a string is not match a regex pattern. + + :param pattern: regex expression + :param source: candidate to match regex + :param flags: flags for regex match + :return: `True` if candidate not match pattern else `False` + """ + return not regex_match(pattern, source, flags) + + +def json_path(source, json_path_expr): + """ Extract value from string with JSONPATH expression. + :param json_path_expr: JSONPATH expression + :param source: string to extract value + :return: A `list` contains all values extracted + """ + if not source: + _logger.debug('source to apply JSONPATH is empty, return empty.') + return '' + + if isinstance(source, basestring): + _logger.debug( + 'source expected is a JSON, not %s. Attempt to' + ' convert it to JSON', + type(source) + ) + try: + source = json.loads(source) + except Exception as ex: + _logger.warning( + 'Unable to load JSON from source: %s. ' + 'Attempt to apply JSONPATH "%s" on source directly.', + ex.message, + json_path_expr + ) + + try: + expression = parse(json_path_expr) + results = [match.value for match in expression.find(source)] + + _logger.debug( + 'Got %s elements extracted with JSONPATH expression "%s"', + len(results), json_path_expr + ) + + if not results: + return '' + + return results[0] or '' if len(results) == 1 else results + except Exception as ex: + _logger.warning( + 'Unable to apply JSONPATH expression "%s" on source,' + ' message=%s cause=%s', + json_path_expr, + ex.message, + traceback.format_exc() + ) + return '' + + +def splunk_xml(candidates, + time=None, + index=None, + host=None, + source=None, + sourcetype=None): + """ Wrap a event with splunk xml format. + :param candidates: data used to wrap as event + :param time: timestamp which must be empty or a valid float + :param index: index name for event + :param host: host for event + :param source: source for event + :param sourcetype: sourcetype for event + :return: A wrapped event with splunk xml format. + """ + if not isinstance(candidates, (list, tuple)): + candidates = [candidates] + + time = time or None + if time: + try: + time = float(time) + except ValueError: + _logger.warning( + '"time" %s is expected to be a float, set "time" to None', + time + ) + time = None + + return util.format_events( + candidates, + time=time, + index=index, + host=host, + source=source, + sourcetype=sourcetype + ) + + +def std_output(candidates): + """ Output a string to stdout. + :param candidates: List of string to output to stdout or a single string. + """ + if isinstance(candidates, basestring): + candidates = [candidates] + + all_str = True + for candidate in candidates: + if all_str and not isinstance(candidate, basestring): + all_str = False + _logger.warning( + 'The type of data needs to print is "%s" rather than' + ' basestring', + type(candidate) + ) + + if not PipeManager().write_events(candidate): + raise FuncException('Fail to output data to stdout. The event' + ' writer is stopped or encountered exception') + + _logger.debug('Writing events to stdout finished.') + return True + + +def _parse_json(source, json_path_expr=None): + if not source: + _logger.debug('Unable to parse JSON from empty source, return empty.') + return {} + + if json_path_expr: + _logger.debug( + 'Try to extract JSON from source with JSONPATH expression: %s, ', + json_path_expr + ) + source = json_path(source, json_path_expr) + + elif isinstance(source, basestring): + source = json.loads(source) + + return source + + +def json_empty(source, json_path_expr=None): + """Check whether a JSON is empty, return True only if the JSON to + check is a valid JSON and is empty. + :param json_path_expr: A optional JSONPATH expression + :param source: source to extract JSON + :return: `True` if the result JSON is empty + """ + try: + data = _parse_json(source, json_path_expr) + + if isinstance(data, (list, tuple)): + return all(len(ele) == 0 for ele in data) + return len(data) == 0 + except Exception as ex: + _logger.warning( + 'Unable to determine whether source is json_empty, treat it as ' + 'not json_empty: %s', ex.message + ) + return False + + +def json_not_empty(source, json_path_expr=None): + """Check if a JSON object is not empty, return True only if the + source is a valid JSON object and the value leading by + json_path_expr is empty. + :param json_path_expr: A optional JSONPATH expression + :param source: source to extract JSON + :return: `True` if the result JSON is not empty + """ + try: + data = _parse_json(source, json_path_expr) + + if isinstance(data, (list, tuple)): + return any(len(ele) > 0 for ele in data) + return len(data) > 0 + except Exception as ex: + _logger.warning( + 'Unable to determine whether source is json_not_empty, ' + 'treat it as not json_not_empty: %s', + ex.message + ) + return False + + +def set_var(value): + """Set a variable which name should be specified in `output` with value""" + return value + + +def _fix_microsecond_format(fmt, micros): + """ + implement %Nf so that user can control the digital number of microsecond. + If number of % is even, don't do replacement. + If N is not in [1-6], don't do replacement. + If time length m is less than N, convert it to 6 digitals and return N + digitals. + """ + micros = str(micros).zfill(6) + + def do_replacement(x, micros): + if int(x.group(1)) in range(1, 7) and len(x.group()) % 2: + return x.group().replace('%' + x.group(1) + 'f', + micros[:min(int(x.group(1)), len(micros))]) + return x.group() + + return re.sub(r'%+([1-6])f', lambda x: do_replacement(x, micros), fmt) + + +def _fix_timestamp_format(fmt, timestamp): + """Replace '%s' in time format with timestamp if the number + of '%' before 's' is odd.""" + return re.sub( + r'%+s', + ( + lambda x: + x.group() if len(x.group()) % 2 else x.group().replace('%s', + timestamp) + ), + fmt + ) + + +def time_str2str(date_string, from_format, to_format): + """Convert a date string with given format to another format. Return + the original date string if it's type is not string or failed to parse or + convert it with format.""" + if not isinstance(date_string, basestring): + _logger.warning( + '"date_string" must be a string type, found %s,' + ' return the original date_string directly.', + type(date_string) + ) + return date_string + + try: + dt = datetime.strptime(date_string, from_format) + # Need to pre process '%s' in to_format here because '%s' is not + # available on all platforms. Even on supported platforms, the + # result may be different because it depends on implementation on each + # platform. Replace it with UTC timestamp here directly. + if to_format: + timestamp = calendar.timegm(dt.timetuple()) + to_format = _fix_timestamp_format(to_format, str(timestamp)) + to_format = _fix_microsecond_format(to_format, str(dt.microsecond)) + return dt.strftime(to_format) + except Exception: + _logger.warning( + 'Unable to convert date_string "%s" from format "%s" to "%s",' + ' return the original date_string, cause=%s', + date_string, + from_format, + to_format, + traceback.format_exc() + ) + return date_string + + +def is_true(value): + """Determine whether value is True""" + return str(value).strip().lower() == 'true' + + +def exit_if_true(value): + """Raise a StopCCEIteration exception if value is True""" + if is_true(value): + raise StopCCEIteration + + +def assert_true(value, message=None): + """Assert value is True""" + if not is_true(value): + raise AssertionError( + message or '"{value}" is not true'.format(value=value) + ) + + +_extension_functions = { + 'assert_true': assert_true, + 'exit_if_true': exit_if_true, + 'is_true': is_true, + 'regex_match': regex_match, + 'regex_not_match': regex_not_match, + 'set_var': set_var, + 'splunk_xml': splunk_xml, + 'std_output': std_output, + 'json_path': json_path, + 'json_empty': json_empty, + 'json_not_empty': json_not_empty, + 'time_str2str': time_str2str, +} + + +def lookup_method(name): + """ Find a predefined function with given function name. + :param name: function name. + :return: A function with given name. + """ + return _extension_functions.get(name) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/http.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/http.py new file mode 100755 index 0000000000..b7cd2dc94e --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/http.py @@ -0,0 +1,234 @@ +import time +import traceback + +from httplib2 import ProxyInfo, Http, socks, SSLHandshakeError +from solnlib.packages.requests import PreparedRequest, utils +from . import defaults +from .exceptions import HTTPError +from ..common.log import get_cc_logger + +_logger = get_cc_logger() + + +class HTTPResponse(object): + """ + HTTPResponse class wraps response of HTTP request for later use. + """ + + def __init__(self, response, content): + """Construct a HTTPResponse from response and content returned + with httplib2 request""" + self._status_code = response.status + self._header = response + self._body = self._decode_content(response, content) + + @staticmethod + def _decode_content(response, content): + if not content: + return '' + + charset = utils.get_encoding_from_headers(response) + + if charset is None: + charset = defaults.charset + _logger.info( + 'Unable to find charset in response headers,' + ' set it to default "%s"', charset + ) + + _logger.info('Decoding response content with charset=%s', charset) + + try: + return content.decode(charset, errors='replace') + except Exception as ex: + _logger.warning( + 'Failure decoding response content with charset=%s,' + ' decode it with utf-8: %s', + charset, ex.message + ) + + return content.decode('utf-8', errors='replace') + + @property + def header(self): + return self._header + + @property + def body(self): + """ + Return response body as a `string`. + :return: A `string` + """ + return self._body + + @property + def status_code(self): + """ + Return response status code. + :return: A `integer` + """ + return self._status_code + + +def _make_prepare_url_func(): + """Expose prepare_url in `PreparedRequest`""" + pr = PreparedRequest() + + def prepare_url(url, params=None): + """Prepare the given HTTP URL with ability provided in requests lib. + For some illegal characters in URL or parameters like space(' ') will + be escaped to make sure we can request the correct URL.""" + pr.prepare_url(url, params=params) + return pr.url + + return prepare_url + + +class HTTPRequest(object): + """ + HTTPRequest class represents a single request to send HTTP request until + reached it's stop condition. + """ + + _PROXY_TYPE = { + 'http': socks.PROXY_TYPE_HTTP, + 'http_no_tunnel': socks.PROXY_TYPE_HTTP_NO_TUNNEL, + 'socks4': socks.PROXY_TYPE_SOCKS4, + 'socks5': socks.PROXY_TYPE_SOCKS5, + } + + def __init__(self, proxy=None): + """Constructs a `HTTPRequest` with a optional proxy setting. + :param proxy: A optional `Proxy` object contains proxy related + settings. + """ + self._proxy_info = self._prepare_proxy_info(proxy) + self._connection = None + self._prepare_url_func = _make_prepare_url_func() + + def _send_request(self, uri, method, headers=None, body=None): + """Do send request to target URL and validate SSL cert by default. + If validation failed, disable it and try again.""" + if self._connection is None: + self._connection = self._build_http_connection( + proxy_info=self._proxy_info, + disable_ssl_cert_validation=False) + + try: + return self._connection.request( + uri, body=body, method=method, headers=headers + ) + except SSLHandshakeError: + _logger.warning( + "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verification failed. " + "The certificate of the https server [%s] is not trusted, " + "this add-on will proceed to connect with this certificate. " + "You may need to check the certificate and " + "refer to the documentation and add it to the trust list. %s", + uri, + traceback.format_exc() + ) + + self._connection = self._build_http_connection( + proxy_info=self._proxy_info, + disable_ssl_cert_validation=True + ) + return self._connection.request( + uri, body=body, method=method, headers=headers + ) + + def request(self, url, method='GET', headers=None, body=None): + """ + Invoke a request with httplib2 and return it's response. + :param url: url address to send request to. + :param method: request method `GET` by default. + :param headers: request headers. + :param body: request body. + :return: A `HTTPResponse` object. + """ + + if body and not isinstance(body, str): + raise TypeError('Request body type must be str') + + if self._connection is None: + self._connection = self._build_http_connection(self._proxy_info) + + try: + uri = self._prepare_url_func(url) + except Exception: + _logger.warning( + 'Failed to encode url=%s: %s, use original url directly', + url, traceback.format_exc() + ) + uri = url + + _logger.info('Preparing to invoke request to [%s]', uri) + + result = self._do_request(uri, method, headers, body) + + _logger.info('Invoking request to [%s] finished', uri) + + return result + + def _prepare_proxy_info(self, proxy): + if not proxy or not proxy.enabled: + _logger.debug('Proxy is not enabled') + return None + + username = proxy.username \ + if 'username' in proxy and proxy.username else None + password = proxy.password \ + if 'password' in proxy and proxy.password else None + + proxy_type = self._PROXY_TYPE.get(proxy.type) or self._PROXY_TYPE['http'] + + return ProxyInfo(proxy_host=proxy.host, + proxy_port=int(proxy.port), + proxy_type=proxy_type, + proxy_user=username, + proxy_pass=password, + proxy_rdns=proxy.rdns) + + @staticmethod + def _build_http_connection( + proxy_info=None, + timeout=defaults.timeout, + disable_ssl_cert_validation=defaults.disable_ssl_cert_validation): + return Http( + proxy_info=proxy_info, + timeout=timeout, + disable_ssl_certificate_validation=disable_ssl_cert_validation) + + @staticmethod + def _is_need_retry(status, retried, maximum_retries): + return retried < maximum_retries \ + and status in defaults.retry_statuses + + def _do_request(self, uri, method='GET', headers=None, body=None): + """Invokes request and auto retry with an exponential backoff + if the response status is configured in defaults.retry_statuses.""" + retries = max(defaults.retries, 0) + + for i in xrange(retries + 1): + try: + response, content = self._send_request( + uri, body=body, method=method, headers=headers + ) + except Exception as err: + _logger.exception( + 'Could not send request url=%s method=%s', uri, method) + raise HTTPError('HTTP Error %s' % str(err)) + + status = response.status + + if self._is_need_retry(status, i, retries): + delay = 2 ** i + _logger.warning( + 'The response status=%s of request which url=%s and' + ' method=%s. Retry after %s seconds.', + status, uri, method, delay, + ) + time.sleep(delay) + continue + + return HTTPResponse(response, content) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/models.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/models.py new file mode 100755 index 0000000000..f49303a469 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/models.py @@ -0,0 +1,277 @@ +import base64 +import traceback + +from .ext import lookup_method +from .template import compile_template +from ..common.log import get_cc_logger + +_logger = get_cc_logger() + + +class _Token(object): + """Token class wraps a template expression""" + + def __init__(self, source): + """Constructs _Token from source. A rendered template + will be created if source is string type because Jinja + template must be a string.""" + self._source = source + self._value_for = compile_template(source) \ + if isinstance(source, basestring) else None + + def render(self, variables): + """Render value with variables if source is a string. + Otherwise return source directly.""" + if self._value_for is None: + return self._source + try: + return self._value_for(variables) + except Exception as ex: + _logger.warning( + 'Unable to render template "%s". Please make sure template is' + ' a valid Jinja2 template and token is exist in variables. ' + 'message=%s cause=%s', + self._source, + ex.message, + traceback.format_exc() + ) + return self._source + + +class DictToken(object): + """DictToken wraps a dict which value is template expression""" + + def __init__(self, template_expr): + self._tokens = {k: _Token(v) + for k, v in (template_expr or {}).iteritems()} + + def render(self, variables): + return {k: v.render(variables) for k, v in self._tokens.iteritems()} + + +class BaseAuth(object): + """A base class for all authorization classes""" + + def __call__(self, headers, context): + raise NotImplementedError('Auth must be callable.') + + +class BasicAuthorization(BaseAuth): + """BasicAuthorization class implements basic auth""" + + def __init__(self, options): + if not options: + raise ValueError('Options for basic auth unexpected to be empty') + + username = options.get('username') + if not username: + raise ValueError('Username is mandatory for basic auth') + password = options.get('password') + if not password: + raise ValueError('Password is mandatory for basic auth') + + self._username = _Token(username) + self._password = _Token(password) + + def __call__(self, headers, context): + username = self._username.render(context) + password = self._password.render(context) + headers['Authorization'] = 'Basic %s' % base64.encodestring( + username + ':' + password + ).strip() + + +class Request(object): + def __init__(self, url, method, header=None, auth=None, body=None): + self._header = DictToken(header) + self._url = _Token(url) + self._method = method.upper() + self._auth = auth + self._body = DictToken(body) + + @property + def header(self): + return self._header + + @property + def url(self): + return self._url + + @property + def method(self): + return self._method + + @property + def auth(self): + return self._auth + + @property + def body(self): + return self._body + + def normalize_url(self, context): + """Normalize url""" + return self._url.render(context) + + def normalize_header(self, context): + """Normalize headers which must be a dict which keys and values are + string.""" + header = self.header.render(context) + return {k: str(v) for k, v in header.iteritems()} + + def normalize_body(self, context): + """Normalize body""" + return self.body.render(context) + + +class _Function(object): + def __init__(self, inputs, function): + self._inputs = tuple(_Token(expr) for expr in inputs or []) + self._function = function + + @property + def inputs(self): + return self._inputs + + def inputs_values(self, context): + """ + Get rendered input values. + """ + for arg in self._inputs: + yield arg.render(context) + + @property + def function(self): + return self._function + + +class Task(_Function): + """Task class wraps a task in processor pipeline""" + + def __init__(self, inputs, function, output=None): + super(Task, self).__init__(inputs, function) + self._output = output + + @property + def output(self): + return self._output + + def execute(self, context): + """Execute task with arguments which rendered from context """ + args = [arg for arg in self.inputs_values(context)] + caller = lookup_method(self.function) + output = self._output + + _logger.info( + 'Executing task method: [%s], input size: [%s], output: [%s]', + self.function, len(args), output + ) + + if output is None: + caller(*args) + return {} + + return {output: caller(*args)} + + +class Condition(_Function): + """A condition return the value calculated from input and function""" + + def calculate(self, context): + """Calculate condition with input arguments rendered from context + and method which expected return a bool result. + :param context: context contains key value pairs + :return A bool value returned from the corresponding method + """ + args = [arg for arg in self.inputs_values(context)] + callable_method = lookup_method(self.function) + + _logger.debug( + 'Calculating condition with method: [%s], input size: [%s]', + self.function, len(args) + ) + + result = callable_method(*args) + + _logger.debug("Calculated result: %s", result) + + return result + + +class _Conditional(object): + """A base class for all conditional action""" + + def __init__(self, conditions): + self._conditions = conditions or [] + + @property + def conditions(self): + return self._conditions + + def passed(self, context): + """Determine if any condition is satisfied. + :param context: variables to render template + :return: `True` if all passed else `False` + """ + return any( + condition.calculate(context) for condition in self._conditions + ) + + +class Processor(_Conditional): + """Processor class contains a conditional data process pipeline""" + + def __init__(self, skip_conditions, pipeline): + super(Processor, self).__init__(skip_conditions) + self._pipeline = pipeline or [] + + @property + def pipeline(self): + return self._pipeline + + def should_skipped(self, context): + """Determine processor if should skip process""" + return self.passed(context) + + +class IterationMode(_Conditional): + def __init__(self, iteration_count, conditions): + super(IterationMode, self).__init__(conditions) + self._iteration_count = iteration_count + + @property + def iteration_count(self): + return self._iteration_count + + @property + def conditions(self): + return self._conditions + + +class Checkpoint(object): + """A checkpoint includes a namespace to determine the checkpoint location + and a content defined the format of content stored in checkpoint.""" + + def __init__(self, namespace, content): + """Constructs checkpoint with given namespace and content template. """ + if not content: + raise ValueError('Checkpoint content must not be empty') + + self._namespace = tuple(_Token(expr) for expr in namespace or ()) + self._content = DictToken(content) + + @property + def namespace(self): + return self._namespace + + def normalize_namespace(self, ctx): + """Normalize namespace with context used to render template.""" + return [token.render(ctx) for token in self._namespace] + + @property + def content(self): + return self._content + + def normalize_content(self, ctx): + """Normalize checkpoint with context used to render template.""" + return self._content.render(ctx) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/pipemgr.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/pipemgr.py new file mode 100755 index 0000000000..e696695891 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/pipemgr.py @@ -0,0 +1,14 @@ +from solnlib.pattern import Singleton + + +class PipeManager(object): + __metaclass__ = Singleton + + def __init__(self, event_writer=None): + self._event_writer = event_writer + + def write_events(self, events): + if not self._event_writer: + print events + return True + return self._event_writer.write_events(events) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/core/template.py b/package/bin/da_ess_contentupdate/cloudconnectlib/core/template.py new file mode 100755 index 0000000000..8cef6e90f3 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/core/template.py @@ -0,0 +1,20 @@ +from jinja2 import Template +import re + +# This pattern matches the template with only one token inside like "{{ +# token1}}", "{{ token2 }" +PATTERN = re.compile(r"^\{\{\s*(\w+)\s*\}\}$") + + +def compile_template(template): + _origin_template = template + _template = Template(template) + + def translate_internal(context): + match = re.match(PATTERN, _origin_template) + if match: + context_var = context.get(match.groups()[0]) + return context_var if context_var else '' + return _template.render(context) + + return translate_internal diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/__init__.py new file mode 100755 index 0000000000..e69de29bb2 diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/cloud_connect_mod_input.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/cloud_connect_mod_input.py new file mode 100755 index 0000000000..4bd09f774f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/cloud_connect_mod_input.py @@ -0,0 +1,71 @@ +import ConfigParser +import os.path as op + +from .data_collection import ta_mod_input as ta_input +from .ta_cloud_connect_client import TACloudConnectClient as CollectorCls +from ..common.lib_util import ( + get_main_file, get_app_root_dir, get_mod_input_script_name +) + + +def _load_options_from_inputs_spec(app_root, stanza_name): + input_spec_file = 'inputs.conf.spec' + file_path = op.join(app_root, 'README', input_spec_file) + + if not op.isfile(file_path): + raise RuntimeError("README/%s doesn't exist" % input_spec_file) + + parser = ConfigParser.RawConfigParser(allow_no_value=True) + parser.read(file_path) + options = parser.defaults().keys() + stanza_prefix = '%s://' % stanza_name + + stanza_exist = False + for section in parser.sections(): + if section == stanza_name or section.startswith(stanza_prefix): + options.extend(parser.options(section)) + stanza_exist = True + if not stanza_exist: + raise RuntimeError("Stanza %s doesn't exist" % stanza_name) + return set(options) + + +def _find_ucc_global_config_json(app_root, ucc_config_filename): + """Find UCC config file from all possible directories""" + candidates = ['local', 'default', 'bin', + op.join('appserver', 'static', 'js', 'build')] + + for candidate in candidates: + file_path = op.join(app_root, candidate, ucc_config_filename) + if op.isfile(file_path): + return file_path + raise RuntimeError( + 'Unable to load %s from [%s]' + % (ucc_config_filename, ','.join(candidates)) + ) + + +def _get_cloud_connect_config_json(script_name): + config_file_name = '.'.join([script_name, 'cc.json']) + return op.join(op.dirname(get_main_file()), config_file_name) + + +def run(single_instance=False): + script_name = get_mod_input_script_name() + + cce_config_file = _get_cloud_connect_config_json(script_name) + + app_root = get_app_root_dir() + ucc_config_path = _find_ucc_global_config_json( + app_root, 'globalConfig.json' + ) + + schema_params = _load_options_from_inputs_spec(app_root, script_name) + ta_input.main( + CollectorCls, + schema_file_path=ucc_config_path, + log_suffix=script_name, + cc_json_file=cce_config_file, + schema_para_list=schema_params, + single_instance=single_instance + ) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/__init__.py new file mode 100755 index 0000000000..a628703818 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/__init__.py @@ -0,0 +1,52 @@ +import json +import hashlib + + +def load_schema_file(schema_file): + """ + Load schema file. + """ + + with open(schema_file) as f: + ret = json.load(f) + + common = ret.get("_common_", dict()) + if common: + for k, v in ret.items(): + if k == "_common_" or not isinstance(v, dict): + continue + # merge common into other values + for _k, _v in common.items(): + if _k not in v: + v[_k] = _v + ret[k] = v + + return ret + + +def md5_of_dict(data): + """ + MD5 of dict data. + """ + + md5 = hashlib.sha256() + if isinstance(data, dict): + for key in sorted(data.keys()): + md5.update(repr(key)) + md5.update(md5_of_dict(data[key])) + elif isinstance(data, list): + for item in sorted(data): + md5.update(md5_of_dict(item)) + else: + md5.update(repr(data)) + + return md5.hexdigest() + + +class UCCException(Exception): + """ + Dispatch engine exception. + """ + + pass + diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/log.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/log.py new file mode 100755 index 0000000000..0379e69021 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/log.py @@ -0,0 +1,49 @@ +import logging +from ...splunktalib.common import log as stclog + + +def set_log_level(log_level): + """ + Set log level. + """ + + if isinstance(log_level, basestring): + if log_level.upper() == "DEBUG": + stclog.Logs().set_level(logging.DEBUG) + elif log_level.upper() == "INFO": + stclog.Logs().set_level(logging.INFO) + elif log_level.upper() == "WARN": + stclog.Logs().set_level(logging.WARN) + elif log_level.upper() == "ERROR": + stclog.Logs().set_level(logging.ERROR) + elif log_level.upper() == "WARNING": + stclog.Logs().set_level(logging.WARNING) + elif log_level.upper() == "CRITICAL": + stclog.Logs().set_level(logging.CRITICAL) + else: + stclog.Logs().set_level(logging.INFO) + elif isinstance(log_level, int): + if log_level in [logging.DEBUG, logging.INFO, logging.ERROR, + logging.WARN, logging.WARNING, logging.CRITICAL]: + stclog.Logs().set_level(log_level) + else: + stclog.Logs().set_level(logging.INFO) + else: + stclog.Logs().set_level(logging.INFO) + + +# Global logger +logger = stclog.Logs().get_logger("cloud_connect_engine") + + +def reset_logger(name): + """ + Reset logger. + """ + + stclog.reset_logger(name) + + global logger + logger = stclog.Logs().get_logger(name) + + diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/rwlock.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/rwlock.py new file mode 100755 index 0000000000..b1e43fe258 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/rwlock.py @@ -0,0 +1,71 @@ +""" +This module provides Read-Write lock. +""" + +import threading + + +class _ReadLocker(object): + def __init__(self, lock): + self.lock = lock + + def __enter__(self): + self.lock.acquire_read() + + def __exit__(self, exc_type, exc_val, exc_tb): + self.lock.release_read() + return False + + +class _WriteLocker(object): + def __init__(self, lock): + self.lock = lock + + def __enter__(self): + self.lock.acquire_write() + + def __exit__(self, exc_type, exc_val, exc_tb): + self.lock.release_write() + return False + + +class RWLock(object): + """ Simple Read-Write lock. + + Allow multiple read but only one writing concurrently. + """ + + def __init__(self): + self._condition = threading.Condition(threading.Lock()) + self._readers = 0 + + def acquire_read(self): + self._condition.acquire() + self._readers += 1 + self._condition.release() + + def release_read(self): + self._condition.acquire() + try: + self._readers -= 1 + if not self._readers: + self._condition.notifyAll() + finally: + self._condition.release() + + def acquire_write(self): + self._condition.acquire() + while self._readers > 0: + self._condition.wait() + + def release_write(self): + self._condition.release() + + @property + def reader_lock(self): + return _ReadLocker(self) + + @property + def writer_lock(self): + return _WriteLocker(self) + diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/schema_meta.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/schema_meta.py new file mode 100755 index 0000000000..ec6ce8893e --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/common/schema_meta.py @@ -0,0 +1,7 @@ + +FIELD_PRODUCT = '_product' +FIELD_REST_NAMESPACE = '_rest_namespace' +FIELD_REST_PREFIX = '_rest_prefix' +FIELD_PROTOCOL_VERSION = '_protocol_version' +FIELD_VERSION = '_version' +FIELD_ENCRYPTION_FORMATTER = '_encryption_formatter' diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/config.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/config.py new file mode 100755 index 0000000000..27442d0986 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/config.py @@ -0,0 +1,367 @@ +"""UCC Config Module +This is for load/save configuration in UCC server or TA. +The load/save action is based on specified schema. +""" + +from __future__ import absolute_import + +import json +import logging +import traceback +import time + +from ..splunktalib.rest import splunkd_request, code_to_msg +from ..splunktalib.common import util as sc_util + +from .common import log as stulog +from .common import UCCException +from urllib import quote + +LOGGING_STOPPED = False + + +def stop_logging(): + """ + Stop Config Logging. This is for not showing REST request error + while splunkd shutting down. + :return: + """ + global LOGGING_STOPPED + LOGGING_STOPPED = True + + +def log(msg, msgx='', level=logging.INFO, need_tb=False): + """ + Logging in UCC Config Module. + :param msg: message content + :param msgx: detail info. + :param level: logging level + :param need_tb: if need logging traceback + :return: + """ + global LOGGING_STOPPED + if LOGGING_STOPPED: + return + + msgx = ' - ' + msgx if msgx else '' + content = 'UCC Config Module: %s%s' % (msg, msgx) + if need_tb: + stack = ''.join(traceback.format_stack()) + content = '%s\r\n%s' % (content, stack) + stulog.logger.log(level, content, exc_info=1) + + +class ConfigException(UCCException): + """Exception for UCC Config Exception + """ + pass + + +class Config(object): + """UCC Config Module + """ + + # Placeholder stands for any field + FIELD_PLACEHOLDER = '*' + + # Head of non-processing endpoint + NON_PROC_ENDPOINT = '#' + + # Some meta fields in UCC Config schema + META_FIELDS = ('_product', '_rest_namespace', '_rest_prefix', + '_protocol_version', '_version', + '_encryption_formatter') + + # Default Values for Meta fields + META_FIELDS_DEFAULT = { + '_encryption_formatter': '', + } + + def __init__(self, splunkd_uri, session_key, schema, + user='nobody', app='-'): + """ + :param splunkd_uri: the root uri of Splunk server, + like https://127.0.0.1:8089 + :param session_key: session key for Splunk server + :param schema: + :param user: owner of the resources requested + :param app: namespace of the resources requested + :return: + """ + self.splunkd_uri = splunkd_uri.strip('/') + self.session_key = session_key + self.user, self.app = user, app + self._parse_schema(schema) + self._check_protocol_version() + + def load(self): + """Load Configurations in UCC according to the schema + It will raise exception if failing to load any endpoint, + because it make no sense with not complete configuration info. + """ + log('"load" method in', level=logging.DEBUG) + + ret = {meta_field: getattr(self, meta_field) + for meta_field in Config.META_FIELDS} + + for ep_id, ep in self._endpoints.iteritems(): + data = {'output_mode': 'json', '--cred--': '1'} + + retries = 4 + waiting_time = [1, 2, 2] + for retry in xrange(retries): + resp, cont = splunkd_request( + splunkd_uri=self.make_uri(ep_id), + session_key=self.session_key, + data=data, + retry=3 + ) + + if resp is None or resp.status != 200: + msg = 'Fail to load endpoint "{ep_id}" - {err}' \ + ''.format(ep_id=ep_id, + err=code_to_msg(resp, cont) + if resp else cont) + log(msg, level=logging.ERROR, need_tb=True) + raise ConfigException(msg) + + try: + ret[ep_id] = self._parse_content(ep_id, cont) + except ConfigException, exc: + log(exc, level=logging.WARNING, need_tb=True) + if retry < retries-1: + time.sleep(waiting_time[retry]) + else: + break + else: + log(exc, level=logging.ERROR, need_tb=True) + raise exc + + log('"load" method out', level=logging.DEBUG) + return ret + + def update_items(self, endpoint_id, item_names, field_names, data, + raise_if_failed=False): + """Update items in specified endpoint with given fields in data + :param endpoint_id: endpoint id in schema, the key name in schema + :param item_names: a list of item name + :param field_names: a list of updated fields + :param data: a dict of content for items, for example: + { + "item_name_1": { + "field_name_1": "value_1", + "field_name_2": "value_2", + }, + "item_name_2": { + "field_name_1": "value_1x", + "field_name_2": "value_2x", + } + } + :raise_if_failed: raise an exception if updating failed. + :return: a list of endpoint ids, which are failed to be updated. + If raise_if_failed is True, it will exist with an exception + on any updating failed. + """ + log('"update_items" method in', + msgx='endpoint_id=%s, item_names=%s, field_names=%s' + % (endpoint_id, item_names, field_names), + level=logging.DEBUG) + + assert endpoint_id in self._endpoints, \ + 'Unexpected endpoint id in given schema - {ep_id}' \ + ''.format(ep_id=endpoint_id) + + item_names_failed = [] + for item_name in item_names: + item_data = data.get(item_name, {}) + item_data = {field_name: self.dump_value(endpoint_id, + item_name, + field_name, + item_data[field_name]) + for field_name in field_names + if field_name in item_data} + if not item_data: + continue + item_uri = self.make_uri(endpoint_id, item_name=item_name) + + resp, cont = splunkd_request(splunkd_uri=item_uri, + session_key=self.session_key, + data=item_data, + method="POST", + retry=3 + ) + if resp is None or resp.status not in (200, 201): + msg = 'Fail to update item "{item}" in endpoint "{ep_id}"' \ + ' - {err}'.format(ep_id=endpoint_id, + item=item_name, + err=code_to_msg(resp, cont) + if resp else cont) + log(msg, level=logging.ERROR) + if raise_if_failed: + raise ConfigException(msg) + item_names_failed.append(item_name) + + log('"update_items" method out', level=logging.DEBUG) + return item_names_failed + + def make_uri(self, endpoint_id, item_name=None): + """Make uri for REST endpoint in TA according to given schema + :param endpoint_id: endpoint id in schema + :param item_name: item name for given endpoint. None for listing all + :return: + """ + endpoint = self._endpoints[endpoint_id]['endpoint'] + ep_full = endpoint[1:].strip('/') \ + if endpoint.startswith(Config.NON_PROC_ENDPOINT) else \ + '{admin_match}/{protocol_version}/{endpoint}' \ + ''.format(admin_match=self._rest_namespace, + protocol_version=self._protocol_version, + endpoint=(self._rest_prefix + + self._endpoints[endpoint_id]['endpoint'])) + ep_uri = None if endpoint_id not in self._endpoints else \ + '{splunkd_uri}/servicesNS/{user}/{app}/{endpoint_full}' \ + ''.format(splunkd_uri=self.splunkd_uri, + user=self.user, + app=self.app, + endpoint_full=ep_full + ) + + url = ep_uri if item_name is None else "{ep_uri}/{item_name}"\ + .format(ep_uri=ep_uri, item_name=quote(item_name)) + if item_name is None: + url += '?count=-1' + log('"make_uri" method', msgx='url=%s' % url, + level=logging.DEBUG) + return url + + def _parse_content(self, endpoint_id, content): + """Parse content returned from REST + :param content: a JSON string returned from REST. + """ + try: + content = json.loads(content)['entry'] + ret = {ent['name']: ent['content'] for ent in content} + except Exception as exc: + msg = 'Fail to parse content from endpoint_id=%s' \ + ' - %s' % (endpoint_id, exc) + log(msg, level=logging.ERROR, need_tb=True) + raise ConfigException(msg) + + ret = {name: {key: self.load_value(endpoint_id, name, key, val) + for key, val in ent.iteritems() + if not key.startswith('eai:')} + for name, ent in ret.iteritems()} + return ret + + def _parse_schema(self, ucc_config_schema): + try: + ucc_config_schema = json.loads(ucc_config_schema) + except ValueError: + msg = 'Invalid JSON content of schema' + log(msg, level=logging.ERROR, need_tb=True) + raise ConfigException(msg) + except Exception as exc: + log(exc, level=logging.ERROR, need_tb=True) + raise ConfigException(exc) + + ucc_config_schema.update({key: val for key, val in + Config.META_FIELDS_DEFAULT.iteritems() + if key not in ucc_config_schema}) + for field in Config.META_FIELDS: + assert field in ucc_config_schema and \ + isinstance(ucc_config_schema[field], basestring), \ + 'Missing or invalid field "%s" in given schema' % field + setattr(self, field, ucc_config_schema[field]) + + self._endpoints = {} + for key, val in ucc_config_schema.iteritems(): + if key.startswith('_'): + continue + + assert isinstance(val, dict), \ + 'The schema of endpoint "%s" should be dict' % key + assert 'endpoint' in val, \ + 'The endpoint "%s" has no endpoint entry' % key + + self._endpoints[key] = val + + def _check_protocol_version(self): + """ + Check if the protocol version in given schema is supported. + :return: + """ + if not self._protocol_version: + return + if not self._protocol_version.startswith('1.'): + raise ConfigException('Unsupported protocol version "%s" ' + 'in given schema' % self._protocol_version) + + def load_value(self, endpoint_id, item_name, fname, fval): + field_type = self._get_field_type(endpoint_id, item_name, fname) + if field_type == '': + return fval + + try: + field_type = field_type.lower() + if field_type == 'bool': + return True if sc_util.is_true(fval) else False + elif field_type == 'int': + return int(fval) + elif field_type == 'json': + return json.loads(fval) + except Exception as exc: + msg = 'Fail to load value of "{type_name}" - ' \ + 'endpoint={endpoint}, item={item}, field={field}' \ + ''.format(type_name=field_type, + endpoint=endpoint_id, + item=item_name, + field=fname) + log(msg, msgx=str(exc), level=logging.WARNING, need_tb=True) + raise ConfigException(msg) + + def dump_value(self, endpoint_id, item_name, fname, fval): + field_type = self._get_field_type(endpoint_id, item_name, fname) + if field_type == '': + return fval + + try: + field_type = field_type.lower() + if field_type == 'bool': + return str(fval).lower() + elif field_type == 'json': + return json.dumps(fval) + else: + return fval + except Exception, exc: + msg = 'Fail to dump value of "{type_name}" - ' \ + 'endpoint={endpoint}, item={item}, field={field}' \ + ''.format(type_name=field_type, + endpoint=endpoint_id, + item=item_name, + field=fname) + log(msg, msgx=str(exc), level=logging.ERROR, need_tb=True) + raise ConfigException(msg) + + def _get_field_type(self, endpoint_id, item_name, fname): + field_types = self._endpoints[endpoint_id].get('field_types', {}) + if item_name in field_types: + fields = field_types[item_name] + elif Config.FIELD_PLACEHOLDER in field_types: + fields = field_types[Config.FIELD_PLACEHOLDER] + else: + fields = {} + + field_type = fields.get(fname, '') + if field_type not in ('', 'bool', 'int', 'json'): + msg = 'Unsupported type "{type_name}" for value in schema - ' \ + 'endpoint={endpoint}, item={item}, field={field}' \ + ''.format(type_name=field_type, + endpoint=endpoint_id, + item=item_name, + field=fname) + log(msg, level=logging.ERROR, need_tb=True) + raise ConfigException(msg) + return field_type + + def get_endpoints(self): + return self._endpoints diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/__init__.py new file mode 100755 index 0000000000..bb35ee1578 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/__init__.py @@ -0,0 +1 @@ +__version__ = "1.0.2" \ No newline at end of file diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_checkpoint_manager.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_checkpoint_manager.py new file mode 100755 index 0000000000..9676f500a2 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_checkpoint_manager.py @@ -0,0 +1,147 @@ +import json +import re + +from . import ta_consts as c +from . import ta_helper as th +from ..common import log as stulog +from ...splunktalib import state_store as ss +from ...splunktalib.common.util import is_true + + +class TACheckPointMgr(object): + SEPARATOR = "_" * 3 + + # FIXME We'd better move all default values together + _DEFAULT_MAX_CACHE_SECONDS = 5 + _MAXIMUM_MAX_CACHE_SECONDS = 3600 + + def __init__(self, meta_config, task_config): + self._task_config = task_config + self._store = self._create_state_store( + meta_config, + task_config.get(c.checkpoint_storage_type), + task_config[c.appname] + ) + + def _create_state_store(self, meta_config, storage_type, app_name): + stulog.logger.debug('Got checkpoint storage type=%s', storage_type) + + if storage_type == c.checkpoint_kv_storage: + collection_name = self._get_collection_name() + stulog.logger.debug( + 'Creating KV state store, collection name=%s', collection_name + ) + return ss.get_state_store( + meta_config, + appname=app_name, + collection_name=collection_name, + use_kv_store=True + ) + + use_cache_file = self._use_cache_file() + max_cache_seconds = \ + self._get_max_cache_seconds() if use_cache_file else None + + stulog.logger.debug( + 'Creating file state store, use_cache_file=%s, max_cache_seconds=%s', + use_cache_file, max_cache_seconds + ) + + return ss.get_state_store( + meta_config, + app_name, + use_cache_file=use_cache_file, + max_cache_seconds=max_cache_seconds + ) + + def _get_collection_name(self): + collection = self._task_config.get(c.collection_name) + collection = collection.strip() if collection else '' + + if not collection: + input_name = self._task_config[c.mod_input_name] + stulog.logger.info( + 'Collection name="%s" is empty, set it to "%s"', + collection, input_name + ) + collection = input_name + return re.sub(r'[^\w]+', '_', collection) + + def _use_cache_file(self): + # TODO Move the default value outside code + use_cache_file = is_true(self._task_config.get(c.use_cache_file, True)) + if use_cache_file: + stulog.logger.info( + "Stanza=%s using cached file store to create checkpoint", + self._task_config[c.stanza_name] + ) + return use_cache_file + + def _get_max_cache_seconds(self): + default = self._DEFAULT_MAX_CACHE_SECONDS + seconds = self._task_config.get( + c.max_cache_seconds, default + ) + try: + seconds = int(seconds) + except ValueError: + stulog.logger.warning( + "The max_cache_seconds '%s' is not a valid integer," + " so set this variable to default value %s", + seconds, default + ) + seconds = default + else: + maximum = self._MAXIMUM_MAX_CACHE_SECONDS + if not (1 <= seconds <= maximum): + # for seconds>3600 set it to 3600. for seconds <=0 set it to default. + adjusted = max(min(seconds, maximum), default) + stulog.logger.warning( + "The max_cache_seconds (%s) is expected in range[1,%s]," + " set it to %s", + seconds, maximum, adjusted + ) + seconds = adjusted + return seconds + + def get_ckpt_key(self, namespaces=None): + return self._key_formatter(namespaces) + + def get_ckpt(self, namespaces=None, show_namespaces=False): + key, namespaces = self.get_ckpt_key(namespaces) + raw_checkpoint = self._store.get_state(key) + stulog.logger.info("Get checkpoint key='%s' value='%s'", + key, json.dumps(raw_checkpoint)) + if not show_namespaces and raw_checkpoint: + return raw_checkpoint.get("data") + return raw_checkpoint + + def update_ckpt(self, ckpt, namespaces=None): + if not ckpt: + stulog.logger.warning("Checkpoint expect to be not empty.") + return + key, namespaces = self.get_ckpt_key(namespaces) + value = {"namespaces": namespaces, "data": ckpt} + stulog.logger.info("Update checkpoint key='%s' value='%s'", + key, json.dumps(value)) + self._store.update_state(key, value) + + def remove_ckpt(self, namespaces=None): + key, namespaces = self.get_ckpt_key(namespaces) + self._store.delete_state(key) + + def _key_formatter(self, namespaces=None): + if not namespaces: + stulog.logger.info('Namespaces is empty, using stanza name instead.') + namespaces = [self._task_config[c.stanza_name]] + key_str = TACheckPointMgr.SEPARATOR.join(namespaces) + hashed_file = th.format_name_for_file(key_str) + stulog.logger.info("raw_file='%s' hashed_file='%s'", key_str, hashed_file) + return hashed_file, namespaces + + def close(self, key=None): + try: + self._store.close(key) + stulog.logger.info('Closed state store successfully. key=%s', key) + except Exception: + stulog.logger.exception('Error closing state store. key=%s', key) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_config.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_config.py new file mode 100755 index 0000000000..68664b8c4c --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_config.py @@ -0,0 +1,155 @@ +import os.path as op +import socket + +import ta_consts as c +import ta_helper as th +from ..common import log as stulog +from ...splunktalib import modinput as modinput +from ...splunktalib import splunk_cluster as sc +from ...splunktalib.common import util + + +# methods can be overrided by subclass : process_task_configs +class TaConfig(object): + _current_hostname = socket.gethostname() + _appname = util.get_appname_from_path(op.abspath(__file__)) + + def __init__(self, meta_config, client_schema, log_suffix=None, + stanza_name=None, input_type=None, + single_instance=True): + self._meta_config = meta_config + self._stanza_name = stanza_name + self._input_type = input_type + self._log_suffix = log_suffix + self._single_instance = single_instance + self._task_configs = [] + self._client_schema = client_schema + self._server_info = sc.ServerInfo(meta_config[c.server_uri], + meta_config[c.session_key]) + self._all_conf_contents = {} + self._get_division_settings = {} + self.set_logging() + self._load_task_configs() + + def is_shc_member(self): + return self._server_info.is_shc_member() + + def is_search_head(self): + return self._server_info.is_search_head() + + def is_single_instance(self): + return self._single_instance + + def get_meta_config(self): + return self._meta_config + + def get_task_configs(self): + return self._task_configs + + def get_all_conf_contents(self): + if self._all_conf_contents: + return self._all_conf_contents.get(c.inputs), \ + self._all_conf_contents.get(c.all_configs), \ + self._all_conf_contents.get(c.global_settings) + + inputs, configs, global_settings = th.get_all_conf_contents( + self._meta_config[c.server_uri], + self._meta_config[c.session_key], + self._client_schema, self._input_type) + self._all_conf_contents[c.inputs] = inputs + self._all_conf_contents[c.all_configs] = configs + self._all_conf_contents[c.global_settings] = global_settings + return inputs, configs, global_settings + + def set_logging(self): + # The default logger name is "cloud_connect_engine" + if self._stanza_name and self._log_suffix: + logger_name = self._log_suffix + "_" + th.format_name_for_file( + self._stanza_name) + stulog.reset_logger(logger_name) + inputs, configs, global_settings = self.get_all_conf_contents() + log_level = "INFO" + for item in global_settings.get("settings"): + if item.get(c.name) == "logging" and item.get("loglevel"): + log_level = item["loglevel"] + break + stulog.set_log_level(log_level) + stulog.logger.info("Set log_level={}".format(log_level)) + stulog.logger.info("Start {} task".format(self._stanza_name)) + + def get_input_type(self): + return self._input_type + + def _get_checkpoint_storage_type(self, config): + cs_type = config.get(c.checkpoint_storage_type) + stulog.logger.debug("Checkpoint storage type=%s", cs_type) + + cs_type = cs_type.strip() if cs_type else c.checkpoint_auto + + # Allow user configure 'auto' and 'file' only. + if cs_type not in (c.checkpoint_auto, c.checkpoint_file): + stulog.logger.warning( + "Checkpoint storage type='%s' is invalid, change it to '%s'", + cs_type, c.checkpoint_auto + ) + cs_type = c.checkpoint_auto + + if cs_type == c.checkpoint_auto and self.is_search_head(): + stulog.logger.info( + "Checkpoint storage type is '%s' and instance is " + "search head, set checkpoint storage type to '%s'.", + c.checkpoint_auto, + c.checkpoint_kv_storage + ) + cs_type = c.checkpoint_kv_storage + return cs_type + + def _load_task_configs(self): + inputs, configs, global_settings = self.get_all_conf_contents() + if self._input_type: + inputs = inputs.get(self._input_type) + if not self._single_instance: + inputs = [input for input in inputs if + input[c.name] == self._stanza_name] + all_task_configs = [] + for input in inputs: + task_config = {} + task_config.update(input) + task_config[c.configs] = configs + task_config[c.settings] = \ + {item[c.name]: item for item in global_settings["settings"]} + if self.is_single_instance(): + collection_interval = "collection_interval" + task_config[c.interval] = task_config.get(collection_interval) + task_config[c.interval] = int(task_config[c.interval]) + if task_config[c.interval] <= 0: + raise ValueError( + "The interval value {} is invalid." + " It should be a positive integer".format( + task_config[c.interval])) + + task_config[c.checkpoint_storage_type] = \ + self._get_checkpoint_storage_type(task_config) + + task_config[c.appname] = TaConfig._appname + task_config[c.mod_input_name] = self._input_type + task_config[c.stanza_name] = task_config[c.name] + + all_task_configs.append(task_config) + self._task_configs = all_task_configs + + # Override this method if some transforms or validations needs to be done + # before task_configs is exposed + def process_task_configs(self, task_configs): + pass + + +def create_ta_config(settings, config_cls=TaConfig, log_suffix=None, + single_instance=True): + meta_config, configs = modinput.get_modinput_configs_from_stdin() + stanza_name = None + input_type = None + if configs and "://" in configs[0].get("name", ""): + input_type, stanza_name = configs[0].get("name").split("://", 1) + return config_cls(meta_config, settings, log_suffix, stanza_name, + input_type, single_instance=single_instance) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_consts.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_consts.py new file mode 100755 index 0000000000..187ce0f749 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_consts.py @@ -0,0 +1,54 @@ +server_uri = "server_uri" +session_key = "session_key" +version = "version" +appname = "appname" +event_writer = "event_writer" +index = "index" +default_index = "default" +source = "source" +sourcetype = "sourcetype" +data_loader = "data_loader" + +meta_configs = "meta_configs" +disabled = "disabled" +resource = "resource" +events = "events" +scope = "scope" +checkpoint_dir = "checkpoint_dir" + +ckpt_dict = "ckpt_dict" +inputs = "inputs" +input_name = "input_name" +input_data = "input_data" +interval = "interval" +data = "data" +batch_size = 'batch_size' +time_fmt = "%Y-%m-%dT%H:%M:%S" +utc_time_fmt = "%Y-%m-%dT%H:%M:%S.%fZ" + +# system setting keys +checkpoint_storage_type = "builtin_system_checkpoint_storage_type" + +# Possible values for checkpoint storage type +checkpoint_auto = 'auto' +checkpoint_kv_storage = 'kv_store' +checkpoint_file = 'file' + +# For cache file +use_cache_file = "builtin_system_use_cache_file" +max_cache_seconds = "builtin_system_max_cache_seconds" +# For kv store +collection_name = "builtin_system_kvstore_collection_name" + +settings = "__settings__" +configs = "__configs__" + +name = "name" +config = "config" +division = "division" +stanza_name = "stanza_name" +divide_key = "_divide_key" +divide_endpoint = "_divide_endpoint" +mod_input_name = "mod_input_name" +global_settings = "global_settings" +all_configs = "all_configs" diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_client.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_client.py new file mode 100755 index 0000000000..cf2cb9cdef --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_client.py @@ -0,0 +1,84 @@ +#!/usr/bin/python +from . import ta_checkpoint_manager as cp +from . import ta_data_collector as tdc + + +def build_event(host=None, + source=None, + sourcetype=None, + time=None, + index=None, + raw_data="", + is_unbroken=False, + is_done=False): + if is_unbroken is False and is_done is True: + raise Exception('is_unbroken=False is_done=True is invalid') + return tdc.event_tuple._make([host, source, sourcetype, time, index, + raw_data, is_unbroken, is_done]) + + +class TaDataClient(object): + def __init__(self, + meta_config, + task_config, + checkpoint_mgr=None, + event_writer=None): + self._meta_config = meta_config + self._task_config = task_config + self._checkpoint_mgr = checkpoint_mgr + self._event_writer = event_writer + self._stop = False + + def is_stopped(self): + return self._stop + + def stop(self): + self._stop = True + + def get(self): + raise StopIteration + + +def create_data_collector(dataloader, + tconfig, + meta_configs, + task_config, + data_client_cls, + checkpoint_cls=None): + checkpoint_manager_cls = checkpoint_cls or cp.TACheckPointMgr + return tdc.TADataCollector(tconfig, meta_configs, task_config, + checkpoint_manager_cls, data_client_cls, + dataloader) + + +def client_adatper(job_func): + class TaDataClientAdapter(TaDataClient): + def __init__(self, all_conf_contents, meta_config, task_config, + chp_mgr): + super(TaDataClientAdapter, self).__init__(meta_config, task_config, + chp_mgr) + self._execute_times = 0 + self._gen = job_func(self._task_config, chp_mgr) + + def stop(self): + """ + overwrite to handle stop control command + """ + + # normaly base class just set self._stop as True + super(TaDataClientAdapter, self).stop() + + def get(self): + """ + overwrite to get events + """ + self._execute_times += 1 + if self.is_stopped(): + # send stop signal + self._gen.send(self.is_stopped()) + raise StopIteration + if self._execute_times == 1: + return self._gen.next() + return self._gen.send(self.is_stopped()) + + return TaDataClientAdapter diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_collector.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_collector.py new file mode 100755 index 0000000000..3069cd50e3 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_collector.py @@ -0,0 +1,144 @@ +#!/usr/bin/python +import threading +import time +from collections import namedtuple + +import ta_consts as c +from ..common import log as stulog +from ...splunktalib.common import util as scu + +evt_fmt = ("{0}" + "" + "" + "" + "{4}" + "") + +unbroken_evt_fmt = ("" + "" + "{0}" + "" + "" + "" + "{4}" + "" + "{6}" + "" + "") + +event_tuple = namedtuple('Event', + ['host', 'source', 'sourcetype', 'time', 'index', + 'raw_data', 'is_unbroken', 'is_done']) + + +class TADataCollector(object): + def __init__(self, tconfig, meta_config, task_config, + checkpoint_manager_cls, data_client_cls, data_loader): + self._lock = threading.Lock() + self._ta_config = tconfig + self._meta_config = meta_config + self._task_config = task_config + self._stopped = False + self._p = self._get_logger_prefix() + self._checkpoint_manager = checkpoint_manager_cls(meta_config, + task_config) + self.data_client_cls = data_client_cls + self._data_loader = data_loader + self._client = None + + def get_meta_configs(self): + return self._meta_config + + def get_task_config(self): + return self._task_config + + def get_interval(self): + return self._task_config[c.interval] + + def _get_logger_prefix(self): + pairs = ['{}="{}"'.format(c.stanza_name, self._task_config[ + c.stanza_name])] + return "[{}]".format(" ".join(pairs)) + + def stop(self): + self._stopped = True + if self._client: + self._client.stop() + + def __call__(self): + self.index_data() + + def _build_event(self, events): + if not events: + return None + if not isinstance(events, list): + events = [events] + evts = [] + for event in events: + assert event.raw_data, "the raw data of events is empty" + if event.is_unbroken: + evt = unbroken_evt_fmt.format( + event.host or "", event.source or "", event.sourcetype or + "", event.time or "", event.index or "", + scu.escape_cdata(event.raw_data), "" if + event.is_done else "") + else: + evt = evt_fmt.format(event.host or "", event.source or "", + event.sourcetype or "", event.time or "", + event.index or "", + scu.escape_cdata(event.raw_data)) + evts.append(evt) + return evts + + def _create_data_client(self): + return self.data_client_cls(self._meta_config, + self._task_config, + self._checkpoint_manager, + self._data_loader.get_event_writer()) + + def index_data(self): + if self._lock.locked(): + stulog.logger.debug( + "Last round of stanza={} is not done yet".format( + self._task_config[c.stanza_name])) + return + with self._lock: + try: + self._do_safe_index() + self._checkpoint_manager.close() + except Exception: + stulog.logger.exception("{} Failed to index data" + .format(self._p)) + stulog.logger.info("{} End of indexing data".format(self._p)) + if not self._ta_config.is_single_instance(): + self._data_loader.tear_down() + + def _write_events(self, events): + evts = self._build_event(events) + if evts: + if not self._data_loader.write_events(evts): + stulog.logger.info("{} the event queue is closed and the " + "received data will be discarded".format( + self._p)) + return False + return True + + def _do_safe_index(self): + self._client = self._create_data_client() + while not self._stopped: + try: + events = self._client.get() + if not events: + continue + else: + if not self._write_events(events): + break + except StopIteration: + stulog.logger.info("{} Finished this round".format(self._p)) + return + except Exception: + stulog.logger.exception("{} Failed to get msg".format(self._p)) + break + # in case encounter exception or fail to write events + if not self._stopped: + self.stop() diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_loader.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_loader.py new file mode 100755 index 0000000000..181c7a618f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_data_loader.py @@ -0,0 +1,168 @@ +""" +Data Loader main entry point +""" + + +import Queue +import os.path as op +import ConfigParser + +from ...splunktalib.concurrent import concurrent_executor as ce +from ...splunktalib import timer_queue as tq +from ...splunktalib.schedule import job as sjob +from ...splunktalib.common import log + + +class TADataLoader(object): + """ + Data Loader boots all underlying facilities to handle data collection + """ + + def __init__(self, job_scheduler, event_writer): + """ + @configs: a list like object containing a list of dict + like object. Each element shall implement dict.get/[] like interfaces + to get the value for a key. + @job_scheduler: schedulering the jobs. shall implement get_ready_jobs + @event_writer: write_events + """ + + self._settings = self._read_default_settings() + self._settings["daemonize_thread"] = False + self._event_writer = event_writer + self._wakeup_queue = Queue.Queue() + self._scheduler = job_scheduler + self._timer_queue = tq.TimerQueue() + self._executor = ce.ConcurrentExecutor(self._settings) + self._started = False + + def run(self, jobs): + if self._started: + return + self._started = True + + self._event_writer.start() + self._executor.start() + self._timer_queue.start() + self._scheduler.start() + log.logger.info("TADataLoader started.") + + def _enqueue_io_job(job): + job_props = job.get_props() + real_job = job_props["real_job"] + self.run_io_jobs((real_job,)) + + for job in jobs: + j = sjob.Job(_enqueue_io_job, {"real_job": job}, + job.get_interval()) + self._scheduler.add_jobs((j,)) + + self._wait_for_tear_down() + + for job in jobs: + job.stop() + + self._scheduler.tear_down() + self._timer_queue.tear_down() + self._executor.tear_down() + self._event_writer.tear_down() + log.logger.info("DataLoader stopped.") + + def _wait_for_tear_down(self): + wakeup_q = self._wakeup_queue + while 1: + try: + go_exit = wakeup_q.get(timeout=1) + except Queue.Empty: + pass + else: + if go_exit: + log.logger.info("DataLoader got stop signal") + self._stopped = True + break + + def tear_down(self): + self._wakeup_queue.put(True) + log.logger.info("DataLoader is going to stop.") + + def stopped(self): + return self._stopped + + def run_io_jobs(self, jobs, block=True): + self._executor.enqueue_io_funcs(jobs, block) + + def run_compute_job(self, func, args=(), kwargs={}): + self._executor.run_compute_func_sync(func, args, kwargs) + + def run_compute_job_async(self, func, args=(), kwargs={}, callback=None): + """ + @return: AsyncResult + """ + + return self._executor.run_compute_func_async(func, args, + kwargs, callback) + + def add_timer(self, callback, when, interval): + return self._timer_queue.add_timer(callback, when, interval) + + def remove_timer(self, timer): + self._timer_queue.remove_timer(timer) + + def write_events(self, events): + return self._event_writer.write_events(events) + + def get_event_writer(self): + return self._event_writer + + @staticmethod + def _read_default_settings(): + cur_dir = op.dirname(op.abspath(__file__)) + setting_file = op.join(cur_dir,"../../","splunktalib", "setting.conf") + parser = ConfigParser.ConfigParser() + parser.read(setting_file) + settings = {} + keys = ("process_size", "thread_min_size", "thread_max_size", + "task_queue_size") + for option in keys: + try: + settings[option] = parser.get("global", option) + except ConfigParser.NoOptionError: + settings[option] = -1 + + try: + settings[option] = int(settings[option]) + except ValueError: + settings[option] = -1 + log.logger.debug("settings: %s", settings) + return settings + + +class GlobalDataLoader(object): + """ Singleton, inited when started""" + + __instance = None + + @staticmethod + def get_data_loader(scheduler, writer): + if GlobalDataLoader.__instance is None: + GlobalDataLoader.__instance = TADataLoader( + scheduler, writer) + return GlobalDataLoader.__instance + + @staticmethod + def reset(): + GlobalDataLoader.__instance = None + + +def create_data_loader(): + """ + create a data loader with default event_writer, job_scheudler + """ + + from ...splunktalib import event_writer as ew + from ...splunktalib.schedule import scheduler as sched + + writer = ew.EventWriter() + scheduler = sched.Scheduler() + loader = GlobalDataLoader.get_data_loader(scheduler, writer) + return loader diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_helper.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_helper.py new file mode 100755 index 0000000000..345194cb17 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_helper.py @@ -0,0 +1,154 @@ +import hashlib +import json +import os.path as op +import re +from calendar import timegm +from datetime import datetime + +import functools32 +from splunktaucclib.global_config import GlobalConfig, GlobalConfigSchema +from . import ta_consts as c +from ...splunktacollectorlib import config as sc +from ...splunktalib.common import util + + +def utc2timestamp(human_time): + regex1 = ur"\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2}" + match = re.search(regex1, human_time) + if match: + formated = match.group() + else: + return None + + strped_time = datetime.strptime(formated, c.time_fmt) + timestamp = timegm(strped_time.utctimetuple()) + + regex2 = "\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2}(\.\d+)" + match = re.search(regex2, human_time) + if match: + timestamp += float(match.group(1)) + else: + timestamp += float("0.000000") + return timestamp + + +def get_md5(data): + """ + function name is not change, actually use sha1 instead + :param data: + :return: + """ + assert data is not None, "The input cannot be None" + if isinstance(data, (unicode, str)): + return hashlib.sha256(data.encode('utf-8')).hexdigest() + elif isinstance(data, (list, tuple, dict)): + return hashlib.sha256(json.dumps(data).encode('utf-8')).hexdigest() + + +def get_all_conf_contents(server_uri, sessionkey, settings, input_type=None): + schema = GlobalConfigSchema(settings) + global_config = GlobalConfig( + server_uri, sessionkey, schema + ) + inputs = global_config.inputs.load(input_type=input_type) + configs = global_config.configs.load() + settings = global_config.settings.load() + return inputs, configs, settings + + +@functools32.lru_cache(maxsize=64) +def format_name_for_file(name): + return hashlib.sha256(name).hexdigest() + + +class ConfigSchemaHandler(object): + _app_name = util.get_appname_from_path(op.abspath(__file__)) + # Division schema keys. + TYPE = "type" + + TYPE_SINGLE = "single" + TYPE_MULTI = "multi" + REFER = "refer" + SEPARATOR = "separator" + + def __init__(self, meta_configs, client_schema): + self._config = sc.Config(splunkd_uri=meta_configs[c.server_uri], + session_key=meta_configs[c.session_key], + schema=json.dumps(client_schema[ + c.config]), + user="nobody", + app=ConfigSchemaHandler._app_name) + self._client_schema = client_schema + self._all_conf_contents = {} + self._load_conf_contents() + self._division_settings = self._divide_settings() + + def get_endpoints(self): + return self._config.get_endpoints() + + def get_all_conf_contents(self): + return self._all_conf_contents + + def get_single_conf_contents(self, endpoint): + return self._all_conf_contents.get(endpoint) + + def get_division_settings(self): + return self._division_settings + + def _divide_settings(self): + division_schema = self._client_schema[c.division] + division_settings = dict() + for division_endpoint, division_contents in division_schema.iteritems(): + division_settings[division_endpoint] = self._process_division( + division_endpoint, division_contents) + return division_settings + + def _load_conf_contents(self): + self._all_conf_contents = self._config.load() + + def _process_division(self, division_endpoint, division_contents): + division_metrics = [] + assert isinstance(division_contents, dict) + for division_key, division_value in division_contents.iteritems(): + try: + assert self.TYPE in division_value and \ + division_value[self.TYPE] in \ + [self.TYPE_SINGLE, self.TYPE_MULTI] and \ + self.SEPARATOR in division_value if \ + division_value[self.TYPE] == self.TYPE_MULTI else True + except Exception: + raise Exception("Invalid division schema") + division_metrics.append(DivisionRule(division_endpoint, + division_key, + division_value[self.TYPE], + division_value.get( + self.SEPARATOR, + ), + division_value.get( + self.REFER, + ))) + return division_metrics + + +class DivisionRule(object): + def __init__(self, endpoint, metric, type, separator, refer): + self._endpoint = endpoint + self._metric = metric + self._type = type + self._separator = separator + self._refer = refer + + def endpoint(self): + return self._endpoint + + def metric(self): + return self._metric + + def type(self): + return self._type + + def separator(self): + return self._separator + + def refer(self): + return self._refer diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_mod_input.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_mod_input.py new file mode 100755 index 0000000000..282cb3163f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/data_collection/ta_mod_input.py @@ -0,0 +1,272 @@ +#!/usr/bin/python + +""" +This is the main entry point for My TA +""" + +import os.path as op +import platform +import sys +import time + +from . import ta_checkpoint_manager as cpmgr +from . import ta_config as tc +from . import ta_data_client as tdc +from . import ta_data_loader as dl +from ..common import load_schema_file as ld +from ..common import log as stulog +from ...common.lib_util import get_app_root_dir, get_mod_input_script_name +from ...splunktalib import file_monitor as fm +from ...splunktalib import modinput +from ...splunktalib import orphan_process_monitor as opm +from ...splunktalib.common import util as utils + +utils.remove_http_proxy_env_vars() + +__CHECKPOINT_DIR_MAX_LEN__ = 180 + + +def do_scheme( + mod_input_name, + schema_para_list=None, + single_instance=True, +): + """ + Feed splunkd the TA's scheme + + """ + builtin_names = { + "name", "index", "sourcetype", "host", "source", + "disabled", "interval" + } + + param_string_list = [] + if schema_para_list is None: + schema_para_list = () + + for param in schema_para_list: + if param in builtin_names: + continue + + param_string_list.append( + """ + + {param} + 0 + 0 + + """.format(param=param) + ) + + description = ("Go to the add-on's configuration UI and configure" + " modular inputs under the Inputs menu.") + + print """ + + {data_input_title} + {description} + true + xml + {single_instance} + + + + {data_input_title} Data Input Name + + {param_str} + + + + """.format( + single_instance=(str(single_instance)).lower(), + data_input_title=mod_input_name, + param_str=''.join(param_string_list), + description=description, + ) + + +def _setup_signal_handler(data_loader, ta_short_name): + """ + Setup signal handlers + :data_loader: data_loader.DataLoader instance + """ + + def _handle_exit(signum, frame): + stulog.logger.info("{} receives exit signal".format(ta_short_name)) + if data_loader is not None: + data_loader.tear_down() + + utils.handle_tear_down_signals(_handle_exit) + + +def _handle_file_changes(data_loader): + """ + :reload conf files and exit + """ + + def _handle_refresh(changed_files): + stulog.logger.info("Detect {} changed, reboot itself".format( + changed_files)) + data_loader.tear_down() + + return _handle_refresh + + +def _get_conf_files(settings): + rest_root = settings.get("meta").get("restRoot") + file_list = [rest_root + "_settings.conf"] + if settings.get("pages") and settings.get("pages").get("configuration"): + configs = settings.get("pages").get("configuration") + tabs = configs.get("tabs") if configs.get("tabs") else [] + for tab in tabs: + if tab.get("table"): + file_list.append(rest_root + "_" + tab.get("name") + ".conf") + ta_dir = get_app_root_dir() + return [op.join(ta_dir, "local", f) for f in file_list] + + +def run(collector_cls, settings, checkpoint_cls=None, config_cls=None, + log_suffix=None, single_instance=True, cc_json_file=None): + """ + Main loop. Run this TA forever + """ + ta_short_name = settings["meta"]["name"].lower() + + # This is for stdout flush + utils.disable_stdout_buffer() + + # http://bugs.python.org/issue7980 + time.strptime('2016-01-01', '%Y-%m-%d') + + loader = dl.create_data_loader() + + # handle signal + _setup_signal_handler(loader, ta_short_name) + + # monitor files to reboot + try: + monitor = fm.FileMonitor(_handle_file_changes(loader), + _get_conf_files(settings)) + loader.add_timer(monitor.check_changes, time.time(), 10) + except Exception: + stulog.logger.exception("Fail to add files for monitoring") + + # add orphan process handling, which will check each 1 second + orphan_checker = opm.OrphanProcessChecker(loader.tear_down) + loader.add_timer(orphan_checker.check_orphan, time.time(), 1) + + tconfig = tc.create_ta_config(settings, config_cls or tc.TaConfig, + log_suffix, single_instance=single_instance) + task_configs = tconfig.get_task_configs() + + if not task_configs: + stulog.logger.debug("No task and exiting...") + return + meta_config = tconfig.get_meta_config() + meta_config["cc_json_file"] = cc_json_file + + if tconfig.is_shc_member(): + # Don't support SHC env + stulog.logger.error("This host is in search head cluster environment , " + "will exit.") + return + + # In this case, use file for checkpoint + if _is_checkpoint_dir_length_exceed_limit(tconfig, + meta_config["checkpoint_dir"]): + stulog.logger.error("The length of the checkpoint directory path: '{}' " + "is too long. The max length we support is {}", + meta_config["checkpoint_dir"], + __CHECKPOINT_DIR_MAX_LEN__) + return + + jobs = [ + tdc.create_data_collector( + loader, + tconfig, + meta_config, + task_config, + collector_cls, + checkpoint_cls=checkpoint_cls or cpmgr.TACheckPointMgr + ) + for task_config in task_configs + ] + + loader.run(jobs) + + +def _is_checkpoint_dir_length_exceed_limit(config, checkpoint_dir): + return platform.system() == 'Windows' \ + and not config.is_search_head() \ + and len(checkpoint_dir) >= __CHECKPOINT_DIR_MAX_LEN__ + + +def validate_config(): + """ + Validate inputs.conf + """ + + _, configs = modinput.get_modinput_configs_from_stdin() + return 0 + + +def usage(): + """ + Print usage of this binary + """ + + hlp = "%s --scheme|--validate-arguments|-h" + print >> sys.stderr, hlp % sys.argv[0] + sys.exit(1) + + +def main( + collector_cls, + schema_file_path, + log_suffix="modinput", + checkpoint_cls=None, + config_cls=None, + cc_json_file=None, + schema_para_list=None, + single_instance=True +): + """ + Main entry point + """ + assert collector_cls, "ucc modinput collector is None." + assert schema_file_path, "ucc modinput schema file is None" + + settings = ld(schema_file_path) + + mod_input_name = get_mod_input_script_name() + + args = sys.argv + if len(args) > 1: + if args[1] == "--scheme": + do_scheme( + mod_input_name=mod_input_name, + schema_para_list=schema_para_list, + single_instance=single_instance + ) + elif args[1] == "--validate-arguments": + sys.exit(validate_config()) + elif args[1] in ("-h", "--h", "--help"): + usage() + else: + usage() + else: + try: + run( + collector_cls, + settings, + checkpoint_cls=checkpoint_cls, + config_cls=config_cls, + log_suffix=log_suffix, + single_instance=single_instance, + cc_json_file=cc_json_file + ) + except Exception: + stulog.logger.exception( + "{} task encounter exception".format(mod_input_name)) + stulog.logger.info("End {} task".format(mod_input_name)) + sys.exit(0) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/splunk_ta_import_declare.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/splunk_ta_import_declare.py new file mode 100755 index 0000000000..7290cfd88b --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/splunk_ta_import_declare.py @@ -0,0 +1,17 @@ +""" +This module is used to filter and reload PATH. +""" + +import os +import sys +import re + +ta_name = os.path.basename(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +ta_lib_name = re.sub("[^\w]+", "_", ta_name.lower()) +assert ta_name or ta_name == "package", "TA name is None or package" +pattern = re.compile(r"[\\/]etc[\\/]apps[\\/][^\\/]+[\\/]bin[\\/]?$") +new_paths = [path for path in sys.path if not pattern.search(path) or ta_name in path] +new_paths.insert(0, os.path.sep.join([os.path.dirname(__file__), ta_lib_name])) +sys.path = new_paths + + diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/ta_cloud_connect_client.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/ta_cloud_connect_client.py new file mode 100755 index 0000000000..4e5df1ca1b --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktacollectorlib/ta_cloud_connect_client.py @@ -0,0 +1,41 @@ +from .data_collection.ta_data_client import TaDataClient +from ..splunktacollectorlib.common import log as stulog +from ..splunktacollectorlib.data_collection import ta_consts as c +from ..common.log import set_cc_logger + + +class TACloudConnectClient(TaDataClient): + def __init__(self, + meta_config, + task_config, + checkpoint_mgr=None, + event_writer=None + ): + super(TACloudConnectClient, self).__init__(meta_config, + task_config, + checkpoint_mgr, + event_writer) + self._set_log() + self._cc_config_file = self._meta_config["cc_json_file"] + from ..core.pipemgr import PipeManager + from ..client import CloudConnectClient as Client + self._pipe_mgr = PipeManager(event_writer=event_writer) + self._client = Client(self._task_config, self._cc_config_file, + checkpoint_mgr) + + def _set_log(self): + pairs = ['{}="{}"'.format(c.stanza_name, self._task_config[ + c.stanza_name])] + set_cc_logger(stulog.logger, + logger_prefix="[{}]".format(" ".join(pairs))) + + def is_stopped(self): + return self._stop + + def stop(self): + self._stop = True + self._client.stop() + + def get(self): + self._client.start() + raise StopIteration diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/__init__.py new file mode 100755 index 0000000000..46a5ea61bc --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/__init__.py @@ -0,0 +1,2 @@ +__version__ = "0.9" +__license__ = "Splunk" diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/__init__.py new file mode 100755 index 0000000000..e69de29bb2 diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/consts.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/consts.py new file mode 100755 index 0000000000..32fb43865f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/consts.py @@ -0,0 +1 @@ +util_log = "util" diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/log.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/log.py new file mode 100755 index 0000000000..87fe6516e6 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/log.py @@ -0,0 +1,137 @@ +""" +Copyright (C) 2005-2015 Splunk Inc. All Rights Reserved. + +log utility for TA +""" + +import logging +import logging.handlers as handlers +import os +import os.path as op + +from ..splunk_platform import make_splunkhome_path +from . import util as cutil +from .pattern import singleton +import time +logging.Formatter.converter = time.gmtime + +__LOG_FORMAT__ = "%(asctime)s +0000 log_level=%(levelname)s, pid=%(process)d, " \ + "tid=%(threadName)s, file=%(filename)s, " \ + "func_name=%(funcName)s, code_line_no=%(lineno)d | %(message)s" + + +def log_enter_exit(logger): + """ + Log decorator to log function enter and exit + """ + def log_decorator(func): + def wrapper(*args, **kwargs): + logger.debug("{} entered.".format(func.__name__)) + result = func(*args, **kwargs) + logger.debug("{} exited.".format(func.__name__)) + return result + return wrapper + return log_decorator + + +def check_add_stderr_handler(): + env_var = os.environ.get('splunk.cloudconnect.settings.logging.type') + return env_var and env_var == "stderr" + +@singleton +class Logs(object): + + def __init__(self, namespace=None, default_level=logging.INFO): + self._loggers = {} + self._default_level = default_level + if namespace is None: + namespace = cutil.get_appname_from_path(op.abspath(__file__)) + + if namespace: + namespace = namespace.lower() + self._namespace = namespace + + def get_logger(self, name, level=None, + maxBytes=25000000, backupCount=5): + """ + Set up a default logger. + + :param name: The log file name. + :param level: The logging level. + :param maxBytes: The maximum log file size before rollover. + :param backupCount: The number of log files to retain. + """ + + # Strip ".py" from the log file name if auto-generated by a script. + if level is None: + level = self._default_level + + name = self._get_log_name(name) + if name in self._loggers: + return self._loggers[name] + + logger = logging.getLogger(name) + + if check_add_stderr_handler(): + import sys + ch = logging.StreamHandler(sys.stderr) + ch.setLevel(logging.ERROR) + formatter = logging.Formatter(__LOG_FORMAT__) + ch.setFormatter(formatter) + logger.addHandler(ch) + else: + logfile = make_splunkhome_path(["var", "log", "splunk", name]) + handler_exists = any( + [True for h in logger.handlers if h.baseFilename == logfile]) + if not handler_exists: + file_handler = handlers.RotatingFileHandler( + logfile, mode="a", maxBytes=maxBytes, backupCount=backupCount) + formatter = logging.Formatter(__LOG_FORMAT__ ) + file_handler.setFormatter(formatter) + logger.addHandler(file_handler) + logger.setLevel(level) + logger.propagate = False + + self._loggers[name] = logger + return logger + + def set_level(self, level, name=None): + """ + Change the log level of the logging + + :param level: the level of the logging to be setLevel + :param name: the name of the logging to set, in case it is not set, + all the loggers will be affected + """ + + if name is not None: + name = self._get_log_name(name) + logger = self._loggers.get(name) + if logger is not None: + logger.setLevel(level) + else: + self._default_level = level + for logger in self._loggers.itervalues(): + logger.setLevel(level) + + def _get_log_name(self, name): + if name.endswith(".py"): + name = name.replace(".py", "") + + if self._namespace: + name = "{}_{}.log".format(self._namespace, name) + else: + name = "{}.log" .format(name) + return name + +# Global logger +logger = Logs().get_logger("util") + + +def reset_logger(name): + """ + Reset global logger. + """ + + global logger + logger = Logs().get_logger(name) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/pattern.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/pattern.py new file mode 100755 index 0000000000..2edd2bba12 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/pattern.py @@ -0,0 +1,37 @@ +""" +Copyright (C) 2005-2015 Splunk Inc. All Rights Reserved. + +Commonly used design partten for python user, includes: + - singleton (Decorator function used to build singleton) +""" + +from functools import wraps + + +def singleton(class_): + """ + Singleton decoorator function. + """ + instances = {} + + @wraps(class_) + def getinstance(*args, **kwargs): + if class_ not in instances: + instances[class_] = class_(*args, **kwargs) + return instances[class_] + return getinstance + + +class Singleton(type): + """ + Singleton meta class + """ + + _instances = {} + + def __call__(cls, *args, **kwargs): + if cls not in cls._instances: + cls._instances[cls] = super(Singleton, cls).__call__( + *args, **kwargs) + print cls + return cls._instances[cls] diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/util.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/util.py new file mode 100755 index 0000000000..15d172df92 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/util.py @@ -0,0 +1,108 @@ +""" +Copyright (C) 2005-2015 Splunk Inc. All Rights Reserved. +""" + +import os +import os.path as op +import datetime +import sys +import gc +import urllib + + +def handle_tear_down_signals(callback): + import signal + + signal.signal(signal.SIGTERM, callback) + signal.signal(signal.SIGINT, callback) + + if os.name == "nt": + signal.signal(signal.SIGBREAK, callback) + + +def datetime_to_seconds(dt): + epoch_time = datetime.datetime.utcfromtimestamp(0) + return (dt - epoch_time).total_seconds() + + +def is_true(val): + value = str(val).strip().upper() + if value in ("1", "TRUE", "T", "Y", "YES"): + return True + return False + + +def is_false(val): + value = str(val).strip().upper() + if value in ("0", "FALSE", "F", "N", "NO", "NONE", ""): + return True + return False + + +def remove_http_proxy_env_vars(): + for k in ("http_proxy", "https_proxy"): + if k in os.environ: + del os.environ[k] + elif k.upper() in os.environ: + del os.environ[k.upper()] + + +def get_appname_from_path(absolute_path): + absolute_path = op.normpath(absolute_path) + parts = absolute_path.split(os.path.sep) + parts.reverse() + for key in ("apps", "slave-apps", "master-apps"): + try: + idx = parts.index(key) + except ValueError: + continue + else: + try: + if parts[idx + 1] == "etc": + return parts[idx - 1] + except IndexError: + pass + continue + #return None + return "-" + + +def escape_cdata(data): + # FIXME: This is a workaround for JIRA [addon-10459] + data = data.decode("utf-8", errors="replace").encode("utf-8", errors="xmlcharrefreplace") + data = data.replace("]]>", "]]>") + if data.endswith("]"): + data = data[:-1] + "%5D" + return data + + +def extract_datainput_name(stanza_name): + """ + stansa_name: string like aws_s3://my_s3_data_input + """ + + sep = "://" + try: + idx = stanza_name.index(sep) + except ValueError: + return stanza_name + + return stanza_name[idx + len(sep):] + + +def escape_json_control_chars(json_str): + control_chars = ((r"\n", "\\\\n"), (r"\r", "\\\\r"), + (r"\r\n", "\\\\r\\\\n")) + for ch, replace in control_chars: + json_str = json_str.replace(ch, replace) + return json_str + + +def disable_stdout_buffer(): + os.environ["PYTHONUNBUFFERED"] = "1" + sys.stdout = os.fdopen(sys.stdout.fileno(), "w", 0) + gc.garbage.append(sys.stdout) + + +def format_stanza_name(name): + return urllib.quote(name.encode("utf-8"), "") diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/xml_dom_parser.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/xml_dom_parser.py new file mode 100755 index 0000000000..ae5a571cf3 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/common/xml_dom_parser.py @@ -0,0 +1,47 @@ +import re +from xml.etree import cElementTree as et + + +def parse_conf_xml_dom(xml_content): + """ + @xml_content: XML DOM from splunkd + """ + + m = re.search(r'xmlns="([^"]+)"', xml_content) + ns = m.group(1) + m = re.search(r'xmlns:s="([^"]+)"', xml_content) + sub_ns = m.group(1) + entry_path = "./{%s}entry" % ns + stanza_path = "./{%s}title" % ns + key_path = "./{%s}content/{%s}dict/{%s}key" % (ns, sub_ns, sub_ns) + meta_path = "./{%s}dict/{%s}key" % (sub_ns, sub_ns) + list_path = "./{%s}list/{%s}item" % (sub_ns, sub_ns) + + xml_conf = et.fromstring(xml_content) + stanza_objs = [] + for entry in xml_conf.iterfind(entry_path): + for stanza in entry.iterfind(stanza_path): + stanza_obj = {"name": stanza.text,"stanza": stanza.text} + break + else: + continue + + for key in entry.iterfind(key_path): + if key.get("name") == "eai:acl": + meta = {} + for k in key.iterfind(meta_path): + meta[k.get("name")] = k.text + stanza_obj[key.get("name")] = meta + elif key.get("name") != "eai:attributes": + name = key.get("name") + if name.startswith("eai:"): + name = name[4:] + list_vals = [k.text for k in key.iterfind(list_path)] + if list_vals: + stanza_obj[name] = list_vals + else: + stanza_obj[name] = key.text + if key.text == "None": + stanza_obj[name] = None + stanza_objs.append(stanza_obj) + return stanza_objs diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/__init__.py new file mode 100755 index 0000000000..e69de29bb2 diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/concurrent_executor.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/concurrent_executor.py new file mode 100755 index 0000000000..d4ffd9dc79 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/concurrent_executor.py @@ -0,0 +1,88 @@ +""" +Concurrent executor provides concurrent executing function either in +a thread pool or a process pool +""" + +from ..concurrent import thread_pool as tp +from ..concurrent import process_pool as pp + + +class ConcurrentExecutor(object): + + def __init__(self, config): + """ + :param config: dict like object, contains thread_min_size (int), + thread_max_size (int), daemonize_thread (bool), + process_size (int) + """ + + self._io_executor = tp.ThreadPool(config.get("thread_min_size", 0), + config.get("thread_max_size", 0), + config.get("task_queue_size", 1024), + config.get("daemonize_thread", True)) + self._compute_executor = None + if config.get("process_size", 0): + self._compute_executor = pp.ProcessPool( + config.get("process_size", 0)) + + def start(self): + self._io_executor.start() + + def tear_down(self): + self._io_executor.tear_down() + if self._compute_executor is not None: + self._compute_executor.tear_down() + + def run_io_func_sync(self, func, args=(), kwargs=None): + """ + :param func: callable + :param args: free params + :param kwargs: named params + :return whatever the func returns + """ + + return self._io_executor.apply(func, args, kwargs) + + def run_io_func_async(self, func, args=(), kwargs=None, callback=None): + """ + :param func: callable + :param args: free params + :param kwargs: named params + :calllback: when func is done and without exception, call the callback + :return whatever the func returns + """ + + return self._io_executor.apply_async(func, args, kwargs, callback) + + def enqueue_io_funcs(self, funcs, block=True): + """ + run jobs in a fire and forget way, no result will be handled + over to clients + :param funcs: tuple/list-like or generator like object, func shall be + callable + """ + + return self._io_executor.enqueue_funcs(funcs, block) + + def run_compute_func_sync(self, func, args=(), kwargs={}): + """ + :param func: callable + :param args: free params + :param kwargs: named params + :return whatever the func returns + """ + + assert self._compute_executor is not None + return self._compute_executor.apply(func, args, kwargs) + + def run_compute_func_async(self, func, args=(), kwargs={}, callback=None): + """ + :param func: callable + :param args: free params + :param kwargs: named params + :calllback: when func is done and without exception, call the callback + :return whatever the func returns + """ + + assert self._compute_executor is not None + return self._compute_executor.apply_async(func, args, kwargs, callback) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/process_pool.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/process_pool.py new file mode 100755 index 0000000000..1103b7778f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/process_pool.py @@ -0,0 +1,63 @@ +""" +A wrapper of multiprocessing.pool +""" + +import multiprocessing +from ..common import log + + +class ProcessPool(object): + """ + A simple wrapper of multiprocessing.pool + """ + + def __init__(self, size=0, maxtasksperchild=10000): + if size <= 0: + size = multiprocessing.cpu_count() + self.size = size + self._pool = multiprocessing.Pool(processes=size, + maxtasksperchild=maxtasksperchild) + self._stopped = False + + def tear_down(self): + """ + Tear down the pool + """ + + if self._stopped: + log.logger.info("ProcessPool has already stopped.") + return + self._stopped = True + + self._pool.close() + self._pool.join() + log.logger.info("ProcessPool stopped.") + + def apply(self, func, args=(), kwargs={}): + """ + :param func: callable + :param args: free params + :param kwargs: named params + :return whatever the func returns + """ + + if self._stopped: + log.logger.info("ProcessPool has already stopped.") + return None + + return self._pool.apply(func, args, kwargs) + + def apply_async(self, func, args=(), kwargs={}, callback=None): + """ + :param func: callable + :param args: free params + :param kwargs: named params + :callback: when func is done without exception, call this callack + :return whatever the func returns + """ + + if self._stopped: + log.logger.info("ProcessPool has already stopped.") + return None + + return self._pool.apply_async(func, args, kwargs, callback) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/thread_pool.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/thread_pool.py new file mode 100755 index 0000000000..189006144f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/concurrent/thread_pool.py @@ -0,0 +1,344 @@ +""" +A simple thread pool implementation +""" + +import threading +import Queue +import multiprocessing +import traceback +import exceptions +from time import time + +from ..common import log + + +class ThreadPool(object): + """ + A simple thread pool implementation + """ + + _high_watermark = 0.2 + _resize_window = 10 + + def __init__(self, min_size=1, max_size=128, + task_queue_size=1024, daemon=True): + assert task_queue_size + + if not min_size or min_size <= 0: + min_size = multiprocessing.cpu_count() + + if not max_size or max_size <= 0: + max_size = multiprocessing.cpu_count() * 8 + + self._min_size = min_size + self._max_size = max_size + self._daemon = daemon + + self._work_queue = Queue.Queue(task_queue_size) + self._thrs = [] + for _ in range(min_size): + thr = threading.Thread(target=self._run) + self._thrs.append(thr) + self._admin_queue = Queue.Queue() + self._admin_thr = threading.Thread(target=self._do_admin) + self._last_resize_time = time() + self._last_size = min_size + self._lock = threading.Lock() + self._occupied_threads = 0 + self._count_lock = threading.Lock() + self._started = False + + def start(self): + """ + Start threads in the pool + """ + + with self._lock: + if self._started: + return + self._started = True + + for thr in self._thrs: + thr.daemon = self._daemon + thr.start() + + self._admin_thr.start() + log.logger.info("ThreadPool started.") + + def tear_down(self): + """ + Tear down thread pool + """ + + with self._lock: + if not self._started: + return + self._started = False + + for thr in self._thrs: + self._work_queue.put(None, block=True) + + self._admin_queue.put(None) + + if not self._daemon: + log.logger.info("Wait for threads to stop.") + for thr in self._thrs: + thr.join() + self._admin_thr.join() + + log.logger.info("ThreadPool stopped.") + + def enqueue_funcs(self, funcs, block=True): + """ + run jobs in a fire and forget way, no result will be handled + over to clients + :param funcs: tuple/list-like or generator like object, func shall be + callable + """ + + if not self._started: + log.logger.info("ThreadPool has already stopped.") + return + + for func in funcs: + self._work_queue.put(func, block) + + def apply_async(self, func, args=(), kwargs=None, callback=None): + """ + :param func: callable + :param args: free params + :param kwargs: named params + :callback: when func is done and without exception, call the callback + :return AsyncResult, clients can poll or wait the result through it + """ + + if not self._started: + log.logger.info("ThreadPool has already stopped.") + return None + + res = AsyncResult(func, args, kwargs, callback) + self._work_queue.put(res) + return res + + def apply(self, func, args=(), kwargs=None): + """ + :param func: callable + :param args: free params + :param kwargs: named params + :return whatever the func returns + """ + + if not self._started: + log.logger.info("ThreadPool has already stopped.") + return None + + res = self.apply_async(func, args, kwargs) + return res.get() + + def size(self): + return self._last_size + + def resize(self, new_size): + """ + Resize the pool size, spawn or destroy threads if necessary + """ + + if new_size <= 0: + return + + if self._lock.locked() or not self._started: + log.logger.info("Try to resize thread pool during the tear " + "down process, do nothing") + return + + with self._lock: + self._remove_exited_threads_with_lock() + size = self._last_size + self._last_size = new_size + if new_size > size: + for _ in xrange(new_size - size): + thr = threading.Thread(target=self._run) + thr.daemon = self._daemon + thr.start() + self._thrs.append(thr) + elif new_size < size: + for _ in xrange(size - new_size): + self._work_queue.put(None) + log.logger.info("Finished ThreadPool resizing. New size=%d", new_size) + + def _remove_exited_threads_with_lock(self): + """ + Join the exited threads last time when resize was called + """ + + joined_thrs = set() + for thr in self._thrs: + if not thr.is_alive(): + try: + if not thr.daemon: + thr.join(timeout=0.5) + joined_thrs.add(thr.ident) + except RuntimeError: + pass + + if joined_thrs: + live_thrs = [] + for thr in self._thrs: + if thr.ident not in joined_thrs: + live_thrs.append(thr) + self._thrs = live_thrs + + def _do_resize_according_to_loads(self): + if (self._last_resize_time and + time() - self._last_resize_time < self._resize_window): + return + + thr_size = self._last_size + free_thrs = thr_size - self._occupied_threads + work_size = self._work_queue.qsize() + + log.logger.debug("current_thr_size=%s, free_thrs=%s, work_size=%s", + thr_size, free_thrs, work_size) + if work_size and work_size > free_thrs: + if thr_size < self._max_size: + thr_size = min(thr_size * 2, self._max_size) + self.resize(thr_size) + elif free_thrs > 0: + free = free_thrs * 1.0 + if free / thr_size >= self._high_watermark and free_thrs >= 2: + # 20 % thrs are idle, tear down half of the idle ones + thr_size = thr_size - free_thrs / 2 + if thr_size > self._min_size: + self.resize(thr_size) + self._last_resize_time = time() + + def _do_admin(self): + admin_q = self._admin_queue + resize_win = self._resize_window + while 1: + try: + wakup = admin_q.get(timeout=resize_win + 1) + except Queue.Empty: + self._do_resize_according_to_loads() + continue + + if wakup is None: + break + else: + self._do_resize_according_to_loads() + log.logger.info("ThreadPool admin thread=%s stopped.", + threading.current_thread().getName()) + + def _run(self): + """ + Threads callback func, run forever to handle jobs from the job queue + """ + + work_queue = self._work_queue + count_lock = self._count_lock + while 1: + log.logger.debug("Going to get job") + func = work_queue.get() + if func is None: + break + + if not self._started: + break + + log.logger.debug("Going to exec job") + with count_lock: + self._occupied_threads += 1 + + try: + func() + except Exception: + log.logger.error(traceback.format_exc()) + + with count_lock: + self._occupied_threads -= 1 + + log.logger.debug("Done with exec job") + log.logger.info("Thread work_queue_size=%d", work_queue.qsize()) + + log.logger.debug("Worker thread %s stopped.", + threading.current_thread().getName()) + + +class AsyncResult(object): + + def __init__(self, func, args, kwargs, callback): + self._func = func + self._args = args + self._kwargs = kwargs + self._callback = callback + self._q = Queue.Queue() + + def __call__(self): + try: + if self._args and self._kwargs: + res = self._func(*self._args, **self._kwargs) + elif self._args: + res = self._func(*self._args) + elif self._kwargs: + res = self._func(**self._kwargs) + else: + res = self._func() + except Exception as e: + self._q.put(e) + return + else: + self._q.put(res) + + if self._callback is not None: + self._callback() + + def get(self, timeout=None): + """ + Return the result when it arrives. If timeout is not None and the + result does not arrive within timeout seconds then + multiprocessing.TimeoutError is raised. If the remote call raised an + exception then that exception will be reraised by get(). + """ + + try: + res = self._q.get(timeout=timeout) + except Queue.Empty: + raise multiprocessing.TimeoutError("Timed out") + + if isinstance(res, Exception): + raise res + return res + + def wait(self, timeout=None): + """ + Wait until the result is available or until timeout seconds pass. + """ + + try: + res = self._q.get(timeout=timeout) + except Queue.Empty: + pass + else: + self._q.put(res) + + def ready(self): + """ + Return whether the call has completed. + """ + + return len(self._q) + + def successful(self): + """ + Return whether the call completed without raising an exception. + Will raise AssertionError if the result is not ready. + """ + + if not self.ready(): + raise exceptions.AssertionError("Function is not ready") + res = self._q.get() + self._q.put(res) + + if isinstance(res, Exception): + return False + return True diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/__init__.py new file mode 100755 index 0000000000..e69de29bb2 diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/conf_endpoints.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/conf_endpoints.py new file mode 100755 index 0000000000..ed4be865db --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/conf_endpoints.py @@ -0,0 +1,142 @@ +from .request import content_request +from ..common import util +from ..common import xml_dom_parser as xdp + +CONF_ENDPOINT = "%s/servicesNS/%s/%s/configs/conf-%s" + + +def _conf_endpoint_ns(uri, owner, app, conf_name): + return CONF_ENDPOINT % (uri, owner, app, conf_name) + + +def reload_conf(splunkd_uri, session_key, app_name, conf_name, throw=False): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param conf_names: a list of the name of the conf file, e.g. ["props"] + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + """ + + uri = _conf_endpoint_ns(splunkd_uri, "nobody", app_name, conf_name) + uri += "/_reload" + msg = "Failed to reload conf in app=%s: %s" % (app_name, conf_name) + + try: + content_request(uri, session_key, "GET", None, msg) + except Exception: + if throw: + raise + + +def create_stanza(splunkd_uri, session_key, owner, app_name, conf_name, + stanza, key_values): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param conf_name: the name of the conf file, e.g. "props" + :param stanza: stanza name, e.g. "aws:cloudtrail" + :param key_values: the key-value dict of the stanza + :return: None on success otherwise throw exception + """ + + uri = _conf_endpoint_ns(splunkd_uri, owner, app_name, conf_name) + msg = "Failed to create stanza=%s in conf=%s" % (stanza, conf_name) + payload = {"name": unicode(stanza).encode('utf-8')} + for key in key_values: + if key != "name": + payload[key] = str(key_values[key]) + + content_request(uri, session_key, "POST", payload, msg) + + +def get_conf(splunkd_uri, session_key, owner, app_name, conf_name, + stanza=None): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param conf_name: the name of the conf file, e.g. "props" + :param stanza: stanza name, e.g. "aws:cloudtrail" + :return: a list of stanzas in the conf file, including metadata + """ + + uri = _conf_endpoint_ns(splunkd_uri, owner, app_name, conf_name) + + if stanza: + uri += "/" + util.format_stanza_name(stanza) + + # get all the stanzas at one time + uri += "?count=0&offset=0" + + msg = "Failed to get stanza=%s in conf=%s" % (stanza if stanza else stanza, conf_name) + content = content_request(uri, session_key, "GET", None, msg) + return xdp.parse_conf_xml_dom(content) + + +def update_stanza(splunkd_uri, session_key, owner, app_name, conf_name, + stanza, key_values): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param conf_name: the name of the conf file, e.g. "props" + :param stanza: stanza name, e.g. "aws:cloudtrail" + :param key_values: the key-value dict of the stanza + :return: None on success otherwise raise exception + """ + + uri = _conf_endpoint_ns(splunkd_uri, owner, app_name, conf_name) + uri += "/" + util.format_stanza_name(stanza) + msg = "Failed to update stanza=%s in conf=%s" % (stanza, conf_name) + return content_request(uri, session_key, "POST", key_values, msg) + + +def delete_stanza(splunkd_uri, session_key, owner, app_name, conf_name, + stanza, throw=False): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param conf_name: the name of the conf file, e.g. "props" + :param stanza: stanza name, e.g. "aws:cloudtrail" + :return: None on success otherwise raise exception + """ + + uri = _conf_endpoint_ns(splunkd_uri, owner, app_name, conf_name) + uri += "/" + util.format_stanza_name(stanza) + msg = "Failed to delete stanza=%s in conf=%s" % (stanza, conf_name) + content_request(uri, session_key, "DELETE", None, msg) + + +def stanza_exist(splunkd_uri, session_key, owner, app_name, conf_name, + stanza): + try: + res = get_conf(splunkd_uri, session_key, owner, app_name, conf_name, + stanza) + return len(res) > 0 + except Exception: + return False + + +def operate_conf(splunkd_uri, session_key, owner, app_name, conf_name, + stanza, operation): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param conf_name: the name of the conf file, e.g. "props" + :param stanza: stanza name, e.g. "aws:cloudtrail" + :param operation: must be "disable" or "enable" + """ + + assert operation in ("disable", "enable") + uri = _conf_endpoint_ns(splunkd_uri, owner, app_name, conf_name) + uri += "/%s/%s" % (util.format_stanza_name(stanza), operation) + msg = "Failed to disable/enable stanza=%s in conf=%s" % (stanza, conf_name) + content_request(uri, session_key, "POST", None, msg) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/conf_manager.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/conf_manager.py new file mode 100755 index 0000000000..c399f5cbdf --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/conf_manager.py @@ -0,0 +1,225 @@ +""" +This module hanles configuration related stuff +""" + +import os.path as op + +from . import conf_endpoints as scmc +from . import data_input_endpoints as scmdi +from . import property_endpoints as scmp +from . import request as req + + +def conf_file2name(conf_file): + conf_name = op.basename(conf_file) + if conf_name.endswith(".conf"): + conf_name = conf_name[:-5] + return conf_name + + +class ConfManager(object): + + def __init__(self, splunkd_uri, session_key, owner="nobody", app_name="-"): + """ + :app_name: when creating conf stanza, app_name is required to set not + to "-" + :owner: when creating conf stanza, app_name is required to set not + to "-" + """ + + self.splunkd_uri = splunkd_uri + self.session_key = session_key + self.owner = owner + self.app_name = app_name + + def set_appname(self, appname): + """ + This are cases we need edit/remove/create confs in different app + context. call this interface to switch app context before manipulate + the confs in different app context + """ + + self.app_name = appname + + def all_stanzas(self, conf_name, do_reload=False, ret_metadata=False): + """ + :return: a list of dict stanza objects if successful. + Otherwise raise exception + """ + + if do_reload: + self.reload_conf(conf_name) + + stanzas = scmc.get_conf(self.splunkd_uri, self.session_key, + "-", "-", conf_name) + return self._delete_metadata(stanzas, ret_metadata) + + def all_stanzas_as_dicts(self, conf_name, do_reload=False, + ret_metadata=False): + """ + :return: a dict of dict stanza objects if successful. + otherwise raise exception + """ + + stanzas = self.all_stanzas(conf_name, do_reload, ret_metadata) + return {stanza["name"]: stanza for stanza in stanzas} + + def get_stanza(self, conf_name, stanza, + do_reload=False, ret_metadata=False): + """ + @return dict if success otherwise raise exception + """ + + if do_reload: + self.reload_conf(conf_name) + + stanzas = scmc.get_conf(self.splunkd_uri, self.session_key, + "-", "-", conf_name, stanza) + stanzas = self._delete_metadata(stanzas, ret_metadata) + return stanzas[0] + + def reload_conf(self, conf_name): + scmc.reload_conf(self.splunkd_uri, self.session_key, "-", conf_name) + + def enable_conf(self, conf_name, stanza): + scmc.operate_conf(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + conf_name, stanza, "enable") + + def disable_conf(self, conf_name, stanza): + scmc.operate_conf(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + conf_name, stanza, "disable") + + def get_property(self, conf_name, stanza, key, do_reload=False): + if do_reload: + self.reload_conf(conf_name) + + return scmp.get_property(self.splunkd_uri, self.session_key, + "-", "-", conf_name, stanza, key) + + def stanza_exist(self, conf_name, stanza): + return scmc.stanza_exist(self.splunkd_uri, self.session_key, + "-", "-", conf_name, stanza) + + def create_stanza(self, conf_name, stanza, key_values): + scmc.create_stanza(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + conf_name, stanza, key_values) + + def update_stanza(self, conf_name, stanza, key_values): + scmc.update_stanza(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + conf_name, stanza, key_values) + + def delete_stanza(self, conf_name, stanza): + scmc.delete_stanza(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + conf_name, stanza) + + def create_properties(self, conf_name, stanza): + scmp.create_properties(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + conf_name, stanza) + + def update_properties(self, conf_name, stanza, key_values): + scmp.update_properties(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + conf_name, stanza, key_values) + + def delete_stanzas(self, conf_name, stanzas): + """ + :param stanzas: list of stanzas + :return: list of failed stanzas + """ + + failed_stanzas = [] + for stanza in stanzas: + try: + self.delete_stanza(conf_name, stanza) + except Exception: + failed_stanzas.append(stanza) + return failed_stanzas + + # data input management + def create_data_input(self, input_type, name, key_values=None): + scmdi.create_data_input(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + input_type, name, key_values) + + def update_data_input(self, input_type, name, key_values): + scmdi.update_data_input(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + input_type, name, key_values) + + def delete_data_input(self, input_type, name): + scmdi.delete_data_input(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + input_type, name) + + def get_data_input(self, input_type, name=None, do_reload=False): + if do_reload: + self.reload_data_input(input_type) + + return scmdi.get_data_input(self.splunkd_uri, self.session_key, + "-", "-", input_type, name) + + def reload_data_input(self, input_type): + scmdi.reload_data_input(self.splunkd_uri, self.session_key, + "-", "-", input_type) + + def enable_data_input(self, input_type, name): + scmdi.operate_data_input(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + input_type, name, "enable") + + def disable_data_input(self, input_type, name): + scmdi.operate_data_input(self.splunkd_uri, self.session_key, + self.owner, self.app_name, + input_type, name, "disable") + + def data_input_exist(self, input_type, name): + try: + result = self.get_data_input(input_type, name) + except req.ConfNotExistsException: + return False + + return result is not None + + def all_data_input_stanzas(self, input_type, do_reload=False, + ret_metadata=False): + stanzas = self.get_data_input(input_type, do_reload=do_reload) + for stanza in stanzas: + if "eai:acl" in stanza and "app" in stanza["eai:acl"]: + stanza["appName"] = stanza["eai:acl"]["app"] + stanza["userName"] = stanza["eai:acl"].get("owner", "nobody") + return self._delete_metadata(stanzas, ret_metadata) + + def get_data_input_stanza(self, input_type, name, do_reload=False, + ret_metadata=False): + + stanzas = self.get_data_input(input_type, name, do_reload) + stanzas = self._delete_metadata(stanzas, ret_metadata) + return stanzas[0] + + def delete_data_input_stanzas(self, input_type, names): + """ + :param stanzas: list of stanzas + :return: list of failed stanzas + """ + + failed_names = [] + for name in names: + try: + self.delete_data_input(input_type, name) + except Exception: + failed_names.append(name) + return failed_names + + def _delete_metadata(self, stanzas, ret_metadata): + if stanzas and not ret_metadata: + for stanza in stanzas: + for key in stanza.keys(): + if key.startswith("eai:"): + del stanza[key] + return stanzas diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/data_input_endpoints.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/data_input_endpoints.py new file mode 100755 index 0000000000..b87959def2 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/data_input_endpoints.py @@ -0,0 +1,152 @@ +from .request import content_request +from ..common import util +from ..common import xml_dom_parser as xdp + +INPUT_ENDPOINT = "%s/servicesNS/%s/%s/data/inputs/%s" + + +def _input_endpoint_ns(uri, owner, app, input_type): + return INPUT_ENDPOINT % (uri, owner, app, input_type) + + +def reload_data_input(splunkd_uri, session_key, owner, app_name, + input_type, throw=False): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param input_type: name of the input type. + if it is a script input, the input is "script", + for modinput, say snow, the input is "snow" + """ + + uri = _input_endpoint_ns(splunkd_uri, owner, app_name, input_type) + uri += "/_reload" + msg = "Failed to reload data input in app=%s: %s" % (app_name, input_type) + try: + content_request(uri, session_key, "GET", None, msg) + except Exception: + if throw: + raise + + +def create_data_input(splunkd_uri, session_key, owner, app_name, input_type, + name, key_values): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param input_type: name of the input type. + if it is a script input, the input is "script", + for modinput, say snow, the input is "snow" + :param name: The name of the input stanza to create. + i.e. stanza [://] will be created. + :param key_values: a K-V dict of details in the data input stanza. + :return: None on success else raise exception + """ + + key_values["name"] = unicode(name).encode('utf-8') + uri = _input_endpoint_ns(splunkd_uri, owner, app_name, input_type) + msg = "Failed to create data input in app=%s: %s://%s" % ( + app_name, input_type, name) + content_request(uri, session_key, "POST", key_values, msg) + + +def get_data_input(splunkd_uri, session_key, owner, app_name, input_type, + name=None): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param input_type: name of the input type. + if it is a script input, the input is "script", + for modinput, say snow, the input is "snow" + :param name: The name of the input stanza to create. + i.e. stanza [://] will be deleted. + :return: a list of stanzas in the input type, including metadata + """ + + uri = _input_endpoint_ns(splunkd_uri, owner, app_name, input_type) + if name: + uri += "/" + util.format_stanza_name(name) + + # get all the stanzas at one time + uri += "?count=0&offset=0" + + msg = "Failed to get data input in app=%s: %s://%s" % ( + app_name, input_type, name if name else name) + content = content_request(uri, session_key, "GET", None, msg) + return xdp.parse_conf_xml_dom(content) + + +def update_data_input(splunkd_uri, session_key, owner, app_name, input_type, + name, key_values): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param input_type: name of the input type. + if it is a script input, the input is "script", + for modinput, say snow, the input is "snow" + :param name: The name of the input stanza to create. + i.e. stanza [://] will be updated. + :param key_values: a K-V dict of details in the data input stanza. + :return: raise exception when failure + """ + + if "name" in key_values: + del key_values["name"] + uri = _input_endpoint_ns(splunkd_uri, owner, app_name, input_type) + uri += "/" + util.format_stanza_name(name) + msg = "Failed to update data input in app=%s: %s://%s" % ( + app_name, input_type, name) + content_request(uri, session_key, "POST", key_values, msg) + + +def delete_data_input(splunkd_uri, session_key, owner, app_name, input_type, + name): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param input_type: name of the input type. + if it is a script input, the input is "script", + for modinput, say snow, the input is "snow" + :param name: The name of the input stanza to create. + i.e. stanza [://] will be deleted. + :return raise exception when failed + """ + + uri = _input_endpoint_ns(splunkd_uri, owner, app_name, input_type) + uri += "/" + util.format_stanza_name(name) + msg = "Failed to delete data input in app=%s: %s://%s" % ( + app_name, input_type, name) + content_request(uri, session_key, "DELETE", None, msg) + + +def operate_data_input(splunkd_uri, session_key, owner, app_name, + input_type, name, operation): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param input_type: name of the input type. + if it is a script input, the input is "script", + for modinput, say snow, the input is "snow" + :param name: The name of the input stanza to create. + i.e. stanza [://] will be operated. + :param operation: must be "disable" or "enable" + """ + + assert operation in ("disable", "enable") + uri = _input_endpoint_ns(splunkd_uri, owner, app_name, input_type) + uri += "/%s/%s" % (util.format_stanza_name(name), operation) + msg = "Failed to %s data input in app=%s: %s://%s" % ( + operation, app_name, input_type, name) + content_request(uri, session_key, "POST", None, msg) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/knowledge_objects.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/knowledge_objects.py new file mode 100755 index 0000000000..2ca49d7a9d --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/knowledge_objects.py @@ -0,0 +1,36 @@ +from . import request as req +from ..common import xml_dom_parser as xdp + + +class KnowledgeObjectManager(object): + + def __init__(self, splunkd_uri, session_key): + self.splunkd_uri = splunkd_uri + self.session_key = session_key + + def apps(self): + """ + @return: a list of dict containing apps if successfuly otherwise + otherwise raise exceptions + """ + + uri = "{}/services/apps/local?count=0&offset=0".format( + self.splunkd_uri) + apps = self._do_request(uri, "GET", None, "Failed to get apps") + return apps + + def indexes(self): + """ + @return: a list of dict containing indexes if successfuly + otherwise raise exceptions + """ + + uri = "{}/services/data/indexes/?count=0&offset=0".format( + self.splunkd_uri) + indexes = self._do_request(uri, "GET", None, "Failed to get indexes") + return indexes + + def _do_request(self, uri, method, payload, err_msg): + _, content = req.content_request(uri, self.session_key, method, + payload, err_msg) + return xdp.parse_conf_xml_dom(content) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/property_endpoints.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/property_endpoints.py new file mode 100755 index 0000000000..a7249a33d1 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/property_endpoints.py @@ -0,0 +1,78 @@ +from .request import content_request +from ..common import util + + +PROPERTY_ENDPOINT = "%s/servicesNS/%s/%s/properties/%s" + + +def _property_endpoint_ns(uri, owner, app, conf_name): + return PROPERTY_ENDPOINT % (uri, owner, app, conf_name) + + +def create_properties(splunkd_uri, session_key, owner, app_name, conf_name, + stanza): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param conf_name: the name of the conf file, e.g. "props" + :param stanza: stanza name, e.g. "aws:cloudtrail" + :return: None on success else raise exception + """ + + uri = _property_endpoint_ns(splunkd_uri, owner, app_name, conf_name) + msg = "Properties: failed to create stanza=%s in conf=%s" % \ + (stanza, conf_name) + payload = {"__stanza": stanza} + content_request(uri, session_key, "POST", payload, msg) + + +def get_property(splunkd_uri, session_key, owner, app_name, conf_name, + stanza, key): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param conf_name: the name of the conf file, e.g. "props" + :param stanza: stanza name, e.g. "aws:cloudtrail" + :param key: the property name + :return: the property value + """ + + uri = _property_endpoint_ns(splunkd_uri, owner, app_name, conf_name) + uri += "/%s/%s" % (util.format_stanza_name(stanza), key) + msg = "Properties: failed to get conf=%s, stanza=%s, key=%s" % \ + (conf_name, stanza, key) + return content_request(uri, session_key, "GET", None, msg) + + +def update_properties(splunkd_uri, session_key, owner, app_name, conf_name, + stanza, key_values): + """ + :param splunkd_uri: splunkd uri, e.g. https://127.0.0.1:8089 + :param session_key: splunkd session key + :param owner: the owner (ACL user), e.g. "-", "nobody" + :param app_name: the app"s name, e.g. "Splunk_TA_aws" + :param conf_name: the name of the conf file, e.g. "props" + :param stanza: stanza name, e.g. "aws:cloudtrail" + :param key_values: the key-value dict of the stanza + :return: raise exception when failed + """ + + uri = _property_endpoint_ns(splunkd_uri, owner, app_name, conf_name) + uri += "/" + util.format_stanza_name(stanza) + msg = "Properties: failed to update conf=%s, stanza=%s" % \ + (conf_name, stanza) + + has_name = False + if "name" in key_values: + has_name = True + name = key_values["name"] + del key_values["name"] + + content_request(uri, session_key, "POST", key_values, msg) + + if has_name: + key_values["name"] = name diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/request.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/request.py new file mode 100755 index 0000000000..f837173aa4 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/request.py @@ -0,0 +1,44 @@ +from .. import rest +from ..common import log + + +class ConfRequestException(Exception): + pass + + +class ConfNotExistsException(ConfRequestException): + pass + + +class ConfExistsException(ConfRequestException): + pass + + +def content_request(uri, session_key, method, payload, err_msg): + """ + :return: response content if successful otherwise raise + ConfRequestException + """ + + resp, content = rest.splunkd_request(uri, session_key, method, + data=payload, retry=3) + if resp is None and content is None: + return None + + if resp.status >= 200 and resp.status <= 204: + return content + else: + msg = "%s, status=%s, reason=%s, detail=%s" % ( + err_msg, resp.status, resp.reason, content.decode('utf-8')) + + if not (method == "GET" and resp.status == 404): + log.logger.error(msg) + + if resp.status == 404: + raise ConfNotExistsException(msg) + if resp.status == 409: + raise ConfExistsException(msg) + else: + if content and "already exists" in content: + raise ConfExistsException(msg) + raise ConfRequestException(msg) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/ta_conf_manager.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/ta_conf_manager.py new file mode 100755 index 0000000000..0f2a225c2d --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/conf_manager/ta_conf_manager.py @@ -0,0 +1,211 @@ +""" +This module hanles high level TA configuration related stuff +""" + +import copy +import os.path as op + +from . import conf_manager as conf +from . import request as conf_req +from .. import credentials as cred +from ..common import util as utils + + +class TAConfManager(object): + + encrypted_token = "******" + reserved_keys = ("userName", "appName") + + def __init__(self, conf_file, splunkd_uri, session_key, appname=None): + if appname is None: + appname = utils.get_appname_from_path(op.abspath(__file__)) + self._conf_file = conf.conf_file2name(conf_file) + self._conf_mgr = conf.ConfManager(splunkd_uri, session_key, + app_name=appname) + self._cred_mgr = cred.CredentialManager( + splunkd_uri, session_key, app=appname, + owner="nobody", realm=appname) + self._keys = None + + def set_appname(self, appname): + """ + This are cases we need edit/remove/create confs in different app + context. call this interface to switch app context before manipulate + the confs in different app context + """ + + self._conf_mgr.set_appname(appname) + self._cred_mgr.set_appname(appname) + + def _delete_reserved_keys(self, stanza): + new_stanza = copy.deepcopy(stanza) + for k in self.reserved_keys: + if k in new_stanza: + del new_stanza[k] + return new_stanza + + def create(self, stanza): + """ + @stanza: dick like object + { + "name": xxx, + "k1": v1, + "k2": v2, + ... + } + @return exception if failure + """ + + stanza = self._delete_reserved_keys(stanza) + encrypted_stanza = self._encrypt(stanza) + self._conf_mgr.create_stanza(self._conf_file, + encrypted_stanza["name"], + encrypted_stanza) + + def update(self, stanza): + """ + @stanza: dick like object + { + "name": xxx, + "k1": v1, + "k2": v2, + ... + } + + @return: exception if failure + """ + + if not self._conf_mgr.stanza_exist(self._conf_file, stanza["name"]): + self.create(stanza) + else: + stanza = self._delete_reserved_keys(stanza) + encrypted_stanza = self._encrypt(stanza) + self._conf_mgr.update_properties( + self._conf_file, encrypted_stanza["name"], encrypted_stanza) + + def delete(self, stanza_name): + """ + @return: exception if failure + """ + + try: + stanza = self._conf_mgr.get_stanza(self._conf_file, stanza_name) + except conf_req.ConfNotExistsException: + return + + self._delete_creds(stanza) + self._conf_mgr.delete_stanza(self._conf_file, stanza_name) + + def get(self, stanza_name, return_acl=False): + """ + @return: dict object if sucess otherwise raise exception + """ + + stanza = self._conf_mgr.get_stanza(self._conf_file, stanza_name, + ret_metadata=return_acl) + stanza = self._decrypt(stanza) + stanza["disabled"] = utils.is_true(stanza.get("disabled")) + return stanza + + def all(self, filter_disabled=False, return_acl=True): + """ + @return: a dict of dict objects if success + otherwise exception + """ + + results = {} + stanzas = self._conf_mgr.all_stanzas(self._conf_file, + ret_metadata=return_acl) + for stanza in stanzas: + stanza = self._decrypt(stanza) + stanza["disabled"] = utils.is_true(stanza.get("disabled")) + if filter_disabled and stanza["disabled"]: + continue + results[stanza["name"]] = stanza + return results + + def reload(self): + self._conf_mgr.reload_conf(self._conf_file) + + def set_encrypt_keys(self, keys): + """ + :keys: a list keys of a stanza which need to be encrypted + for example: ["username", "password"] + """ + + self._keys = keys + + def is_encrypted(self, stanza): + """ + :stanza: dict object + return True if the values of encrypt keys equals self.encrypted_token + otherwise return False + """ + + if self._keys is None: + return False + + for k in stanza.iterkeys(): + if k in self._keys: + if stanza.get(k) == self.encrypted_token: + return True + return False + + def _encrypt(self, stanza): + """ + :stanza: if self._keys are in stanza, encrypt the values of the key + and then mask the value to self.encrypted_token + """ + + if self._keys is None: + return stanza + + stanza_to_be_encrypted = {} + for key in self._keys: + if key in stanza: + stanza_to_be_encrypted[key] = stanza[key] + + if stanza_to_be_encrypted: + self._cred_mgr.update({stanza["name"]: stanza_to_be_encrypted}) + encrypted_stanza = copy.deepcopy(stanza) + for key in stanza_to_be_encrypted.iterkeys(): + encrypted_stanza[key] = self.encrypted_token + return encrypted_stanza + return stanza + + def _decrypt(self, stanza): + """ + :stanza: if there are keys in self._keys in stanza and if the values of + the keys are self.encrypted_token, decrypt the value + """ + + if self._keys is None: + return stanza + + stanza_name = stanza["name"] + clear_password = None + for key in self._keys: + if key in stanza and stanza[key] == self.encrypted_token: + clear_password = self._cred_mgr.get_clear_password( + stanza_name) + break + + if clear_password: + for key in self._keys: + if key in clear_password[stanza_name]: + stanza[key] = clear_password[stanza_name][key] + return stanza + + def _delete_creds(self, stanza): + """ + :stanza: if there are keys of self._keys and the keys are in stanza, + delete the encrypted creds + """ + + if self._keys is None: + return + + for key in self._keys: + if key in stanza: + self._cred_mgr.delete(stanza["name"]) + break diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/credentials.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/credentials.py new file mode 100755 index 0000000000..496e026003 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/credentials.py @@ -0,0 +1,337 @@ +""" +Handles credentials related stuff +""" + +import re +import xml.dom.minidom as xdm + +from . import rest +from .common import util +from .common import xml_dom_parser as xdp + +# Splunk can only encrypt string when length <=255 +SPLUNK_CRED_LEN_LIMIT = 255 + + +class CredException(Exception): + pass + + +class CredNotFound(CredException): + """ + Credential information not exists + """ + pass + + +def create_credential_manager(username, password, splunkd_uri, + app, owner, realm): + session_key = CredentialManager.get_session_key( + username, password, splunkd_uri) + return CredentialManager(splunkd_uri, session_key, app, owner, realm) + + +class CredentialManager(object): + """ + Credential related interfaces + """ + + def __init__(self, splunkd_uri, session_key, + app="-", owner="nobody", realm=None): + """ + :app: when creating/upating/deleting app is required + """ + + self._app = app + self._splunkd_uri = splunkd_uri + self._owner = owner + self._sep = "``splunk_cred_sep``" + + if realm: + self._realm = realm + else: + self._realm = app + + self._session_key = session_key + + def set_appname(self, app): + """ + This are cases we need edit/remove/create confs in different app + context. call this interface to switch app context before manipulate + the confs in different app context + """ + + self._app = app + + @staticmethod + def get_session_key(username, password, + splunkd_uri="https://localhost:8089"): + """ + Get session key by using login username and passwrod + :return: session_key if successful, None if failed + """ + + eid = "".join((splunkd_uri, "/services/auth/login")) + postargs = { + "username": username, + "password": password, + } + + response, content = rest.splunkd_request( + eid, None, method="POST", data=postargs) + + if response is None and content is None: + raise CredException("Get session key failed.") + + xml_obj = xdm.parseString(content) + session_nodes = xml_obj.getElementsByTagName("sessionKey") + if not session_nodes: + raise CredException("Invalid username or password.") + session_key = session_nodes[0].firstChild.nodeValue + if not session_key: + raise CredException("Get session key failed.") + return session_key + + def update(self, stanza): + """ + Update or Create credentials based on the stanza + :stanza: nested dict object. The outlayer keys are stanza name, and + inner dict is user/pass key/value pair to be encrypted + { + "stanza_name": {"tommy": "tommypasswod", "jerry": "jerrypassword"} + } + :return: raise on failure + """ + + for name, encr_dict in stanza.items(): + encrypts = [] + for key, val in encr_dict.items(): + encrypts.append(key) + encrypts.append(val) + self._update(name, self._sep.join(encrypts)) + + def _update(self, name, str_to_encrypt): + """ + Update the string for the name. + :return: raise on failure + """ + + self.delete(name) + + if len(str_to_encrypt) <= SPLUNK_CRED_LEN_LIMIT: + self._create(name, str_to_encrypt) + return + + # split the str_to_encrypt when len > 255 + length = SPLUNK_CRED_LEN_LIMIT + i = 0 + while length < len(str_to_encrypt) + SPLUNK_CRED_LEN_LIMIT: + curr_str = str_to_encrypt[length - SPLUNK_CRED_LEN_LIMIT:length] + length += SPLUNK_CRED_LEN_LIMIT + + stanza_name = self._sep.join((name, str(i))) + self._create(stanza_name, curr_str) + i += 1 + + def _create(self, name, str_to_encrypt): + """ + Create a new stored credential. + :return: raise on failure + """ + + payload = { + "name": name, + "password": str_to_encrypt, + "realm": self._realm, + } + + endpoint = self._get_endpoint(name) + resp, content = rest.splunkd_request(endpoint, self._session_key, + method="POST", data=payload) + if not resp or resp.status not in (200, 201, "200", "201"): + raise CredException("Failed to encrypt username {}".format(name)) + + def delete(self, name, throw=False): + """ + Delete the encrypted entry + """ + + try: + self._delete(name, throw=True) + except CredNotFound: + # try to delete the split stanzas + try: + stanzas = self._get_all_passwords() + except Exception: + raise + + ent_regx = "%s:(%s%s\d+):" % (self._realm, name, self._sep) + ent_pattern = re.compile(ent_regx) + for stanza in stanzas: + stanza_name = stanza.get("name") + match = ent_pattern.match(stanza_name) + if match: + try: + delete_name = match.group(1) + self._delete(delete_name, throw=True) + except CredNotFound: + pass + except CredException: + raise + except CredException: + raise + + def _delete(self, name, throw=False): + """ + Delete the encrypted entry + """ + + endpoint = self._get_endpoint(name) + response, content = rest.splunkd_request( + endpoint, self._session_key, method="DELETE") + + if response is not None and response.status in (404, "404"): + if throw: + raise CredNotFound( + "Credential stanza not exits - {}".format(name)) + elif not response or response.status not in (200, 201, "200", "201"): + if throw: + raise CredException( + "Failed to delete credential stanza {}".format(name)) + + def get_all_passwords(self): + results = {} + all_stanzas = self._get_all_passwords() + for stanza in all_stanzas: + name = stanza.get("name") + match = re.match(r"(.+){}(\d+)".format(self._sep), name) + if match: + actual_name = match.group(1) + ":" + index = int(match.group(2)) + if results.get(actual_name): + exist_stanza = results.get(actual_name) + else: + exist_stanza = stanza + exist_stanza['name'] = actual_name + exist_stanza['username'] = \ + exist_stanza['username'].split(self._sep)[0] + exist_stanza['clears'] = {} + exist_stanza['encrs'] = {} + + try: + exist_stanza['clears'][index] = stanza.get('clear_password') + exist_stanza['encrs'][index] = stanza.get('encr_password') + except KeyError: + exist_stanza['clears'] = {} + exist_stanza['encrs'] = {} + exist_stanza['clears'][index] = stanza.get('clear_password') + exist_stanza['encrs'][index] = stanza.get('encr_password') + + results[actual_name] = exist_stanza + + else: + results[name] = stanza + + # merge the stanzas by index + for name, stanza in results.items(): + field_clear = stanza.get('clears') + field_encr = stanza.get('encrs') + if isinstance(field_clear, dict): + clear_password = "" + encr_password = "" + for index in sorted(field_clear.keys()): + clear_password += field_clear.get(index) + encr_password += field_encr.get(index) + stanza['clear_password'] = clear_password + stanza['encr_password'] = encr_password + + del stanza['clears'] + del stanza['encrs'] + return results.values() + + def _get_all_passwords(self): + """ + :return: a list of dict when successful, None when failed. + the dict at least contains + { + "realm": xxx, + "username": yyy, + "clear_password": zzz, + } + """ + + endpoint = self._get_endpoint() + response, content = rest.splunkd_request( + endpoint, self._session_key, method="GET") + if response and response.status in (200, 201, "200", "201") and content: + return xdp.parse_conf_xml_dom(content) + raise CredException("Failed to get credentials") + + def get_clear_password(self, name=None): + """ + :return: clear password(s) + { + stanza_name: {"user": pass} + } + """ + + return self._get_credentials("clear_password", name) + + def get_encrypted_password(self, name=None): + """ + :return: encyrpted password(s) + """ + + return self._get_credentials("encr_password", name) + + def _get_credentials(self, prop, name=None): + """ + :return: clear or encrypted password for specified realm, user + """ + + all_stanzas = self.get_all_passwords() + results = {} + + for stanza in all_stanzas: + if name and not stanza.get("name").endswith(":" + name + ":"): + continue + if stanza.get("realm") == self._realm: + values = stanza[prop].split(self._sep) + if len(values) % 2 == 1: + continue + result = {values[i]: values[i + 1] + for i in range(0, len(values), 2)} + results[stanza.get("username")] = result + return results + + @staticmethod + def _build_name(realm, name): + return util.format_stanza_name( + "".join((CredentialManager._escape_string(realm), ":", + CredentialManager._escape_string(name), ":"))) + + @staticmethod + def _escape_string(string_to_escape): + r""" + Splunk secure credential storage actually requires a custom style of + escaped string where all the :'s are escaped by a single \. + But don't escape the control : in the stanza name. + """ + + return string_to_escape.replace(":", "\\:") + + def _get_endpoint(self, name=None, query=False): + app = self._app + owner = self._owner + if query: + app = "-" + owner = "-" + + if name: + realm_user = self._build_name(self._realm, name) + rest_endpoint = "{}/servicesNS/{}/{}/storage/passwords/{}".format( + self._splunkd_uri, owner, app, realm_user) + else: + rest_endpoint = "{}/servicesNS/{}/{}/storage/passwords?count=-1" \ + "".format(self._splunkd_uri, owner, app) + return rest_endpoint diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/event_writer.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/event_writer.py new file mode 100755 index 0000000000..4078fec29f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/event_writer.py @@ -0,0 +1,84 @@ +import Queue +import multiprocessing +import threading +import sys +from collections import Iterable +from .common import log + + +class EventWriter(object): + + def __init__(self, process_safe=False): + if process_safe: + self._mgr = multiprocessing.Manager() + self._event_queue = self._mgr.Queue(1000) + else: + self._event_queue = Queue.Queue(1000) + self._event_writer = threading.Thread(target=self._do_write_events) + self._event_writer.daemon = True + self._started = False + self._exception = False + + def start(self): + if self._started: + return + self._started = True + + self._event_writer.start() + log.logger.info("Event writer started.") + + def tear_down(self): + if not self._started: + return + self._started = False + + self._event_queue.put(None) + self._event_writer.join() + log.logger.info("Event writer stopped.") + + def isopen(self): + return self._started and (not self._exception) + + def write_events(self, events): + if not self.isopen(): + return False + if events is None: + return True + self._event_queue.put(events) + return True + + def _do_write_events(self): + event_queue = self._event_queue + write = sys.stdout.write + got_shutdown_signal = False + + while 1: + try: + event = event_queue.get(timeout=3) + if event is not None: + if isinstance(event, basestring): + write(event) + elif isinstance(event, Iterable): + for evt in event: + write(evt) + else: + log.logger.info("Event writer got tear down signal") + got_shutdown_signal = True + except Queue.Empty: + # We need drain the queue before shutdown + # timeout means empty for now + if got_shutdown_signal: + log.logger.info("Event writer is going to exit...") + break + else: + continue + except Exception: + log.logger.exception("EventWriter encounter exception which may" + "cause data loss, queue leftsize={" + "}".format( + event_queue.qsize())) + self._exception = True + break + + log.logger.info("Event writer stopped, queue leftsize={}".format( + event_queue.qsize())) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/file_monitor.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/file_monitor.py new file mode 100755 index 0000000000..937e2d1735 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/file_monitor.py @@ -0,0 +1,56 @@ +import os.path as op +import traceback + +from .common import log + + +class FileMonitor(object): + + def __init__(self, callback, files): + """ + :files: files to be monidtored with full path + """ + + self._callback = callback + self._files = files + + self.file_mtimes = { + file_name: None for file_name in self._files + } + for k in self.file_mtimes: + if not op.exists(k): + continue + + try: + if not op.exists(k): + continue + self.file_mtimes[k] = op.getmtime(k) + except OSError: + log.logger.error("Getmtime for %s, failed: %s", + k, traceback.format_exc()) + + def __call__(self): + return self.check_changes() + + def check_changes(self): + log.logger.debug("Checking files=%s", self._files) + file_mtimes = self.file_mtimes + changed_files = [] + for f, last_mtime in file_mtimes.iteritems(): + try: + if not op.exists(f): + continue + + current_mtime = op.getmtime(f) + if current_mtime != last_mtime: + file_mtimes[f] = current_mtime + changed_files.append(f) + log.logger.info("Detect %s has changed", f) + except OSError: + pass + + if changed_files: + if self._callback: + self._callback(changed_files) + return True + return False diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/kv_client.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/kv_client.py new file mode 100755 index 0000000000..2d4562138d --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/kv_client.py @@ -0,0 +1,202 @@ +import re +import json +from xml.etree import cElementTree as et + +from . import rest as rest + + +class KVException(Exception): + pass + + +class KVAlreadyExists(KVException): + pass + + +class KVNotExists(KVException): + pass + + +class KVClient(object): + + def __init__(self, splunkd_host, session_key): + self._splunkd_host = splunkd_host + self._session_key = session_key + + def create_collection(self, collection, app, owner="nobody"): + """ + :collection: collection name + :return: None if successful otherwise KV exception thrown + """ + + assert collection + assert app + + uri = self._get_config_endpoint(app, owner) + data = { + "name": collection + } + self._do_request(uri, "POST", data) + + def list_collection(self, collection=None, app=None, owner="nobody"): + """ + :collection: collection name. When euqals "None", return all + collections in the system. + :return: a list containing the connection names if successful, throws + KVNotExists if no such colection or other exception if other error + happened + """ + + uri = self._get_config_endpoint(app, owner, collection) + + content = self._do_request(uri, method="GET") + m = re.search(r'xmlns="([^"]+)"', content) + path = "./entry/title" + if m: + ns = m.group(1) + path = "./{%s}entry/{%s}title" % (ns, ns) + + collections = et.fromstring(content) + return [node.text for node in collections.iterfind(path)] + + def delete_collection(self, collection, app, owner="nobody"): + """ + :collection: collection name to be deleted + :return: None if successful otherwise throw KVNotExists exception if + the collection doesn't exist in the system or other exception if other + error happened + """ + + assert collection + + uri = self._get_config_endpoint(app, owner, collection) + self._do_request(uri, method="DELETE") + + def insert_collection_data(self, collection, data, app, owner="nobody"): + """ + :collection: collection name + :data: dict like key values to be inserted and attached to + this collection + :return: {"_key": "key_id"} when successful, clients can use this + key to do query/delete/update, throws KV exceptions when failed + """ + + assert collection + assert data is not None + assert app + + uri = self._get_data_endpoint(app, owner, collection) + key = self._do_request(uri, "POST", data, + content_type="application/json") + return json.loads(key) + + def delete_collection_data(self, collection, key_id, app, owner="nobody"): + """ + :collection: collection name + :key_id: key id returned when creation. If None, delete all data + associated with this collection + :return: None if successful otherwise throws KV exception + """ + + assert collection + + uri = self._get_data_endpoint(app, owner, collection, key_id) + self._do_request(uri, "DELETE", content_type="application/json") + + def update_collection_data(self, collection, key_id, data, + app, owner="nobody"): + """ + :collection: collection name + :key_id: key id returned when creation + :return: key id if successful otherwise throws KV exception + """ + + assert collection + assert key_id + assert app + + uri = self._get_data_endpoint(app, owner, collection, key_id) + k = self._do_request(uri, "POST", data, + content_type="application/json") + return json.loads(k) + + def get_collection_data(self, collection, key_id, app, owner="nobody"): + """ + :collection: collection name + :key_id: key id returned when creation. If None, get all data + associated with this collection + :return: when key_id is not None, return key values if + successful. when key_id is None, return a list of key values if + sucessful. Throws KV exception if failure + """ + + assert collection + + uri = self._get_data_endpoint(app, owner, collection, key_id) + k = self._do_request(uri, "GET") + return json.loads(k) + + def _do_request(self, uri, method, data=None, + content_type="application/x-www-form-urlencoded"): + headers = {"Content-Type": content_type} + + resp, content = rest.splunkd_request(uri, self._session_key, + method, headers, data) + if resp is None and content is None: + raise KVException("Failed uri={0}, data={1}".format(uri, data)) + + if resp.status in (200, 201): + return content + elif resp.status == 409: + raise KVAlreadyExists("{0}-{1} already exists".format(uri, data)) + elif resp.status == 404: + raise KVNotExists("{0}-{1} not exists".format(uri, data)) + else: + raise KVException("Failed to {0} {1}, reason={2}".format( + method, uri, resp.reason)) + + def _get_config_endpoint(self, app, owner, collection=None): + uri = "{0}/servicesNS/{1}/{2}/storage/collections/config" + return self._do_get_endpoint(app, owner, collection, None, uri) + + def _get_data_endpoint(self, app, owner, collection, key_id=None): + uri = "{0}/servicesNS/{1}/{2}/storage/collections/data" + return self._do_get_endpoint(app, owner, collection, key_id, uri) + + def _do_get_endpoint(self, app, owner, collection, key_id, uri_template): + if not app: + app = "-" + + if not owner: + owner = "-" + + uri = uri_template.format(self._splunkd_host, owner, app) + + if collection is not None: + uri += "/{0}".format(collection) + if key_id is not None: + uri += "/{0}".format(key_id) + return uri + + +def create_collection(kv_client, collection, appname): + not_exists = False + try: + res = kv_client.list_collection(collection, appname) + except KVNotExists: + not_exists = True + except Exception: + not_exists = True + + if not_exists or not res: + for i in xrange(3): + try: + kv_client.create_collection(collection, appname) + except KVAlreadyExists: + return + except Exception as e: + ex = e + else: + return + else: + raise ex diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/modinput.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/modinput.py new file mode 100755 index 0000000000..3f626f25e6 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/modinput.py @@ -0,0 +1,147 @@ +import sys +import subprocess +import traceback + +from . import splunk_platform as sp +from .common import log + + +def _parse_modinput_configs(root, outer_block, inner_block): + """ + When user splunkd spawns modinput script to do config check or run + + + + localhost.localdomain + https://127.0.0.1:8089 + xxxyyyzzz + ckpt_dir + + + 60 + localhost.localdomain + snow + 10 + + ... + + + + When user create an stanza through data input on WebUI + + + + localhost.localdomain + https://127.0.0.1:8089 + xxxyyyzzz + ckpt_dir + + 60 + + localhost.localdomain + snow + 10 + + + """ + + confs = root.getElementsByTagName(outer_block) + if not confs: + log.logger.error("Invalid config, missing %s section", outer_block) + raise Exception("Invalid config, missing %s section".format( + outer_block + )) + + configs = [] + stanzas = confs[0].getElementsByTagName(inner_block) + for stanza in stanzas: + config = {} + stanza_name = stanza.getAttribute("name") + if not stanza_name: + log.logger.error("Invalid config, missing name") + raise Exception("Invalid config, missing name") + + config["name"] = stanza_name + params = stanza.getElementsByTagName("param") + for param in params: + name = param.getAttribute("name") + if (name and param.firstChild and + param.firstChild.nodeType == param.firstChild.TEXT_NODE): + config[name] = param.firstChild.data + configs.append(config) + return configs + + +def parse_modinput_configs(config_str): + """ + @config_str: modinput XML configuration feed by splunkd + @return: meta_config and stanza_config + """ + + import xml.dom.minidom as xdm + + meta_configs = { + "server_host": None, + "server_uri": None, + "session_key": None, + "checkpoint_dir": None, + } + root = xdm.parseString(config_str) + doc = root.documentElement + for tag in meta_configs.iterkeys(): + nodes = doc.getElementsByTagName(tag) + if not nodes: + log.logger.error("Invalid config, missing %s section", tag) + raise Exception("Invalid config, missing %s section", tag) + + if (nodes[0].firstChild and + nodes[0].firstChild.nodeType == nodes[0].TEXT_NODE): + meta_configs[tag] = nodes[0].firstChild.data + else: + log.logger.error("Invalid config, expect text ndoe") + raise Exception("Invalid config, expect text ndoe") + + if doc.nodeName == "input": + configs = _parse_modinput_configs(doc, "configuration", "stanza") + else: + configs = _parse_modinput_configs(root, "items", "item") + return meta_configs, configs + + +def get_modinput_configs_from_cli(modinput, modinput_stanza=None): + """ + @modinput: modinput name + @modinput_stanza: modinput stanza name, for multiple instance only + """ + + assert modinput + + splunkbin = sp.get_splunk_bin() + cli = [splunkbin, "cmd", "splunkd", "print-modinput-config", modinput] + if modinput_stanza: + cli.append(modinput_stanza) + + out, err = subprocess.Popen(cli, stdout=subprocess.PIPE, + stderr=subprocess.PIPE).communicate() + if err: + log.logger.error("Failed to get modinput configs with error: %s", err) + return None, None + else: + return parse_modinput_configs(out) + + +def get_modinput_config_str_from_stdin(): + """ + Get modinput from stdin which is feed by splunkd + """ + + try: + return sys.stdin.read(5000) + except Exception: + log.logger.error(traceback.format_exc()) + raise + + +def get_modinput_configs_from_stdin(): + config_str = get_modinput_config_str_from_stdin() + return parse_modinput_configs(config_str) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/orphan_process_monitor.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/orphan_process_monitor.py new file mode 100755 index 0000000000..19ae70e46b --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/orphan_process_monitor.py @@ -0,0 +1,65 @@ +import os +import threading +import time +import traceback + +from ..splunktalib.common import log + + +class OrphanProcessChecker(object): + + def __init__(self, callback=None): + """ + Only work for Linux platform. On Windows platform, is_orphan is always + False + """ + + if os.name == "nt": + self._ppid = 0 + else: + self._ppid = os.getppid() + self._callback = callback + + def is_orphan(self): + if os.name == "nt": + return False + res = self._ppid != os.getppid() + if res: + log.logger.warn("Process=%s has become orphan", os.getpid()) + return res + + def check_orphan(self): + res = self.is_orphan() + if res and self._callback: + self._callback() + return res + + +class OrphanProcessMonitor(object): + + def __init__(self, callback): + self._checker = OrphanProcessChecker(callback) + self._thr = threading.Thread(target=self._do_monitor) + self._thr.daemon = True + self._started = False + + def start(self): + if self._started: + return + self._started = True + + self._thr.start() + + def stop(self): + self._started = False + + def _do_monitor(self): + while self._started: + try: + res = self._checker.check_orphan() + if res: + break + time.sleep(1) + except Exception: + log.logger.error("Failed to monitor orphan process, reason=%s", + traceback.format_exc()) diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/rest.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/rest.py new file mode 100755 index 0000000000..a69e7326dc --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/rest.py @@ -0,0 +1,122 @@ +import urllib +import json +from traceback import format_exc + +from .common import util as scu +from .common import log as log + + +from httplib2 import (socks, ProxyInfo, Http) + + +def splunkd_request(splunkd_uri, session_key, method="GET", + headers=None, data=None, timeout=30, retry=1): + """ + :return: httplib2.Response and content + """ + + headers = headers if headers is not None else {} + headers["Authorization"] = "Splunk {0}".format(session_key) + content_type = headers.get("Content-Type") + if not content_type: + content_type = headers.get("content-type") + + if not content_type: + content_type = "application/x-www-form-urlencoded" + headers["Content-Type"] = content_type + + if data is not None: + if content_type == "application/json": + data = json.dumps(data) + else: + data = urllib.urlencode(data) + + http = Http(timeout=timeout, disable_ssl_certificate_validation=True) + msg_temp = "Failed to send rest request=%s, errcode=%s, reason=%s" + resp, content = None, None + for _ in range(retry): + try: + resp, content = http.request(splunkd_uri, method=method, + headers=headers, body=data) + except Exception: + log.logger.error(msg_temp, splunkd_uri, "unknown", format_exc()) + else: + if resp.status not in (200, 201): + if not (method == "GET" and resp.status == 404): + log.logger.debug(msg_temp, splunkd_uri, resp.status, + code_to_msg(resp, content)) + else: + return resp, content + else: + return resp, content + + +def code_to_msg(resp, content): + code_msg_tbl = { + 400: "Request error. reason={}".format(content), + 401: "Authentication failure, invalid access credentials.", + 402: "In-use license disables this feature.", + 403: "Insufficient permission.", + 404: "Requested endpoint does not exist.", + 409: "Invalid operation for this endpoint. reason={}".format(content), + 500: "Unspecified internal server error. reason={}".format(content), + 503: ("Feature is disabled in the configuration file. " + "reason={}".format(content)), + } + + return code_msg_tbl.get(resp.status, content) + + +def build_http_connection(config, timeout=120, disable_ssl_validation=False): + """ + :config: dict like, proxy and account information are in the following + format { + "username": xx, + "password": yy, + "proxy_url": zz, + "proxy_port": aa, + "proxy_username": bb, + "proxy_password": cc, + "proxy_type": http,http_no_tunnel,sock4,sock5, + "proxy_rdns": 0 or 1, + } + :return: Http2.Http object + """ + + proxy_type_to_code = { + "http": socks.PROXY_TYPE_HTTP, + "http_no_tunnel": socks.PROXY_TYPE_HTTP_NO_TUNNEL, + "socks4": socks.PROXY_TYPE_SOCKS4, + "socks5": socks.PROXY_TYPE_SOCKS5, + } + if config.get("proxy_type") in proxy_type_to_code: + proxy_type = proxy_type_to_code[config["proxy_type"]] + else: + proxy_type = socks.PROXY_TYPE_HTTP + + rdns = scu.is_true(config.get("proxy_rdns")) + + proxy_info = None + if config.get("proxy_url") and config.get("proxy_port"): + if config.get("proxy_username") and config.get("proxy_password"): + proxy_info = ProxyInfo(proxy_type=proxy_type, + proxy_host=config["proxy_url"], + proxy_port=int(config["proxy_port"]), + proxy_user=config["proxy_username"], + proxy_pass=config["proxy_password"], + proxy_rdns=rdns) + else: + proxy_info = ProxyInfo(proxy_type=proxy_type, + proxy_host=config["proxy_url"], + proxy_port=int(config["proxy_port"]), + proxy_rdns=rdns) + if proxy_info: + http = Http(proxy_info=proxy_info, timeout=timeout, + disable_ssl_certificate_validation=disable_ssl_validation) + else: + http = Http(timeout=timeout, + disable_ssl_certificate_validation=disable_ssl_validation) + + if config.get("username") and config.get("password"): + http.add_credentials(config["username"], config["password"]) + return http diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/__init__.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/__init__.py new file mode 100755 index 0000000000..e69de29bb2 diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/job.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/job.py new file mode 100755 index 0000000000..3ea9ffbbca --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/job.py @@ -0,0 +1,90 @@ +import threading +import time + + +class Job(object): + """ + Timer wraps the callback and timestamp related stuff + """ + + _ident = 0 + _lock = threading.Lock() + + def __init__(self, func, job_props, interval, when=None, job_id=None): + """ + @job_props: dict like object + @func: execution function + @interval: execution interval + @when: seconds from epoch + @job_id: a unique id for the job + """ + + self._props = job_props + self._func = func + if when is None: + self._when = time.time() + else: + self._when = when + self._interval = interval + + if job_id is not None: + self._id = job_id + else: + with Job._lock: + self._id = Job._ident + 1 + Job._ident = Job._ident + 1 + self._stopped = False + + def ident(self): + return self._id + + def get_interval(self): + return self._interval + + def set_interval(self, interval): + self._interval = interval + + def get_expiration(self): + return self._when + + def set_initial_due_time(self, when): + if self._when is None: + self._when = when + + def update_expiration(self): + self._when += self._interval + + def get(self, key, default): + return self._props.get(key, default) + + def get_props(self): + return self._props + + def set_props(self, props): + self._props = props + + def __cmp__(self, other): + if other is None: + return 1 + + self_k = (self.get_expiration(), self.ident()) + other_k = (other.get_expiration(), other.ident()) + + if self_k == other_k: + return 0 + elif self_k < other_k: + return -1 + else: + return 1 + + def __eq__(self, other): + return isinstance(other, Job) and (self.ident() == other.ident()) + + def __call__(self): + self._func(self) + + def stop(self): + self._stopped = True + + def stopped(self): + return self._stopped diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/scheduler.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/scheduler.py new file mode 100755 index 0000000000..adceae6f2b --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/schedule/scheduler.py @@ -0,0 +1,143 @@ +import threading +from time import time +import random +import Queue +from ..common import log + + +class Scheduler(object): + """ + A simple scheduler which schedules the periodic or once event + """ + + import sortedcontainers as sc + + max_delay_time = 60 + + def __init__(self): + self._jobs = Scheduler.sc.SortedSet() + self._wakeup_q = Queue.Queue() + self._lock = threading.Lock() + self._thr = threading.Thread(target=self._do_jobs) + self._thr.deamon = True + self._started = False + + def start(self): + """ + Start the schduler which will start the internal thread for scheduling + jobs. Please do tear_down when doing cleanup + """ + + if self._started: + log.logger.info("Scheduler already started.") + return + self._started = True + + self._thr.start() + + def tear_down(self): + """ + Stop the schduler which will stop the internal thread for scheduling + jobs. + """ + + if not self._started: + log.logger.info("Scheduler already tear down.") + return + + self._wakeup_q.put(True) + + def _do_jobs(self): + while 1: + (sleep_time, jobs) = self.get_ready_jobs() + self._do_execution(jobs) + try: + done = self._wakeup_q.get(timeout=sleep_time) + except Queue.Empty: + pass + else: + if done: + break + self._started = False + log.logger.info("Scheduler exited.") + + def get_ready_jobs(self): + """ + @return: a 2 element tuple. The first element is the next ready + duration. The second element is ready jobs list + """ + + now = time() + ready_jobs = [] + sleep_time = 1 + + with self._lock: + job_set = self._jobs + total_jobs = len(job_set) + for job in job_set: + if job.get_expiration() <= now: + ready_jobs.append(job) + + if ready_jobs: + del job_set[:len(ready_jobs)] + + for job in ready_jobs: + if job.get_interval() != 0 and not job.stopped(): + # repeated job, calculate next due time and enqueue + job.update_expiration() + job_set.add(job) + + if job_set: + sleep_time = job_set[0].get_expiration() - now + if sleep_time < 0: + log.logger.warn("Scheduler satuation, sleep_time=%s", + sleep_time) + sleep_time = 0.1 + + if ready_jobs: + log.logger.info("Get %d ready jobs, next duration is %f, " + "and there are %s jobs scheduling", + len(ready_jobs), sleep_time, total_jobs) + + ready_jobs.sort(key=lambda job: job.get("priority", 0), reverse=True) + return (sleep_time, ready_jobs) + + def add_jobs(self, jobs): + with self._lock: + now = time() + job_set = self._jobs + for job in jobs: + delay_time = random.randrange(0, self.max_delay_time) + job.set_initial_due_time(now + delay_time) + job_set.add(job) + self._wakeup() + + def update_jobs(self, jobs): + with self._lock: + job_set = self._jobs + for njob in jobs: + job_set.discard(njob) + job_set.add(njob) + self._wakeup() + + def remove_jobs(self, jobs): + with self._lock: + job_set = self._jobs + for njob in jobs: + njob.stop() + job_set.discard(njob) + self._wakeup() + + def number_of_jobs(self): + with self._lock: + return len(self._jobs) + + def disable_randomization(self): + self.max_delay_time = 1 + + def _wakeup(self): + self._wakeup_q.put(None) + + def _do_execution(self, jobs): + for job in jobs: + job() diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/setting.conf b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/setting.conf new file mode 100755 index 0000000000..f7973ad81f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/setting.conf @@ -0,0 +1,5 @@ +[global] +process_size = 0 +thread_min_size = 4 +thread_max_size = 128 +task_queue_size = 1024 diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/splunk_cluster.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/splunk_cluster.py new file mode 100755 index 0000000000..c12e8847fa --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/splunk_cluster.py @@ -0,0 +1,53 @@ +from ..splunktalib import rest +from ..splunktalib.common import xml_dom_parser as xdp + + +def _do_rest(uri, session_key): + resp, content = rest.splunkd_request(uri, session_key) + if resp is None: + return None + + if resp.status not in (200, 201): + return None + + stanza_objs = xdp.parse_conf_xml_dom(content) + if not stanza_objs: + return None + + return stanza_objs[0] + + +class ServerInfo(object): + + def __init__(self, splunkd_uri, session_key): + uri = "{}/services/server/info".format(splunkd_uri) + server_info = _do_rest(uri, session_key) + if server_info is None: + raise Exception("Failed to init ServerInfo") + + self._server_info = server_info + + def is_captain(self): + """ + :return: True if splunkd_uri is captain otherwise False + """ + + return "shc_captain" in self._server_info["server_roles"] + + def is_search_head(self): + for sh in ("search_head", "cluster_search_head"): + if sh in self._server_info["server_roles"]: + return True + return False + + def is_shc_member(self): + server_roles = self._server_info['server_roles'] + return any( + role in server_roles for role in ('shc_member', 'shc_captain') + ) + + def version(self): + return self._server_info["version"] + + def to_dict(self): + return self._server_info diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/splunk_platform.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/splunk_platform.py new file mode 100755 index 0000000000..d59afd06c5 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/splunk_platform.py @@ -0,0 +1,104 @@ +import os +import os.path as op +import subprocess +from ConfigParser import ConfigParser +from cStringIO import StringIO + +from .common import util as scu + + +def make_splunkhome_path(parts): + """ + create a path string by the several parts of the path + """ + + relpath = os.path.normpath(os.path.join(*parts)) + + basepath = os.environ["SPLUNK_HOME"] # Assume SPLUNK_HOME env has been set + + fullpath = os.path.normpath(os.path.join(basepath, relpath)) + + # Check that we haven't escaped from intended parent directories. + if os.path.relpath(fullpath, basepath)[0:2] == '..': + raise ValueError('Illegal escape from parent directory "%s": %s' % + (basepath, fullpath)) + + return fullpath + + +def get_splunk_bin(): + if os.name == "nt": + splunk_bin = "splunk.exe" + else: + splunk_bin = "splunk" + return make_splunkhome_path(("bin", splunk_bin)) + + +def get_appname_from_path(absolute_path): + return scu.get_appname_from_path(absolute_path) + + +def _get_merged_conf_raw(conf_name): + """ + :conf_name: configure file name + :return: raw output of all contents for the same conf file + Note: it depends on SPLUNK_HOME env variable + """ + + assert conf_name + + if conf_name.endswith(".conf"): + conf_name = conf_name[:-5] + + # FIXME dynamically caculate SPLUNK_HOME + btool_cli = [op.join(os.environ["SPLUNK_HOME"], "bin", "btool"), + conf_name, "list"] + + try: + p = subprocess.Popen(btool_cli, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + out, err = p.communicate() + except OSError: + raise + + return out + + +def _get_conf_stanzas(conf_name): + """ + :return: {stanza_name: stanza_configs}, dict of dict + """ + + res = _get_merged_conf_raw(conf_name) + res = StringIO(res) + parser = ConfigParser() + parser.optionxform = str + parser.readfp(res) + res = {} + for section in parser.sections(): + res[section] = {item[0]: item[1] for item in parser.items(section)} + return res + + +def get_splunkd_uri(): + if "SPLUNKD_URI" in os.environ: + return os.environ["SPLUNKD_URI"] + else: + server_conf = _get_conf_stanzas("server") + if server_conf["sslConfig"]["enableSplunkdSSL"].lower() == "true": + http = "https://" + else: + http = "http://" + + web_conf = _get_conf_stanzas("web") + host_port = web_conf["settings"]["mgmtHostPort"] + splunkd_uri = "{}{}".format(http, host_port) + + if os.environ.get("SPLUNK_BINDIP"): + bip = os.environ["SPLUNK_BINDIP"] + port_idx = bip.rfind(":") + if port_idx > 0: + bip = bip[:port_idx] + port = host_port[host_port.rfind(":"):] + splunkd_uri = "{}{}{}".format(http, bip, port) + return splunkd_uri diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/state_store.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/state_store.py new file mode 100755 index 0000000000..e4c3e5e0c4 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/state_store.py @@ -0,0 +1,264 @@ +import json +import os +import os.path as op +import time + +from ..splunktacollectorlib.common import log as stulog +from ..splunktalib import kv_client as kvc +from ..splunktalib.common import util + + +def get_state_store(meta_configs, + appname, + collection_name="talib_states", + use_kv_store=False, + use_cache_file=True, + max_cache_seconds=5): + # FIXME refactor this + if util.is_true(use_kv_store): + return StateStore(meta_configs, appname, collection_name) + if util.is_true(use_cache_file): + return CachedFileStateStore(meta_configs, appname, max_cache_seconds) + return FileStateStore(meta_configs, appname) + + +class BaseStateStore(object): + def __init__(self, meta_configs, appname): + self._meta_configs = meta_configs + self._appname = appname + + def update_state(self, key, states): + pass + + def get_state(self, key): + pass + + def delete_state(self, key): + pass + + def close(self, key=None): + pass + + +class StateStore(BaseStateStore): + + def __init__(self, meta_configs, appname, collection_name="talib_states"): + """ + :meta_configs: dict like and contains checkpoint_dir, session_key, + server_uri etc + :app_name: the name of the app + :collection_name: the collection name to be used. + Don"t use other method to visit the collection if you are using + StateStore to visit it. + """ + super(StateStore, self).__init__(meta_configs, appname) + + # State cache is a dict from _key to value + self._states_cache = {} + self._kv_client = None + self._collection = collection_name + self._kv_client = kvc.KVClient(meta_configs["server_uri"], + meta_configs["session_key"]) + kvc.create_collection(self._kv_client, self._collection, self._appname) + self._load_states_cache() + + def update_state(self, key, states): + """ + :state: Any JSON serializable + :return: None if successful, otherwise throws exception + """ + + if key not in self._states_cache: + self._kv_client.insert_collection_data( + self._collection, {"_key": key, "value": json.dumps(states)}, + self._appname) + else: + self._kv_client.update_collection_data( + self._collection, key, {"value": json.dumps(states)}, + self._appname) + self._states_cache[key] = states + + def get_state(self, key=None): + if key: + return self._states_cache.get(key, None) + return self._states_cache + + def delete_state(self, key=None): + if key: + self._delete_state(key) + else: + [self._delete_state(_key) for _key in self._states_cache.keys()] + + def _delete_state(self, key): + if key not in self._states_cache: + return + + self._kv_client.delete_collection_data( + self._collection, key, self._appname) + del self._states_cache[key] + + def _load_states_cache(self): + states = self._kv_client.get_collection_data( + self._collection, None, self._appname) + if not states: + return + + for state in states: + if "value" in state: + value = state["value"] + else: + value = state + + try: + value = json.loads(value) + except Exception: + pass + + self._states_cache[state["_key"]] = value + + +def _create_checkpoint_dir_if_needed(checkpoint_dir): + if os.path.isdir(checkpoint_dir): + return + + stulog.logger.info( + "Checkpoint dir '%s' doesn't exist, try to create it", + checkpoint_dir) + try: + os.mkdir(checkpoint_dir) + except OSError: + stulog.logger.exception( + "Failure creating checkpoint dir '%s'", checkpoint_dir + ) + raise Exception( + "Unable to create checkpoint dir '{}'".format(checkpoint_dir) + ) + + +class FileStateStore(BaseStateStore): + def __init__(self, meta_configs, appname): + """ + :meta_configs: dict like and contains checkpoint_dir, session_key, + server_uri etc + """ + + super(FileStateStore, self).__init__(meta_configs, appname) + + def update_state(self, key, states): + """ + :state: Any JSON serializable + :return: None if successful, otherwise throws exception + """ + + checkpoint_dir = self._meta_configs["checkpoint_dir"] + _create_checkpoint_dir_if_needed(checkpoint_dir) + + fname = op.join(checkpoint_dir, key) + with open(fname + ".new", "w") as jsonfile: + json.dump(states, jsonfile) + + if op.exists(fname): + os.remove(fname) + + os.rename(fname + ".new", fname) + # commented this to disable state cache for local file + # if key not in self._states_cache: + # self._states_cache[key] = {} + # self._states_cache[key] = states + + def get_state(self, key): + fname = op.join(self._meta_configs["checkpoint_dir"], key) + if op.exists(fname): + with open(fname) as jsonfile: + state = json.load(jsonfile) + # commented this to disable state cache for local file + # self._states_cache[key] = state + return state + else: + return None + + def delete_state(self, key): + fname = op.join(self._meta_configs["checkpoint_dir"], key) + if op.exists(fname): + os.remove(fname) + + +class CachedFileStateStore(BaseStateStore): + def __init__(self, meta_configs, appname, max_cache_seconds=5): + """ + :meta_configs: dict like and contains checkpoint_dir, session_key, + server_uri etc + """ + + super(CachedFileStateStore, self).__init__(meta_configs, appname) + self._states_cache = {} # item: time, dict + self._states_cache_lmd = {} #item: time, dict + self.max_cache_seconds = max_cache_seconds + + def update_state(self, key, states): + + now = time.time() + if key in self._states_cache: + last = self._states_cache_lmd[key][0] + if now - last >= self.max_cache_seconds: + self.update_state_flush(now, key, states) + else: + self.update_state_flush(now, key, states) + self._states_cache[key] = (now, states) + + def update_state_flush(self, now, key, states): + """ + :state: Any JSON serializable + :return: None if successful, otherwise throws exception + """ + self._states_cache_lmd[key] = (now, states) + checkpoint_dir = self._meta_configs["checkpoint_dir"] + + _create_checkpoint_dir_if_needed(checkpoint_dir) + + fname = op.join(checkpoint_dir, key) + + with open(fname + ".new", "w") as jsonfile: + json.dump(states, jsonfile) + + if op.exists(fname): + os.remove(fname) + + os.rename(fname + ".new", fname) + + def get_state(self, key): + if key in self._states_cache: + return self._states_cache[key][1] + + fname = op.join(self._meta_configs["checkpoint_dir"], key) + if op.exists(fname): + with open(fname) as jsonfile: + state = json.load(jsonfile) + now = time.time() + self._states_cache[key] = now, state + self._states_cache_lmd[key] = now, state + return state + else: + return None + + def delete_state(self, key): + fname = op.join(self._meta_configs["checkpoint_dir"], key) + if op.exists(fname): + os.remove(fname) + + if self._states_cache.get(key): + del self._states_cache[key] + if self._states_cache_lmd.get(key): + del self._states_cache_lmd[key] + + def close(self, key=None): + if not key: + for k, (t, s) in self._states_cache.iteritems(): + self.update_state_flush(t, k, s) + self._states_cache.clear() + self._states_cache_lmd.clear() + elif key in self._states_cache: + self.update_state_flush(self._states_cache[key][0], key, + self._states_cache[key][1]) + del self._states_cache[key] + del self._states_cache_lmd[key] diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/timer.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/timer.py new file mode 100755 index 0000000000..00a7224b0f --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/timer.py @@ -0,0 +1,60 @@ +import threading + + +class Timer(object): + """ + Timer wraps the callback and timestamp related stuff + """ + + _ident = 0 + _lock = threading.Lock() + + def __init__(self, callback, when, interval, ident=None): + self._callback = callback + self._when = when + self._interval = interval + + if ident is not None: + self._id = ident + else: + with Timer._lock: + self._id = Timer._ident + 1 + Timer._ident = Timer._ident + 1 + + def get_interval(self): + return self._interval + + def set_interval(self, interval): + self._interval = interval + + def get_expiration(self): + return self._when + + def set_initial_due_time(self, when): + self._when = when + + def update_expiration(self): + self._when += self._interval + + def __cmp__(self, other): + if other is None: + return 1 + + self_k = (self.get_expiration(), self.ident()) + other_k = (other.get_expiration(), other.ident()) + + if self_k == other_k: + return 0 + elif self_k < other_k: + return -1 + else: + return 1 + + def __eq__(self, other): + return isinstance(other, Timer) and (self.ident() == other.ident()) + + def __call__(self): + self._callback() + + def ident(self): + return self._id diff --git a/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/timer_queue.py b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/timer_queue.py new file mode 100755 index 0000000000..dd4d5f87a7 --- /dev/null +++ b/package/bin/da_ess_contentupdate/cloudconnectlib/splunktalib/timer_queue.py @@ -0,0 +1,138 @@ +""" +A timer queue implementation +""" + +import threading +import Queue +from time import time +import traceback + +from .timer import Timer +from .common import log + + +class TimerQueue(object): + """ + A timer queue implementation, runs a separate thread to handle timers + """ + + import sortedcontainers as sc + + def __init__(self): + self._timers = TimerQueue.sc.SortedSet() + self._cancelling_timers = {} + self._lock = threading.Lock() + self._wakeup_queue = Queue.Queue() + self._thr = threading.Thread(target=self._check_and_execute) + self._started = False + + def start(self): + """ + Start the timer queue to make it start function + """ + + if self._started: + return + self._started = True + + self._thr.start() + log.logger.info("TimerQueue started.") + + def tear_down(self): + if not self._started: + return + self._started = True + self._wakeup(None) + self._thr.join() + + def add_timer(self, callback, when, interval): + """ + Add timer to the queue + """ + + timer = Timer(callback, when, interval) + with self._lock: + self._timers.add(timer) + self._wakeup() + return timer + + def remove_timer(self, timer): + """ + Remove timer from the queue. + """ + + with self._lock: + try: + self._timers.remove(timer) + except ValueError: + log.logger.info("Timer=%s is not in queue, move it to cancelling " + "list", timer.ident()) + else: + self._cancelling_timers[timer.ident()] = timer + + def _check_and_execute(self): + wakeup_queue = self._wakeup_queue + while 1: + (next_expired_time, expired_timers) = self._get_expired_timers() + for timer in expired_timers: + try: + timer() + except Exception: + log.logger.error(traceback.format_exc()) + + self._reset_timers(expired_timers) + + # Calc sleep time + if next_expired_time: + now = time() + if now < next_expired_time: + sleep_time = next_expired_time - now + else: + sleep_time = 0.1 + else: + sleep_time = 1 + + try: + wakeup = wakeup_queue.get(timeout=sleep_time) + if wakeup is None: + break + except Queue.Empty: + pass + log.logger.info("TimerQueue stopped.") + + def _get_expired_timers(self): + next_expired_time = 0 + now = time() + expired_timers = [] + with self._lock: + for timer in self._timers: + if timer.get_expiration() <= now: + expired_timers.append(timer) + + if expired_timers: + del self._timers[:len(expired_timers)] + + if self._timers: + next_expired_time = self._timers[0].get_expiration() + return (next_expired_time, expired_timers) + + def _reset_timers(self, expired_timers): + has_new_timer = False + with self._lock: + cancelling_timers = self._cancelling_timers + for timer in expired_timers: + if timer.ident() in cancelling_timers: + log.logger.INFO("Timer=%s has been cancelled", timer.ident()) + continue + elif timer.get_interval(): + # Repeated timer + timer.update_expiration() + self._timers.add(timer) + has_new_timer = True + cancelling_timers.clear() + + if has_new_timer: + self._wakeup() + + def _wakeup(self, something="not_None"): + self._wakeup_queue.put(something) diff --git a/package/bin/da_ess_contentupdate/decorator.py b/package/bin/da_ess_contentupdate/decorator.py new file mode 100755 index 0000000000..43be279591 --- /dev/null +++ b/package/bin/da_ess_contentupdate/decorator.py @@ -0,0 +1,414 @@ +# ######################### LICENSE ############################ # + +# Copyright (c) 2005-2017, Michele Simionato +# All rights reserved. + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: + +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# Redistributions in bytecode form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. + +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +# DAMAGE. + +""" +Decorator module, see http://pypi.python.org/pypi/decorator +for the documentation. +""" +from __future__ import print_function + +import re +import sys +import inspect +import operator +import itertools +import collections + +__version__ = '4.0.11' + +if sys.version >= '3': + from inspect import getfullargspec + + def get_init(cls): + return cls.__init__ +else: + FullArgSpec = collections.namedtuple( + 'FullArgSpec', 'args varargs varkw defaults ' + 'kwonlyargs kwonlydefaults') + + def getfullargspec(f): + "A quick and dirty replacement for getfullargspec for Python 2.X" + return FullArgSpec._make(inspect.getargspec(f) + ([], None)) + + def get_init(cls): + return cls.__init__.__func__ + +# getargspec has been deprecated in Python 3.5 +ArgSpec = collections.namedtuple( + 'ArgSpec', 'args varargs varkw defaults') + + +def getargspec(f): + """A replacement for inspect.getargspec""" + spec = getfullargspec(f) + return ArgSpec(spec.args, spec.varargs, spec.varkw, spec.defaults) + + +DEF = re.compile(r'\s*def\s*([_\w][_\w\d]*)\s*\(') + + +# basic functionality +class FunctionMaker(object): + """ + An object with the ability to create functions with a given signature. + It has attributes name, doc, module, signature, defaults, dict and + methods update and make. + """ + + # Atomic get-and-increment provided by the GIL + _compile_count = itertools.count() + + # make pylint happy + args = varargs = varkw = defaults = kwonlyargs = kwonlydefaults = () + + def __init__(self, func=None, name=None, signature=None, + defaults=None, doc=None, module=None, funcdict=None): + self.shortsignature = signature + if func: + # func can be a class or a callable, but not an instance method + self.name = func.__name__ + if self.name == '': # small hack for lambda functions + self.name = '_lambda_' + self.doc = func.__doc__ + self.module = func.__module__ + if inspect.isfunction(func): + argspec = getfullargspec(func) + self.annotations = getattr(func, '__annotations__', {}) + for a in ('args', 'varargs', 'varkw', 'defaults', 'kwonlyargs', + 'kwonlydefaults'): + setattr(self, a, getattr(argspec, a)) + for i, arg in enumerate(self.args): + setattr(self, 'arg%d' % i, arg) + if sys.version < '3': # easy way + self.shortsignature = self.signature = ( + inspect.formatargspec( + formatvalue=lambda val: "", *argspec[:-2])[1:-1]) + else: # Python 3 way + allargs = list(self.args) + allshortargs = list(self.args) + if self.varargs: + allargs.append('*' + self.varargs) + allshortargs.append('*' + self.varargs) + elif self.kwonlyargs: + allargs.append('*') # single star syntax + for a in self.kwonlyargs: + allargs.append('%s=None' % a) + allshortargs.append('%s=%s' % (a, a)) + if self.varkw: + allargs.append('**' + self.varkw) + allshortargs.append('**' + self.varkw) + self.signature = ', '.join(allargs) + self.shortsignature = ', '.join(allshortargs) + self.dict = func.__dict__.copy() + # func=None happens when decorating a caller + if name: + self.name = name + if signature is not None: + self.signature = signature + if defaults: + self.defaults = defaults + if doc: + self.doc = doc + if module: + self.module = module + if funcdict: + self.dict = funcdict + # check existence required attributes + assert hasattr(self, 'name') + if not hasattr(self, 'signature'): + raise TypeError('You are decorating a non function: %s' % func) + + def update(self, func, **kw): + "Update the signature of func with the data in self" + func.__name__ = self.name + func.__doc__ = getattr(self, 'doc', None) + func.__dict__ = getattr(self, 'dict', {}) + func.__defaults__ = self.defaults + func.__kwdefaults__ = self.kwonlydefaults or None + func.__annotations__ = getattr(self, 'annotations', None) + try: + frame = sys._getframe(3) + except AttributeError: # for IronPython and similar implementations + callermodule = '?' + else: + callermodule = frame.f_globals.get('__name__', '?') + func.__module__ = getattr(self, 'module', callermodule) + func.__dict__.update(kw) + + def make(self, src_templ, evaldict=None, addsource=False, **attrs): + "Make a new function from a given template and update the signature" + src = src_templ % vars(self) # expand name and signature + evaldict = evaldict or {} + mo = DEF.match(src) + if mo is None: + raise SyntaxError('not a valid function template\n%s' % src) + name = mo.group(1) # extract the function name + names = set([name] + [arg.strip(' *') for arg in + self.shortsignature.split(',')]) + for n in names: + if n in ('_func_', '_call_'): + raise NameError('%s is overridden in\n%s' % (n, src)) + + if not src.endswith('\n'): # add a newline for old Pythons + src += '\n' + + # Ensure each generated function has a unique filename for profilers + # (such as cProfile) that depend on the tuple of (, + # , ) being unique. + filename = '' % (next(self._compile_count),) + try: + code = compile(src, filename, 'single') + exec(code, evaldict) + except: + print('Error in generated code:', file=sys.stderr) + print(src, file=sys.stderr) + raise + func = evaldict[name] + if addsource: + attrs['__source__'] = src + self.update(func, **attrs) + return func + + @classmethod + def create(cls, obj, body, evaldict, defaults=None, + doc=None, module=None, addsource=True, **attrs): + """ + Create a function from the strings name, signature and body. + evaldict is the evaluation dictionary. If addsource is true an + attribute __source__ is added to the result. The attributes attrs + are added, if any. + """ + if isinstance(obj, str): # "name(signature)" + name, rest = obj.strip().split('(', 1) + signature = rest[:-1] # strip a right parens + func = None + else: # a function + name = None + signature = None + func = obj + self = cls(func, name, signature, defaults, doc, module) + ibody = '\n'.join(' ' + line for line in body.splitlines()) + return self.make('def %(name)s(%(signature)s):\n' + ibody, + evaldict, addsource, **attrs) + + +def decorate(func, caller): + """ + decorate(func, caller) decorates a function using a caller. + """ + evaldict = dict(_call_=caller, _func_=func) + fun = FunctionMaker.create( + func, "return _call_(_func_, %(shortsignature)s)", + evaldict, __wrapped__=func) + if hasattr(func, '__qualname__'): + fun.__qualname__ = func.__qualname__ + return fun + + +def decorator(caller, _func=None): + """decorator(caller) converts a caller function into a decorator""" + if _func is not None: # return a decorated function + # this is obsolete behavior; you should use decorate instead + return decorate(_func, caller) + # else return a decorator function + if inspect.isclass(caller): + name = caller.__name__.lower() + doc = 'decorator(%s) converts functions/generators into ' \ + 'factories of %s objects' % (caller.__name__, caller.__name__) + elif inspect.isfunction(caller): + if caller.__name__ == '': + name = '_lambda_' + else: + name = caller.__name__ + doc = caller.__doc__ + else: # assume caller is an object with a __call__ method + name = caller.__class__.__name__.lower() + doc = caller.__call__.__doc__ + evaldict = dict(_call_=caller, _decorate_=decorate) + return FunctionMaker.create( + '%s(func)' % name, 'return _decorate_(func, _call_)', + evaldict, doc=doc, module=caller.__module__, + __wrapped__=caller) + + +# ####################### contextmanager ####################### # + +try: # Python >= 3.2 + from contextlib import _GeneratorContextManager +except ImportError: # Python >= 2.5 + from contextlib import GeneratorContextManager as _GeneratorContextManager + + +class ContextManager(_GeneratorContextManager): + def __call__(self, func): + """Context manager decorator""" + return FunctionMaker.create( + func, "with _self_: return _func_(%(shortsignature)s)", + dict(_self_=self, _func_=func), __wrapped__=func) + + +init = getfullargspec(_GeneratorContextManager.__init__) +n_args = len(init.args) +if n_args == 2 and not init.varargs: # (self, genobj) Python 2.7 + def __init__(self, g, *a, **k): + return _GeneratorContextManager.__init__(self, g(*a, **k)) + ContextManager.__init__ = __init__ +elif n_args == 2 and init.varargs: # (self, gen, *a, **k) Python 3.4 + pass +elif n_args == 4: # (self, gen, args, kwds) Python 3.5 + def __init__(self, g, *a, **k): + return _GeneratorContextManager.__init__(self, g, a, k) + ContextManager.__init__ = __init__ + +contextmanager = decorator(ContextManager) + + +# ############################ dispatch_on ############################ # + +def append(a, vancestors): + """ + Append ``a`` to the list of the virtual ancestors, unless it is already + included. + """ + add = True + for j, va in enumerate(vancestors): + if issubclass(va, a): + add = False + break + if issubclass(a, va): + vancestors[j] = a + add = False + if add: + vancestors.append(a) + + +# inspired from simplegeneric by P.J. Eby and functools.singledispatch +def dispatch_on(*dispatch_args): + """ + Factory of decorators turning a function into a generic function + dispatching on the given arguments. + """ + assert dispatch_args, 'No dispatch args passed' + dispatch_str = '(%s,)' % ', '.join(dispatch_args) + + def check(arguments, wrong=operator.ne, msg=''): + """Make sure one passes the expected number of arguments""" + if wrong(len(arguments), len(dispatch_args)): + raise TypeError('Expected %d arguments, got %d%s' % + (len(dispatch_args), len(arguments), msg)) + + def gen_func_dec(func): + """Decorator turning a function into a generic function""" + + # first check the dispatch arguments + argset = set(getfullargspec(func).args) + if not set(dispatch_args) <= argset: + raise NameError('Unknown dispatch arguments %s' % dispatch_str) + + typemap = {} + + def vancestors(*types): + """ + Get a list of sets of virtual ancestors for the given types + """ + check(types) + ras = [[] for _ in range(len(dispatch_args))] + for types_ in typemap: + for t, type_, ra in zip(types, types_, ras): + if issubclass(t, type_) and type_ not in t.mro(): + append(type_, ra) + return [set(ra) for ra in ras] + + def ancestors(*types): + """ + Get a list of virtual MROs, one for each type + """ + check(types) + lists = [] + for t, vas in zip(types, vancestors(*types)): + n_vas = len(vas) + if n_vas > 1: + raise RuntimeError( + 'Ambiguous dispatch for %s: %s' % (t, vas)) + elif n_vas == 1: + va, = vas + mro = type('t', (t, va), {}).mro()[1:] + else: + mro = t.mro() + lists.append(mro[:-1]) # discard t and object + return lists + + def register(*types): + """ + Decorator to register an implementation for the given types + """ + check(types) + + def dec(f): + check(getfullargspec(f).args, operator.lt, ' in ' + f.__name__) + typemap[types] = f + return f + return dec + + def dispatch_info(*types): + """ + An utility to introspect the dispatch algorithm + """ + check(types) + lst = [] + for anc in itertools.product(*ancestors(*types)): + lst.append(tuple(a.__name__ for a in anc)) + return lst + + def _dispatch(dispatch_args, *args, **kw): + types = tuple(type(arg) for arg in dispatch_args) + try: # fast path + f = typemap[types] + except KeyError: + pass + else: + return f(*args, **kw) + combinations = itertools.product(*ancestors(*types)) + next(combinations) # the first one has been already tried + for types_ in combinations: + f = typemap.get(types_) + if f is not None: + return f(*args, **kw) + + # else call the default implementation + return func(*args, **kw) + + return FunctionMaker.create( + func, 'return _f_(%s, %%(shortsignature)s)' % dispatch_str, + dict(_f_=_dispatch), register=register, default=func, + typemap=typemap, vancestors=vancestors, ancestors=ancestors, + dispatch_info=dispatch_info, __wrapped__=func) + + gen_func_dec.__name__ = 'dispatch_on' + dispatch_str + return gen_func_dec diff --git a/package/bin/da_ess_contentupdate/functools32/__init__.py b/package/bin/da_ess_contentupdate/functools32/__init__.py new file mode 100755 index 0000000000..837f7fb651 --- /dev/null +++ b/package/bin/da_ess_contentupdate/functools32/__init__.py @@ -0,0 +1 @@ +from .functools32 import * diff --git a/package/bin/da_ess_contentupdate/functools32/_dummy_thread32.py b/package/bin/da_ess_contentupdate/functools32/_dummy_thread32.py new file mode 100755 index 0000000000..8503b0e3dd --- /dev/null +++ b/package/bin/da_ess_contentupdate/functools32/_dummy_thread32.py @@ -0,0 +1,158 @@ +"""Drop-in replacement for the thread module. + +Meant to be used as a brain-dead substitute so that threaded code does +not need to be rewritten for when the thread module is not present. + +Suggested usage is:: + + try: + try: + import _thread # Python >= 3 + except: + import thread as _thread # Python < 3 + except ImportError: + import _dummy_thread as _thread + +""" +# Exports only things specified by thread documentation; +# skipping obsolete synonyms allocate(), start_new(), exit_thread(). +__all__ = ['error', 'start_new_thread', 'exit', 'get_ident', 'allocate_lock', + 'interrupt_main', 'LockType'] + +# A dummy value +TIMEOUT_MAX = 2**31 + +# NOTE: this module can be imported early in the extension building process, +# and so top level imports of other modules should be avoided. Instead, all +# imports are done when needed on a function-by-function basis. Since threads +# are disabled, the import lock should not be an issue anyway (??). + +class error(Exception): + """Dummy implementation of _thread.error.""" + + def __init__(self, *args): + self.args = args + +def start_new_thread(function, args, kwargs={}): + """Dummy implementation of _thread.start_new_thread(). + + Compatibility is maintained by making sure that ``args`` is a + tuple and ``kwargs`` is a dictionary. If an exception is raised + and it is SystemExit (which can be done by _thread.exit()) it is + caught and nothing is done; all other exceptions are printed out + by using traceback.print_exc(). + + If the executed function calls interrupt_main the KeyboardInterrupt will be + raised when the function returns. + + """ + if type(args) != type(tuple()): + raise TypeError("2nd arg must be a tuple") + if type(kwargs) != type(dict()): + raise TypeError("3rd arg must be a dict") + global _main + _main = False + try: + function(*args, **kwargs) + except SystemExit: + pass + except: + import traceback + traceback.print_exc() + _main = True + global _interrupt + if _interrupt: + _interrupt = False + raise KeyboardInterrupt + +def exit(): + """Dummy implementation of _thread.exit().""" + raise SystemExit + +def get_ident(): + """Dummy implementation of _thread.get_ident(). + + Since this module should only be used when _threadmodule is not + available, it is safe to assume that the current process is the + only thread. Thus a constant can be safely returned. + """ + return -1 + +def allocate_lock(): + """Dummy implementation of _thread.allocate_lock().""" + return LockType() + +def stack_size(size=None): + """Dummy implementation of _thread.stack_size().""" + if size is not None: + raise error("setting thread stack size not supported") + return 0 + +class LockType(object): + """Class implementing dummy implementation of _thread.LockType. + + Compatibility is maintained by maintaining self.locked_status + which is a boolean that stores the state of the lock. Pickling of + the lock, though, should not be done since if the _thread module is + then used with an unpickled ``lock()`` from here problems could + occur from this class not having atomic methods. + + """ + + def __init__(self): + self.locked_status = False + + def acquire(self, waitflag=None, timeout=-1): + """Dummy implementation of acquire(). + + For blocking calls, self.locked_status is automatically set to + True and returned appropriately based on value of + ``waitflag``. If it is non-blocking, then the value is + actually checked and not set if it is already acquired. This + is all done so that threading.Condition's assert statements + aren't triggered and throw a little fit. + + """ + if waitflag is None or waitflag: + self.locked_status = True + return True + else: + if not self.locked_status: + self.locked_status = True + return True + else: + if timeout > 0: + import time + time.sleep(timeout) + return False + + __enter__ = acquire + + def __exit__(self, typ, val, tb): + self.release() + + def release(self): + """Release the dummy lock.""" + # XXX Perhaps shouldn't actually bother to test? Could lead + # to problems for complex, threaded code. + if not self.locked_status: + raise error + self.locked_status = False + return True + + def locked(self): + return self.locked_status + +# Used to signal that interrupt_main was called in a "thread" +_interrupt = False +# True when not executing in a "thread" +_main = True + +def interrupt_main(): + """Set _interrupt flag to True to have start_new_thread raise + KeyboardInterrupt upon exiting.""" + if _main: + raise KeyboardInterrupt + else: + global _interrupt + _interrupt = True diff --git a/package/bin/da_ess_contentupdate/functools32/functools32.py b/package/bin/da_ess_contentupdate/functools32/functools32.py new file mode 100755 index 0000000000..c44551fac0 --- /dev/null +++ b/package/bin/da_ess_contentupdate/functools32/functools32.py @@ -0,0 +1,423 @@ +"""functools.py - Tools for working with functions and callable objects +""" +# Python module wrapper for _functools C module +# to allow utilities written in Python to be added +# to the functools module. +# Written by Nick Coghlan +# and Raymond Hettinger +# Copyright (C) 2006-2010 Python Software Foundation. +# See C source code for _functools credits/copyright + +__all__ = ['update_wrapper', 'wraps', 'WRAPPER_ASSIGNMENTS', 'WRAPPER_UPDATES', + 'total_ordering', 'cmp_to_key', 'lru_cache', 'reduce', 'partial'] + +from _functools import partial, reduce +from collections import MutableMapping, namedtuple +from .reprlib32 import recursive_repr as _recursive_repr +from weakref import proxy as _proxy +import sys as _sys +try: + from thread import allocate_lock as Lock +except ImportError: + from ._dummy_thread32 import allocate_lock as Lock + +################################################################################ +### OrderedDict +################################################################################ + +class _Link(object): + __slots__ = 'prev', 'next', 'key', '__weakref__' + +class OrderedDict(dict): + 'Dictionary that remembers insertion order' + # An inherited dict maps keys to values. + # The inherited dict provides __getitem__, __len__, __contains__, and get. + # The remaining methods are order-aware. + # Big-O running times for all methods are the same as regular dictionaries. + + # The internal self.__map dict maps keys to links in a doubly linked list. + # The circular doubly linked list starts and ends with a sentinel element. + # The sentinel element never gets deleted (this simplifies the algorithm). + # The sentinel is in self.__hardroot with a weakref proxy in self.__root. + # The prev links are weakref proxies (to prevent circular references). + # Individual links are kept alive by the hard reference in self.__map. + # Those hard references disappear when a key is deleted from an OrderedDict. + + def __init__(self, *args, **kwds): + '''Initialize an ordered dictionary. The signature is the same as + regular dictionaries, but keyword arguments are not recommended because + their insertion order is arbitrary. + + ''' + if len(args) > 1: + raise TypeError('expected at most 1 arguments, got %d' % len(args)) + try: + self.__root + except AttributeError: + self.__hardroot = _Link() + self.__root = root = _proxy(self.__hardroot) + root.prev = root.next = root + self.__map = {} + self.__update(*args, **kwds) + + def __setitem__(self, key, value, + dict_setitem=dict.__setitem__, proxy=_proxy, Link=_Link): + 'od.__setitem__(i, y) <==> od[i]=y' + # Setting a new item creates a new link at the end of the linked list, + # and the inherited dictionary is updated with the new key/value pair. + if key not in self: + self.__map[key] = link = Link() + root = self.__root + last = root.prev + link.prev, link.next, link.key = last, root, key + last.next = link + root.prev = proxy(link) + dict_setitem(self, key, value) + + def __delitem__(self, key, dict_delitem=dict.__delitem__): + 'od.__delitem__(y) <==> del od[y]' + # Deleting an existing item uses self.__map to find the link which gets + # removed by updating the links in the predecessor and successor nodes. + dict_delitem(self, key) + link = self.__map.pop(key) + link_prev = link.prev + link_next = link.next + link_prev.next = link_next + link_next.prev = link_prev + + def __iter__(self): + 'od.__iter__() <==> iter(od)' + # Traverse the linked list in order. + root = self.__root + curr = root.next + while curr is not root: + yield curr.key + curr = curr.next + + def __reversed__(self): + 'od.__reversed__() <==> reversed(od)' + # Traverse the linked list in reverse order. + root = self.__root + curr = root.prev + while curr is not root: + yield curr.key + curr = curr.prev + + def clear(self): + 'od.clear() -> None. Remove all items from od.' + root = self.__root + root.prev = root.next = root + self.__map.clear() + dict.clear(self) + + def popitem(self, last=True): + '''od.popitem() -> (k, v), return and remove a (key, value) pair. + Pairs are returned in LIFO order if last is true or FIFO order if false. + + ''' + if not self: + raise KeyError('dictionary is empty') + root = self.__root + if last: + link = root.prev + link_prev = link.prev + link_prev.next = root + root.prev = link_prev + else: + link = root.next + link_next = link.next + root.next = link_next + link_next.prev = root + key = link.key + del self.__map[key] + value = dict.pop(self, key) + return key, value + + def move_to_end(self, key, last=True): + '''Move an existing element to the end (or beginning if last==False). + + Raises KeyError if the element does not exist. + When last=True, acts like a fast version of self[key]=self.pop(key). + + ''' + link = self.__map[key] + link_prev = link.prev + link_next = link.next + link_prev.next = link_next + link_next.prev = link_prev + root = self.__root + if last: + last = root.prev + link.prev = last + link.next = root + last.next = root.prev = link + else: + first = root.next + link.prev = root + link.next = first + root.next = first.prev = link + + def __sizeof__(self): + sizeof = _sys.getsizeof + n = len(self) + 1 # number of links including root + size = sizeof(self.__dict__) # instance dictionary + size += sizeof(self.__map) * 2 # internal dict and inherited dict + size += sizeof(self.__hardroot) * n # link objects + size += sizeof(self.__root) * n # proxy objects + return size + + update = __update = MutableMapping.update + keys = MutableMapping.keys + values = MutableMapping.values + items = MutableMapping.items + __ne__ = MutableMapping.__ne__ + + __marker = object() + + def pop(self, key, default=__marker): + '''od.pop(k[,d]) -> v, remove specified key and return the corresponding + value. If key is not found, d is returned if given, otherwise KeyError + is raised. + + ''' + if key in self: + result = self[key] + del self[key] + return result + if default is self.__marker: + raise KeyError(key) + return default + + def setdefault(self, key, default=None): + 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' + if key in self: + return self[key] + self[key] = default + return default + + @_recursive_repr() + def __repr__(self): + 'od.__repr__() <==> repr(od)' + if not self: + return '%s()' % (self.__class__.__name__,) + return '%s(%r)' % (self.__class__.__name__, list(self.items())) + + def __reduce__(self): + 'Return state information for pickling' + items = [[k, self[k]] for k in self] + inst_dict = vars(self).copy() + for k in vars(OrderedDict()): + inst_dict.pop(k, None) + if inst_dict: + return (self.__class__, (items,), inst_dict) + return self.__class__, (items,) + + def copy(self): + 'od.copy() -> a shallow copy of od' + return self.__class__(self) + + @classmethod + def fromkeys(cls, iterable, value=None): + '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S. + If not specified, the value defaults to None. + + ''' + self = cls() + for key in iterable: + self[key] = value + return self + + def __eq__(self, other): + '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive + while comparison to a regular mapping is order-insensitive. + + ''' + if isinstance(other, OrderedDict): + return len(self)==len(other) and \ + all(p==q for p, q in zip(self.items(), other.items())) + return dict.__eq__(self, other) + +# update_wrapper() and wraps() are tools to help write +# wrapper functions that can handle naive introspection + +WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__') +WRAPPER_UPDATES = ('__dict__',) +def update_wrapper(wrapper, + wrapped, + assigned = WRAPPER_ASSIGNMENTS, + updated = WRAPPER_UPDATES): + """Update a wrapper function to look like the wrapped function + + wrapper is the function to be updated + wrapped is the original function + assigned is a tuple naming the attributes assigned directly + from the wrapped function to the wrapper function (defaults to + functools.WRAPPER_ASSIGNMENTS) + updated is a tuple naming the attributes of the wrapper that + are updated with the corresponding attribute from the wrapped + function (defaults to functools.WRAPPER_UPDATES) + """ + wrapper.__wrapped__ = wrapped + for attr in assigned: + try: + value = getattr(wrapped, attr) + except AttributeError: + pass + else: + setattr(wrapper, attr, value) + for attr in updated: + getattr(wrapper, attr).update(getattr(wrapped, attr, {})) + # Return the wrapper so this can be used as a decorator via partial() + return wrapper + +def wraps(wrapped, + assigned = WRAPPER_ASSIGNMENTS, + updated = WRAPPER_UPDATES): + """Decorator factory to apply update_wrapper() to a wrapper function + + Returns a decorator that invokes update_wrapper() with the decorated + function as the wrapper argument and the arguments to wraps() as the + remaining arguments. Default arguments are as for update_wrapper(). + This is a convenience function to simplify applying partial() to + update_wrapper(). + """ + return partial(update_wrapper, wrapped=wrapped, + assigned=assigned, updated=updated) + +def total_ordering(cls): + """Class decorator that fills in missing ordering methods""" + convert = { + '__lt__': [('__gt__', lambda self, other: not (self < other or self == other)), + ('__le__', lambda self, other: self < other or self == other), + ('__ge__', lambda self, other: not self < other)], + '__le__': [('__ge__', lambda self, other: not self <= other or self == other), + ('__lt__', lambda self, other: self <= other and not self == other), + ('__gt__', lambda self, other: not self <= other)], + '__gt__': [('__lt__', lambda self, other: not (self > other or self == other)), + ('__ge__', lambda self, other: self > other or self == other), + ('__le__', lambda self, other: not self > other)], + '__ge__': [('__le__', lambda self, other: (not self >= other) or self == other), + ('__gt__', lambda self, other: self >= other and not self == other), + ('__lt__', lambda self, other: not self >= other)] + } + roots = set(dir(cls)) & set(convert) + if not roots: + raise ValueError('must define at least one ordering operation: < > <= >=') + root = max(roots) # prefer __lt__ to __le__ to __gt__ to __ge__ + for opname, opfunc in convert[root]: + if opname not in roots: + opfunc.__name__ = opname + opfunc.__doc__ = getattr(int, opname).__doc__ + setattr(cls, opname, opfunc) + return cls + +def cmp_to_key(mycmp): + """Convert a cmp= function into a key= function""" + class K(object): + __slots__ = ['obj'] + def __init__(self, obj): + self.obj = obj + def __lt__(self, other): + return mycmp(self.obj, other.obj) < 0 + def __gt__(self, other): + return mycmp(self.obj, other.obj) > 0 + def __eq__(self, other): + return mycmp(self.obj, other.obj) == 0 + def __le__(self, other): + return mycmp(self.obj, other.obj) <= 0 + def __ge__(self, other): + return mycmp(self.obj, other.obj) >= 0 + def __ne__(self, other): + return mycmp(self.obj, other.obj) != 0 + __hash__ = None + return K + +_CacheInfo = namedtuple("CacheInfo", "hits misses maxsize currsize") + +def lru_cache(maxsize=100): + """Least-recently-used cache decorator. + + If *maxsize* is set to None, the LRU features are disabled and the cache + can grow without bound. + + Arguments to the cached function must be hashable. + + View the cache statistics named tuple (hits, misses, maxsize, currsize) with + f.cache_info(). Clear the cache and statistics with f.cache_clear(). + Access the underlying function with f.__wrapped__. + + See: http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used + + """ + # Users should only access the lru_cache through its public API: + # cache_info, cache_clear, and f.__wrapped__ + # The internals of the lru_cache are encapsulated for thread safety and + # to allow the implementation to change (including a possible C version). + + def decorating_function(user_function, + tuple=tuple, sorted=sorted, len=len, KeyError=KeyError): + + hits, misses = [0], [0] + kwd_mark = (object(),) # separates positional and keyword args + lock = Lock() # needed because OrderedDict isn't threadsafe + + if maxsize is None: + cache = dict() # simple cache without ordering or size limit + + @wraps(user_function) + def wrapper(*args, **kwds): + key = args + if kwds: + key += kwd_mark + tuple(sorted(kwds.items())) + try: + result = cache[key] + hits[0] += 1 + return result + except KeyError: + pass + result = user_function(*args, **kwds) + cache[key] = result + misses[0] += 1 + return result + else: + cache = OrderedDict() # ordered least recent to most recent + cache_popitem = cache.popitem + cache_renew = cache.move_to_end + + @wraps(user_function) + def wrapper(*args, **kwds): + key = args + if kwds: + key += kwd_mark + tuple(sorted(kwds.items())) + with lock: + try: + result = cache[key] + cache_renew(key) # record recent use of this key + hits[0] += 1 + return result + except KeyError: + pass + result = user_function(*args, **kwds) + with lock: + cache[key] = result # record recent use of this key + misses[0] += 1 + if len(cache) > maxsize: + cache_popitem(0) # purge least recently used cache entry + return result + + def cache_info(): + """Report cache statistics""" + with lock: + return _CacheInfo(hits[0], misses[0], maxsize, len(cache)) + + def cache_clear(): + """Clear the cache and cache statistics""" + with lock: + cache.clear() + hits[0] = misses[0] = 0 + + wrapper.cache_info = cache_info + wrapper.cache_clear = cache_clear + return wrapper + + return decorating_function diff --git a/package/bin/da_ess_contentupdate/functools32/reprlib32.py b/package/bin/da_ess_contentupdate/functools32/reprlib32.py new file mode 100755 index 0000000000..af919758ca --- /dev/null +++ b/package/bin/da_ess_contentupdate/functools32/reprlib32.py @@ -0,0 +1,157 @@ +"""Redo the builtin repr() (representation) but with limits on most sizes.""" + +__all__ = ["Repr", "repr", "recursive_repr"] + +import __builtin__ as builtins +from itertools import islice +try: + from thread import get_ident +except ImportError: + from _dummy_thread32 import get_ident + +def recursive_repr(fillvalue='...'): + 'Decorator to make a repr function return fillvalue for a recursive call' + + def decorating_function(user_function): + repr_running = set() + + def wrapper(self): + key = id(self), get_ident() + if key in repr_running: + return fillvalue + repr_running.add(key) + try: + result = user_function(self) + finally: + repr_running.discard(key) + return result + + # Can't use functools.wraps() here because of bootstrap issues + wrapper.__module__ = getattr(user_function, '__module__') + wrapper.__doc__ = getattr(user_function, '__doc__') + wrapper.__name__ = getattr(user_function, '__name__') + wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) + return wrapper + + return decorating_function + +class Repr: + + def __init__(self): + self.maxlevel = 6 + self.maxtuple = 6 + self.maxlist = 6 + self.maxarray = 5 + self.maxdict = 4 + self.maxset = 6 + self.maxfrozenset = 6 + self.maxdeque = 6 + self.maxstring = 30 + self.maxlong = 40 + self.maxother = 30 + + def repr(self, x): + return self.repr1(x, self.maxlevel) + + def repr1(self, x, level): + typename = type(x).__name__ + if ' ' in typename: + parts = typename.split() + typename = '_'.join(parts) + if hasattr(self, 'repr_' + typename): + return getattr(self, 'repr_' + typename)(x, level) + else: + return self.repr_instance(x, level) + + def _repr_iterable(self, x, level, left, right, maxiter, trail=''): + n = len(x) + if level <= 0 and n: + s = '...' + else: + newlevel = level - 1 + repr1 = self.repr1 + pieces = [repr1(elem, newlevel) for elem in islice(x, maxiter)] + if n > maxiter: pieces.append('...') + s = ', '.join(pieces) + if n == 1 and trail: right = trail + right + return '%s%s%s' % (left, s, right) + + def repr_tuple(self, x, level): + return self._repr_iterable(x, level, '(', ')', self.maxtuple, ',') + + def repr_list(self, x, level): + return self._repr_iterable(x, level, '[', ']', self.maxlist) + + def repr_array(self, x, level): + header = "array('%s', [" % x.typecode + return self._repr_iterable(x, level, header, '])', self.maxarray) + + def repr_set(self, x, level): + x = _possibly_sorted(x) + return self._repr_iterable(x, level, 'set([', '])', self.maxset) + + def repr_frozenset(self, x, level): + x = _possibly_sorted(x) + return self._repr_iterable(x, level, 'frozenset([', '])', + self.maxfrozenset) + + def repr_deque(self, x, level): + return self._repr_iterable(x, level, 'deque([', '])', self.maxdeque) + + def repr_dict(self, x, level): + n = len(x) + if n == 0: return '{}' + if level <= 0: return '{...}' + newlevel = level - 1 + repr1 = self.repr1 + pieces = [] + for key in islice(_possibly_sorted(x), self.maxdict): + keyrepr = repr1(key, newlevel) + valrepr = repr1(x[key], newlevel) + pieces.append('%s: %s' % (keyrepr, valrepr)) + if n > self.maxdict: pieces.append('...') + s = ', '.join(pieces) + return '{%s}' % (s,) + + def repr_str(self, x, level): + s = builtins.repr(x[:self.maxstring]) + if len(s) > self.maxstring: + i = max(0, (self.maxstring-3)//2) + j = max(0, self.maxstring-3-i) + s = builtins.repr(x[:i] + x[len(x)-j:]) + s = s[:i] + '...' + s[len(s)-j:] + return s + + def repr_int(self, x, level): + s = builtins.repr(x) # XXX Hope this isn't too slow... + if len(s) > self.maxlong: + i = max(0, (self.maxlong-3)//2) + j = max(0, self.maxlong-3-i) + s = s[:i] + '...' + s[len(s)-j:] + return s + + def repr_instance(self, x, level): + try: + s = builtins.repr(x) + # Bugs in x.__repr__() can cause arbitrary + # exceptions -- then make up something + except Exception: + return '<%s instance at %x>' % (x.__class__.__name__, id(x)) + if len(s) > self.maxother: + i = max(0, (self.maxother-3)//2) + j = max(0, self.maxother-3-i) + s = s[:i] + '...' + s[len(s)-j:] + return s + + +def _possibly_sorted(x): + # Since not all sequences of items can be sorted and comparison + # functions may raise arbitrary exceptions, return an unsorted + # sequence in that case. + try: + return sorted(x) + except Exception: + return list(x) + +aRepr = Repr() +repr = aRepr.repr diff --git a/package/bin/da_ess_contentupdate/httplib2/__init__.py b/package/bin/da_ess_contentupdate/httplib2/__init__.py new file mode 100755 index 0000000000..6fa3cc60e5 --- /dev/null +++ b/package/bin/da_ess_contentupdate/httplib2/__init__.py @@ -0,0 +1,1696 @@ +from __future__ import generators +""" +httplib2 + +A caching http interface that supports ETags and gzip +to conserve bandwidth. + +Requires Python 2.3 or later + +Changelog: +2007-08-18, Rick: Modified so it's able to use a socks proxy if needed. + +""" + +__author__ = "Joe Gregorio (joe@bitworking.org)" +__copyright__ = "Copyright 2006, Joe Gregorio" +__contributors__ = ["Thomas Broyer (t.broyer@ltgt.net)", + "James Antill", + "Xavier Verges Farrero", + "Jonathan Feinberg", + "Blair Zajac", + "Sam Ruby", + "Louis Nyffenegger"] +__license__ = "MIT" +__version__ = "0.9.2" + +import re +import sys +import email +import email.Utils +import email.Message +import email.FeedParser +import StringIO +import gzip +import zlib +import httplib +import urlparse +import urllib +import base64 +import os +import copy +import calendar +import time +import random +import errno +try: + from hashlib import sha1 as _sha, md5 as _md5 +except ImportError: + # prior to Python 2.5, these were separate modules + import sha + import md5 + _sha = sha.new + _md5 = md5.new +import hmac +from gettext import gettext as _ +import socket + +try: + from httplib2 import socks +except ImportError: + try: + import socks + except (ImportError, AttributeError): + socks = None + +# Build the appropriate socket wrapper for ssl +try: + import ssl # python 2.6 + ssl_SSLError = ssl.SSLError + def _ssl_wrap_socket(sock, key_file, cert_file, + disable_validation, ca_certs): + if disable_validation: + cert_reqs = ssl.CERT_NONE + else: + cert_reqs = ssl.CERT_REQUIRED + # We should be specifying SSL version 3 or TLS v1, but the ssl module + # doesn't expose the necessary knobs. So we need to go with the default + # of SSLv23. + return ssl.wrap_socket(sock, keyfile=key_file, certfile=cert_file, + cert_reqs=cert_reqs, ca_certs=ca_certs) +except (AttributeError, ImportError): + ssl_SSLError = None + def _ssl_wrap_socket(sock, key_file, cert_file, + disable_validation, ca_certs): + if not disable_validation: + raise CertificateValidationUnsupported( + "SSL certificate validation is not supported without " + "the ssl module installed. To avoid this error, install " + "the ssl module, or explicity disable validation.") + ssl_sock = socket.ssl(sock, key_file, cert_file) + return httplib.FakeSocket(sock, ssl_sock) + + +if sys.version_info >= (2,3): + from iri2uri import iri2uri +else: + def iri2uri(uri): + return uri + +def has_timeout(timeout): # python 2.6 + if hasattr(socket, '_GLOBAL_DEFAULT_TIMEOUT'): + return (timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT) + return (timeout is not None) + +__all__ = [ + 'Http', 'Response', 'ProxyInfo', 'HttpLib2Error', 'RedirectMissingLocation', + 'RedirectLimit', 'FailedToDecompressContent', + 'UnimplementedDigestAuthOptionError', + 'UnimplementedHmacDigestAuthOptionError', + 'debuglevel', 'ProxiesUnavailableError'] + + +# The httplib debug level, set to a non-zero value to get debug output +debuglevel = 0 + +# A request will be tried 'RETRIES' times if it fails at the socket/connection level. +RETRIES = 2 + +# Python 2.3 support +if sys.version_info < (2,4): + def sorted(seq): + seq.sort() + return seq + +# Python 2.3 support +def HTTPResponse__getheaders(self): + """Return list of (header, value) tuples.""" + if self.msg is None: + raise httplib.ResponseNotReady() + return self.msg.items() + +if not hasattr(httplib.HTTPResponse, 'getheaders'): + httplib.HTTPResponse.getheaders = HTTPResponse__getheaders + +# All exceptions raised here derive from HttpLib2Error +class HttpLib2Error(Exception): pass + +# Some exceptions can be caught and optionally +# be turned back into responses. +class HttpLib2ErrorWithResponse(HttpLib2Error): + def __init__(self, desc, response, content): + self.response = response + self.content = content + HttpLib2Error.__init__(self, desc) + +class RedirectMissingLocation(HttpLib2ErrorWithResponse): pass +class RedirectLimit(HttpLib2ErrorWithResponse): pass +class FailedToDecompressContent(HttpLib2ErrorWithResponse): pass +class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): pass +class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): pass + +class MalformedHeader(HttpLib2Error): pass +class RelativeURIError(HttpLib2Error): pass +class ServerNotFoundError(HttpLib2Error): pass +class ProxiesUnavailableError(HttpLib2Error): pass +class CertificateValidationUnsupported(HttpLib2Error): pass +class SSLHandshakeError(HttpLib2Error): pass +class NotSupportedOnThisPlatform(HttpLib2Error): pass +class CertificateHostnameMismatch(SSLHandshakeError): + def __init__(self, desc, host, cert): + HttpLib2Error.__init__(self, desc) + self.host = host + self.cert = cert + +# Open Items: +# ----------- +# Proxy support + +# Are we removing the cached content too soon on PUT (only delete on 200 Maybe?) + +# Pluggable cache storage (supports storing the cache in +# flat files by default. We need a plug-in architecture +# that can support Berkeley DB and Squid) + +# == Known Issues == +# Does not handle a resource that uses conneg and Last-Modified but no ETag as a cache validator. +# Does not handle Cache-Control: max-stale +# Does not use Age: headers when calculating cache freshness. + + +# The number of redirections to follow before giving up. +# Note that only GET redirects are automatically followed. +# Will also honor 301 requests by saving that info and never +# requesting that URI again. +DEFAULT_MAX_REDIRECTS = 5 + +try: + # Users can optionally provide a module that tells us where the CA_CERTS + # are located. + import ca_certs_locater + CA_CERTS = ca_certs_locater.get() +except ImportError: + # Default CA certificates file bundled with httplib2. + CA_CERTS = os.path.join( + os.path.dirname(os.path.abspath(__file__ )), "cacerts.txt") + +# Which headers are hop-by-hop headers by default +HOP_BY_HOP = ['connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', 'te', 'trailers', 'transfer-encoding', 'upgrade'] + +def _get_end2end_headers(response): + hopbyhop = list(HOP_BY_HOP) + hopbyhop.extend([x.strip() for x in response.get('connection', '').split(',')]) + return [header for header in response.keys() if header not in hopbyhop] + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + +def parse_uri(uri): + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + groups = URI.match(uri).groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + +def urlnorm(uri): + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise RelativeURIError("Only absolute URIs are allowed. uri = %s" % uri) + authority = authority.lower() + scheme = scheme.lower() + if not path: + path = "/" + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + scheme = scheme.lower() + defrag_uri = scheme + "://" + authority + request_uri + return scheme, authority, request_uri, defrag_uri + + +# Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/) +re_url_scheme = re.compile(r'^\w+://') +re_slash = re.compile(r'[?/:|]+') + +def safename(filename): + """Return a filename suitable for the cache. + + Strips dangerous and common characters to create a filename we + can use to store the cache in. + """ + + try: + if re_url_scheme.match(filename): + if isinstance(filename,str): + filename = filename.decode('utf-8') + filename = filename.encode('idna') + else: + filename = filename.encode('idna') + except UnicodeError: + pass + if isinstance(filename,unicode): + filename=filename.encode('utf-8') + filemd5 = _md5(filename).hexdigest() + filename = re_url_scheme.sub("", filename) + filename = re_slash.sub(",", filename) + + # limit length of filename + if len(filename)>200: + filename=filename[:200] + return ",".join((filename, filemd5)) + +NORMALIZE_SPACE = re.compile(r'(?:\r\n)?[ \t]+') +def _normalize_headers(headers): + return dict([ (key.lower(), NORMALIZE_SPACE.sub(value, ' ').strip()) for (key, value) in headers.iteritems()]) + +def _parse_cache_control(headers): + retval = {} + if headers.has_key('cache-control'): + parts = headers['cache-control'].split(',') + parts_with_args = [tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=")] + parts_wo_args = [(name.strip().lower(), 1) for name in parts if -1 == name.find("=")] + retval = dict(parts_with_args + parts_wo_args) + return retval + +# Whether to use a strict mode to parse WWW-Authenticate headers +# Might lead to bad results in case of ill-formed header value, +# so disabled by default, falling back to relaxed parsing. +# Set to true to turn on, usefull for testing servers. +USE_WWW_AUTH_STRICT_PARSING = 0 + +# In regex below: +# [^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+ matches a "token" as defined by HTTP +# "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space +# Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both: +# \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"? +WWW_AUTH_STRICT = re.compile(r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$") +WWW_AUTH_RELAXED = re.compile(r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? current_age: + retval = "FRESH" + return retval + +def _decompressContent(response, new_content): + content = new_content + try: + encoding = response.get('content-encoding', None) + if encoding in ['gzip', 'deflate']: + if encoding == 'gzip': + content = gzip.GzipFile(fileobj=StringIO.StringIO(new_content)).read() + if encoding == 'deflate': + content = zlib.decompress(content) + response['content-length'] = str(len(content)) + # Record the historical presence of the encoding in a way the won't interfere. + response['-content-encoding'] = response['content-encoding'] + del response['content-encoding'] + except IOError: + content = "" + raise FailedToDecompressContent(_("Content purported to be compressed with %s but failed to decompress.") % response.get('content-encoding'), response, content) + return content + +def _updateCache(request_headers, response_headers, content, cache, cachekey): + if cachekey: + cc = _parse_cache_control(request_headers) + cc_response = _parse_cache_control(response_headers) + if cc.has_key('no-store') or cc_response.has_key('no-store'): + cache.delete(cachekey) + else: + info = email.Message.Message() + for key, value in response_headers.iteritems(): + if key not in ['status','content-encoding','transfer-encoding']: + info[key] = value + + # Add annotations to the cache to indicate what headers + # are variant for this request. + vary = response_headers.get('vary', None) + if vary: + vary_headers = vary.lower().replace(' ', '').split(',') + for header in vary_headers: + key = '-varied-%s' % header + try: + info[key] = request_headers[header] + except KeyError: + pass + + status = response_headers.status + if status == 304: + status = 200 + + status_header = 'status: %d\r\n' % status + + header_str = info.as_string() + + header_str = re.sub("\r(?!\n)|(? 0: + service = "cl" + # No point in guessing Base or Spreadsheet + #elif request_uri.find("spreadsheets") > 0: + # service = "wise" + + auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers['user-agent']) + resp, content = self.http.request("https://www.google.com/accounts/ClientLogin", method="POST", body=urlencode(auth), headers={'Content-Type': 'application/x-www-form-urlencoded'}) + lines = content.split('\n') + d = dict([tuple(line.split("=", 1)) for line in lines if line]) + if resp.status == 403: + self.Auth = "" + else: + self.Auth = d['Auth'] + + def request(self, method, request_uri, headers, content): + """Modify the request headers to add the appropriate + Authorization header.""" + headers['authorization'] = 'GoogleLogin Auth=' + self.Auth + + +AUTH_SCHEME_CLASSES = { + "basic": BasicAuthentication, + "wsse": WsseAuthentication, + "digest": DigestAuthentication, + "hmacdigest": HmacDigestAuthentication, + "googlelogin": GoogleLoginAuthentication +} + +AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"] + +class FileCache(object): + """Uses a local directory as a store for cached files. + Not really safe to use if multiple threads or processes are going to + be running on the same cache. + """ + def __init__(self, cache, safe=safename): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior + self.cache = cache + self.safe = safe + if not os.path.exists(cache): + os.makedirs(self.cache) + + def get(self, key): + retval = None + cacheFullPath = os.path.join(self.cache, self.safe(key)) + try: + f = file(cacheFullPath, "rb") + retval = f.read() + f.close() + except IOError: + pass + return retval + + def set(self, key, value): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + f = file(cacheFullPath, "wb") + f.write(value) + f.close() + + def delete(self, key): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + if os.path.exists(cacheFullPath): + os.remove(cacheFullPath) + +class Credentials(object): + def __init__(self): + self.credentials = [] + + def add(self, name, password, domain=""): + self.credentials.append((domain.lower(), name, password)) + + def clear(self): + self.credentials = [] + + def iter(self, domain): + for (cdomain, name, password) in self.credentials: + if cdomain == "" or domain == cdomain: + yield (name, password) + +class KeyCerts(Credentials): + """Identical to Credentials except that + name/password are mapped to key/cert.""" + pass + +class AllHosts(object): + pass + +class ProxyInfo(object): + """Collect information required to use a proxy.""" + bypass_hosts = () + + def __init__(self, proxy_type, proxy_host, proxy_port, + proxy_rdns=True, proxy_user=None, proxy_pass=None): + """ + Args: + proxy_type: The type of proxy server. This must be set to one of + socks.PROXY_TYPE_XXX constants. For example: + + p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, + proxy_host='localhost', proxy_port=8000) + + proxy_host: The hostname or IP address of the proxy server. + + proxy_port: The port that the proxy server is running on. + + proxy_rdns: If True (default), DNS queries will not be performed + locally, and instead, handed to the proxy to resolve. This is useful + if the network does not allow resolution of non-local names. In + httplib2 0.9 and earlier, this defaulted to False. + + proxy_user: The username used to authenticate with the proxy server. + + proxy_pass: The password used to authenticate with the proxy server. + """ + self.proxy_type = proxy_type + self.proxy_host = proxy_host + self.proxy_port = proxy_port + self.proxy_rdns = proxy_rdns + self.proxy_user = proxy_user + self.proxy_pass = proxy_pass + + def astuple(self): + return (self.proxy_type, self.proxy_host, self.proxy_port, + self.proxy_rdns, self.proxy_user, self.proxy_pass) + + def isgood(self): + return (self.proxy_host != None) and (self.proxy_port != None) + + def applies_to(self, hostname): + return not self.bypass_host(hostname) + + def bypass_host(self, hostname): + """Has this host been excluded from the proxy config""" + if self.bypass_hosts is AllHosts: + return True + + bypass = False + for domain in self.bypass_hosts: + if hostname.endswith(domain): + bypass = True + + return bypass + + +def proxy_info_from_environment(method='http'): + """ + Read proxy info from the environment variables. + """ + if method not in ['http', 'https']: + return + + env_var = method + '_proxy' + url = os.environ.get(env_var, os.environ.get(env_var.upper())) + if not url: + return + pi = proxy_info_from_url(url, method) + + no_proxy = os.environ.get('no_proxy', os.environ.get('NO_PROXY', '')) + bypass_hosts = [] + if no_proxy: + bypass_hosts = no_proxy.split(',') + # special case, no_proxy=* means all hosts bypassed + if no_proxy == '*': + bypass_hosts = AllHosts + + pi.bypass_hosts = bypass_hosts + return pi + +def proxy_info_from_url(url, method='http'): + """ + Construct a ProxyInfo from a URL (such as http_proxy env var) + """ + url = urlparse.urlparse(url) + username = None + password = None + port = None + if '@' in url[1]: + ident, host_port = url[1].split('@', 1) + if ':' in ident: + username, password = ident.split(':', 1) + else: + password = ident + else: + host_port = url[1] + if ':' in host_port: + host, port = host_port.split(':', 1) + else: + host = host_port + + if port: + port = int(port) + else: + port = dict(https=443, http=80)[method] + + proxy_type = 3 # socks.PROXY_TYPE_HTTP + return ProxyInfo( + proxy_type = proxy_type, + proxy_host = host, + proxy_port = port, + proxy_user = username or None, + proxy_pass = password or None, + ) + + +class HTTPConnectionWithTimeout(httplib.HTTPConnection): + """ + HTTPConnection subclass that supports timeouts + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + + def __init__(self, host, port=None, strict=None, timeout=None, proxy_info=None): + httplib.HTTPConnection.__init__(self, host, port, strict) + self.timeout = timeout + self.proxy_info = proxy_info + + def connect(self): + """Connect to the host and port specified in __init__.""" + # Mostly verbatim from httplib.py. + if self.proxy_info and socks is None: + raise ProxiesUnavailableError( + 'Proxy support missing but proxy use was requested!') + msg = "getaddrinfo returns an empty list" + if self.proxy_info and self.proxy_info.isgood(): + use_proxy = True + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass = self.proxy_info.astuple() + + host = proxy_host + port = proxy_port + else: + use_proxy = False + + host = self.host + port = self.port + + for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + try: + if use_proxy: + self.sock = socks.socksocket(af, socktype, proto) + self.sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass) + else: + self.sock = socket.socket(af, socktype, proto) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + # Different from httplib: support timeouts. + if has_timeout(self.timeout): + self.sock.settimeout(self.timeout) + # End of difference from httplib. + if self.debuglevel > 0: + print "connect: (%s, %s) ************" % (self.host, self.port) + if use_proxy: + print "proxy: %s ************" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + + self.sock.connect((self.host, self.port) + sa[2:]) + except socket.error, msg: + if self.debuglevel > 0: + print "connect fail: (%s, %s)" % (self.host, self.port) + if use_proxy: + print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error, msg + +class HTTPSConnectionWithTimeout(httplib.HTTPSConnection): + """ + This class allows communication via SSL. + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + def __init__(self, host, port=None, key_file=None, cert_file=None, + strict=None, timeout=None, proxy_info=None, + ca_certs=None, disable_ssl_certificate_validation=False): + httplib.HTTPSConnection.__init__(self, host, port=port, + key_file=key_file, + cert_file=cert_file, strict=strict) + self.timeout = timeout + self.proxy_info = proxy_info + if ca_certs is None: + ca_certs = CA_CERTS + self.ca_certs = ca_certs + self.disable_ssl_certificate_validation = \ + disable_ssl_certificate_validation + + # The following two methods were adapted from https_wrapper.py, released + # with the Google Appengine SDK at + # http://googleappengine.googlecode.com/svn-history/r136/trunk/python/google/appengine/tools/https_wrapper.py + # under the following license: + # + # Copyright 2007 Google Inc. + # + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. + # You may obtain a copy of the License at + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. + # + + def _GetValidHostsForCert(self, cert): + """Returns a list of valid host globs for an SSL certificate. + + Args: + cert: A dictionary representing an SSL certificate. + Returns: + list: A list of valid host globs. + """ + if 'subjectAltName' in cert: + return [x[1] for x in cert['subjectAltName'] + if x[0].lower() == 'dns'] + else: + return [x[0][1] for x in cert['subject'] + if x[0][0].lower() == 'commonname'] + + def _ValidateCertificateHostname(self, cert, hostname): + """Validates that a given hostname is valid for an SSL certificate. + + Args: + cert: A dictionary representing an SSL certificate. + hostname: The hostname to test. + Returns: + bool: Whether or not the hostname is valid for this certificate. + """ + hosts = self._GetValidHostsForCert(cert) + for host in hosts: + host_re = host.replace('.', '\.').replace('*', '[^.]*') + if re.search('^%s$' % (host_re,), hostname, re.I): + return True + return False + + def connect(self): + "Connect to a host on a given (SSL) port." + + msg = "getaddrinfo returns an empty list" + if self.proxy_info and self.proxy_info.isgood(): + use_proxy = True + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass = self.proxy_info.astuple() + + host = proxy_host + port = proxy_port + else: + use_proxy = False + + host = self.host + port = self.port + + address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM) + for family, socktype, proto, canonname, sockaddr in address_info: + try: + if use_proxy: + sock = socks.socksocket(family, socktype, proto) + + sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass) + else: + sock = socket.socket(family, socktype, proto) + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + + if has_timeout(self.timeout): + sock.settimeout(self.timeout) + sock.connect((self.host, self.port)) + self.sock =_ssl_wrap_socket( + sock, self.key_file, self.cert_file, + self.disable_ssl_certificate_validation, self.ca_certs) + if self.debuglevel > 0: + print "connect: (%s, %s)" % (self.host, self.port) + if use_proxy: + print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + if not self.disable_ssl_certificate_validation: + cert = self.sock.getpeercert() + hostname = self.host.split(':', 0)[0] + if not self._ValidateCertificateHostname(cert, hostname): + raise CertificateHostnameMismatch( + 'Server presented certificate that does not match ' + 'host %s: %s' % (hostname, cert), hostname, cert) + except ssl_SSLError, e: + if sock: + sock.close() + if self.sock: + self.sock.close() + self.sock = None + # Unfortunately the ssl module doesn't seem to provide any way + # to get at more detailed error information, in particular + # whether the error is due to certificate validation or + # something else (such as SSL protocol mismatch). + if e.errno == ssl.SSL_ERROR_SSL: + raise SSLHandshakeError(e) + else: + raise + except (socket.timeout, socket.gaierror): + raise + except socket.error, msg: + if self.debuglevel > 0: + print "connect fail: (%s, %s)" % (self.host, self.port) + if use_proxy: + print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error, msg + +SCHEME_TO_CONNECTION = { + 'http': HTTPConnectionWithTimeout, + 'https': HTTPSConnectionWithTimeout +} + +# Use a different connection object for Google App Engine +try: + try: + from google.appengine.api import apiproxy_stub_map + if apiproxy_stub_map.apiproxy.GetStub('urlfetch') is None: + raise ImportError # Bail out; we're not actually running on App Engine. + from google.appengine.api.urlfetch import fetch + from google.appengine.api.urlfetch import InvalidURLError + except (ImportError, AttributeError): + from google3.apphosting.api import apiproxy_stub_map + if apiproxy_stub_map.apiproxy.GetStub('urlfetch') is None: + raise ImportError # Bail out; we're not actually running on App Engine. + from google3.apphosting.api.urlfetch import fetch + from google3.apphosting.api.urlfetch import InvalidURLError + + def _new_fixed_fetch(validate_certificate): + def fixed_fetch(url, payload=None, method="GET", headers={}, + allow_truncated=False, follow_redirects=True, + deadline=None): + if deadline is None: + deadline = socket.getdefaulttimeout() or 5 + return fetch(url, payload=payload, method=method, headers=headers, + allow_truncated=allow_truncated, + follow_redirects=follow_redirects, deadline=deadline, + validate_certificate=validate_certificate) + return fixed_fetch + + class AppEngineHttpConnection(httplib.HTTPConnection): + """Use httplib on App Engine, but compensate for its weirdness. + + The parameters key_file, cert_file, proxy_info, ca_certs, and + disable_ssl_certificate_validation are all dropped on the ground. + """ + def __init__(self, host, port=None, key_file=None, cert_file=None, + strict=None, timeout=None, proxy_info=None, ca_certs=None, + disable_ssl_certificate_validation=False): + httplib.HTTPConnection.__init__(self, host, port=port, + strict=strict, timeout=timeout) + + class AppEngineHttpsConnection(httplib.HTTPSConnection): + """Same as AppEngineHttpConnection, but for HTTPS URIs.""" + def __init__(self, host, port=None, key_file=None, cert_file=None, + strict=None, timeout=None, proxy_info=None, ca_certs=None, + disable_ssl_certificate_validation=False): + httplib.HTTPSConnection.__init__(self, host, port=port, + key_file=key_file, + cert_file=cert_file, strict=strict, + timeout=timeout) + self._fetch = _new_fixed_fetch( + not disable_ssl_certificate_validation) + + # Update the connection classes to use the Googel App Engine specific ones. + SCHEME_TO_CONNECTION = { + 'http': AppEngineHttpConnection, + 'https': AppEngineHttpsConnection + } +except (ImportError, AttributeError): + pass + + +class Http(object): + """An HTTP client that handles: + + - all methods + - caching + - ETags + - compression, + - HTTPS + - Basic + - Digest + - WSSE + + and more. + """ + def __init__(self, cache=None, timeout=None, + proxy_info=proxy_info_from_environment, + ca_certs=None, disable_ssl_certificate_validation=False): + """If 'cache' is a string then it is used as a directory name for + a disk cache. Otherwise it must be an object that supports the + same interface as FileCache. + + All timeouts are in seconds. If None is passed for timeout + then Python's default timeout for sockets will be used. See + for example the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + + `proxy_info` may be: + - a callable that takes the http scheme ('http' or 'https') and + returns a ProxyInfo instance per request. By default, uses + proxy_nfo_from_environment. + - a ProxyInfo instance (static proxy config). + - None (proxy disabled). + + ca_certs is the path of a file containing root CA certificates for SSL + server certificate validation. By default, a CA cert file bundled with + httplib2 is used. + + If disable_ssl_certificate_validation is true, SSL cert validation will + not be performed. + """ + self.proxy_info = proxy_info + self.ca_certs = ca_certs + self.disable_ssl_certificate_validation = \ + disable_ssl_certificate_validation + + # Map domain name to an httplib connection + self.connections = {} + # The location of the cache, for now a directory + # where cached responses are held. + if cache and isinstance(cache, basestring): + self.cache = FileCache(cache) + else: + self.cache = cache + + # Name/password + self.credentials = Credentials() + + # Key/cert + self.certificates = KeyCerts() + + # authorization objects + self.authorizations = [] + + # If set to False then no redirects are followed, even safe ones. + self.follow_redirects = True + + # Which HTTP methods do we apply optimistic concurrency to, i.e. + # which methods get an "if-match:" etag header added to them. + self.optimistic_concurrency_methods = ["PUT", "PATCH"] + + # If 'follow_redirects' is True, and this is set to True then + # all redirecs are followed, including unsafe ones. + self.follow_all_redirects = False + + self.ignore_etag = False + + self.force_exception_to_status_code = False + + self.timeout = timeout + + # Keep Authorization: headers on a redirect. + self.forward_authorization_headers = False + + def __getstate__(self): + state_dict = copy.copy(self.__dict__) + # In case request is augmented by some foreign object such as + # credentials which handle auth + if 'request' in state_dict: + del state_dict['request'] + if 'connections' in state_dict: + del state_dict['connections'] + return state_dict + + def __setstate__(self, state): + self.__dict__.update(state) + self.connections = {} + + def _auth_from_challenge(self, host, request_uri, headers, response, content): + """A generator that creates Authorization objects + that can be applied to requests. + """ + challenges = _parse_www_authenticate(response, 'www-authenticate') + for cred in self.credentials.iter(host): + for scheme in AUTH_SCHEME_ORDER: + if challenges.has_key(scheme): + yield AUTH_SCHEME_CLASSES[scheme](cred, host, request_uri, headers, response, content, self) + + def add_credentials(self, name, password, domain=""): + """Add a name and password that will be used + any time a request requires authentication.""" + self.credentials.add(name, password, domain) + + def add_certificate(self, key, cert, domain): + """Add a key and cert that will be used + any time a request requires authentication.""" + self.certificates.add(key, cert, domain) + + def clear_credentials(self): + """Remove all the names and passwords + that are used for authentication""" + self.credentials.clear() + self.authorizations = [] + + def _conn_request(self, conn, request_uri, method, body, headers): + i = 0 + seen_bad_status_line = False + while i < RETRIES: + i += 1 + try: + if hasattr(conn, 'sock') and conn.sock is None: + conn.connect() + conn.request(method, request_uri, body, headers) + except socket.timeout: + raise + except socket.gaierror: + conn.close() + raise ServerNotFoundError("Unable to find the server at %s" % conn.host) + except ssl_SSLError: + conn.close() + raise + except socket.error, e: + err = 0 + if hasattr(e, 'args'): + err = getattr(e, 'args')[0] + else: + err = e.errno + if err in (errno.ENETUNREACH, errno.EADDRNOTAVAIL) and i < RETRIES: + continue # retry on potentially transient socket errors + raise + except httplib.HTTPException: + # Just because the server closed the connection doesn't apparently mean + # that the server didn't send a response. + if hasattr(conn, 'sock') and conn.sock is None: + if i < RETRIES-1: + conn.close() + conn.connect() + continue + else: + conn.close() + raise + if i < RETRIES-1: + conn.close() + conn.connect() + continue + try: + response = conn.getresponse() + except httplib.BadStatusLine: + # If we get a BadStatusLine on the first try then that means + # the connection just went stale, so retry regardless of the + # number of RETRIES set. + if not seen_bad_status_line and i == 1: + i = 0 + seen_bad_status_line = True + conn.close() + conn.connect() + continue + else: + conn.close() + raise + except (socket.error, httplib.HTTPException): + if i < RETRIES-1: + conn.close() + conn.connect() + continue + else: + conn.close() + raise + else: + content = "" + if method == "HEAD": + conn.close() + else: + content = response.read() + response = Response(response) + if method != "HEAD": + content = _decompressContent(response, content) + break + return (response, content) + + + def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey): + """Do the actual request using the connection object + and also follow one level of redirects if necessary""" + + auths = [(auth.depth(request_uri), auth) for auth in self.authorizations if auth.inscope(host, request_uri)] + auth = auths and sorted(auths)[0][1] or None + if auth: + auth.request(method, request_uri, headers, body) + + (response, content) = self._conn_request(conn, request_uri, method, body, headers) + + if auth: + if auth.response(response, body): + auth.request(method, request_uri, headers, body) + (response, content) = self._conn_request(conn, request_uri, method, body, headers ) + response._stale_digest = 1 + + if response.status == 401: + for authorization in self._auth_from_challenge(host, request_uri, headers, response, content): + authorization.request(method, request_uri, headers, body) + (response, content) = self._conn_request(conn, request_uri, method, body, headers, ) + if response.status != 401: + self.authorizations.append(authorization) + authorization.response(response, body) + break + + if (self.follow_all_redirects or (method in ["GET", "HEAD"]) or response.status == 303): + if self.follow_redirects and response.status in [300, 301, 302, 303, 307]: + # Pick out the location header and basically start from the beginning + # remembering first to strip the ETag header and decrement our 'depth' + if redirections: + if not response.has_key('location') and response.status != 300: + raise RedirectMissingLocation( _("Redirected but the response is missing a Location: header."), response, content) + # Fix-up relative redirects (which violate an RFC 2616 MUST) + if response.has_key('location'): + location = response['location'] + (scheme, authority, path, query, fragment) = parse_uri(location) + if authority == None: + response['location'] = urlparse.urljoin(absolute_uri, location) + if response.status == 301 and method in ["GET", "HEAD"]: + response['-x-permanent-redirect-url'] = response['location'] + if not response.has_key('content-location'): + response['content-location'] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + if headers.has_key('if-none-match'): + del headers['if-none-match'] + if headers.has_key('if-modified-since'): + del headers['if-modified-since'] + if 'authorization' in headers and not self.forward_authorization_headers: + del headers['authorization'] + if response.has_key('location'): + location = response['location'] + old_response = copy.deepcopy(response) + if not old_response.has_key('content-location'): + old_response['content-location'] = absolute_uri + redirect_method = method + if response.status in [302, 303]: + redirect_method = "GET" + body = None + (response, content) = self.request( + location, method=redirect_method, + body=body, headers=headers, + redirections=redirections - 1) + response.previous = old_response + else: + raise RedirectLimit("Redirected more times than rediection_limit allows.", response, content) + elif response.status in [200, 203] and method in ["GET", "HEAD"]: + # Don't cache 206's since we aren't going to handle byte range requests + if not response.has_key('content-location'): + response['content-location'] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + + return (response, content) + + def _normalize_headers(self, headers): + return _normalize_headers(headers) + +# Need to catch and rebrand some exceptions +# Then need to optionally turn all exceptions into status codes +# including all socket.* and httplib.* exceptions. + + + def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None): + """ Performs a single HTTP request. + + The 'uri' is the URI of the HTTP resource and can begin with either + 'http' or 'https'. The value of 'uri' must be an absolute URI. + + The 'method' is the HTTP method to perform, such as GET, POST, DELETE, + etc. There is no restriction on the methods allowed. + + The 'body' is the entity body to be sent with the request. It is a + string object. + + Any extra headers that are to be sent with the request should be + provided in the 'headers' dictionary. + + The maximum number of redirect to follow before raising an + exception is 'redirections. The default is 5. + + The return value is a tuple of (response, content), the first + being and instance of the 'Response' class, the second being + a string that contains the response entity body. + """ + try: + if headers is None: + headers = {} + else: + headers = self._normalize_headers(headers) + + if not headers.has_key('user-agent'): + headers['user-agent'] = "Python-httplib2/%s (gzip)" % __version__ + + uri = iri2uri(uri) + + (scheme, authority, request_uri, defrag_uri) = urlnorm(uri) + domain_port = authority.split(":")[0:2] + if len(domain_port) == 2 and domain_port[1] == '443' and scheme == 'http': + scheme = 'https' + authority = domain_port[0] + + proxy_info = self._get_proxy_info(scheme, authority) + + conn_key = scheme+":"+authority + if conn_key in self.connections: + conn = self.connections[conn_key] + else: + if not connection_type: + connection_type = SCHEME_TO_CONNECTION[scheme] + certs = list(self.certificates.iter(authority)) + if scheme == 'https': + if certs: + conn = self.connections[conn_key] = connection_type( + authority, key_file=certs[0][0], + cert_file=certs[0][1], timeout=self.timeout, + proxy_info=proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation= + self.disable_ssl_certificate_validation) + else: + conn = self.connections[conn_key] = connection_type( + authority, timeout=self.timeout, + proxy_info=proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation= + self.disable_ssl_certificate_validation) + else: + conn = self.connections[conn_key] = connection_type( + authority, timeout=self.timeout, + proxy_info=proxy_info) + conn.set_debuglevel(debuglevel) + + if 'range' not in headers and 'accept-encoding' not in headers: + headers['accept-encoding'] = 'gzip, deflate' + + info = email.Message.Message() + cached_value = None + if self.cache: + cachekey = defrag_uri.encode('utf-8') + cached_value = self.cache.get(cachekey) + if cached_value: + # info = email.message_from_string(cached_value) + # + # Need to replace the line above with the kludge below + # to fix the non-existent bug not fixed in this + # bug report: http://mail.python.org/pipermail/python-bugs-list/2005-September/030289.html + try: + info, content = cached_value.split('\r\n\r\n', 1) + feedparser = email.FeedParser.FeedParser() + feedparser.feed(info) + info = feedparser.close() + feedparser._parse = None + except (IndexError, ValueError): + self.cache.delete(cachekey) + cachekey = None + cached_value = None + else: + cachekey = None + + if method in self.optimistic_concurrency_methods and self.cache and info.has_key('etag') and not self.ignore_etag and 'if-match' not in headers: + # http://www.w3.org/1999/04/Editing/ + headers['if-match'] = info['etag'] + + if method not in ["GET", "HEAD"] and self.cache and cachekey: + # RFC 2616 Section 13.10 + self.cache.delete(cachekey) + + # Check the vary header in the cache to see if this request + # matches what varies in the cache. + if method in ['GET', 'HEAD'] and 'vary' in info: + vary = info['vary'] + vary_headers = vary.lower().replace(' ', '').split(',') + for header in vary_headers: + key = '-varied-%s' % header + value = info[key] + if headers.get(header, None) != value: + cached_value = None + break + + if cached_value and method in ["GET", "HEAD"] and self.cache and 'range' not in headers: + if info.has_key('-x-permanent-redirect-url'): + # Should cached permanent redirects be counted in our redirection count? For now, yes. + if redirections <= 0: + raise RedirectLimit("Redirected more times than rediection_limit allows.", {}, "") + (response, new_content) = self.request( + info['-x-permanent-redirect-url'], method='GET', + headers=headers, redirections=redirections - 1) + response.previous = Response(info) + response.previous.fromcache = True + else: + # Determine our course of action: + # Is the cached entry fresh or stale? + # Has the client requested a non-cached response? + # + # There seems to be three possible answers: + # 1. [FRESH] Return the cache entry w/o doing a GET + # 2. [STALE] Do the GET (but add in cache validators if available) + # 3. [TRANSPARENT] Do a GET w/o any cache validators (Cache-Control: no-cache) on the request + entry_disposition = _entry_disposition(info, headers) + + if entry_disposition == "FRESH": + if not cached_value: + info['status'] = '504' + content = "" + response = Response(info) + if cached_value: + response.fromcache = True + return (response, content) + + if entry_disposition == "STALE": + if info.has_key('etag') and not self.ignore_etag and not 'if-none-match' in headers: + headers['if-none-match'] = info['etag'] + if info.has_key('last-modified') and not 'last-modified' in headers: + headers['if-modified-since'] = info['last-modified'] + elif entry_disposition == "TRANSPARENT": + pass + + (response, new_content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) + + if response.status == 304 and method == "GET": + # Rewrite the cache entry with the new end-to-end headers + # Take all headers that are in response + # and overwrite their values in info. + # unless they are hop-by-hop, or are listed in the connection header. + + for key in _get_end2end_headers(response): + info[key] = response[key] + merged_response = Response(info) + if hasattr(response, "_stale_digest"): + merged_response._stale_digest = response._stale_digest + _updateCache(headers, merged_response, content, self.cache, cachekey) + response = merged_response + response.status = 200 + response.fromcache = True + + elif response.status == 200: + content = new_content + else: + self.cache.delete(cachekey) + content = new_content + else: + cc = _parse_cache_control(headers) + if cc.has_key('only-if-cached'): + info['status'] = '504' + response = Response(info) + content = "" + else: + (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) + except Exception, e: + if self.force_exception_to_status_code: + if isinstance(e, HttpLib2ErrorWithResponse): + response = e.response + content = e.content + response.status = 500 + response.reason = str(e) + elif isinstance(e, socket.timeout): + content = "Request Timeout" + response = Response({ + "content-type": "text/plain", + "status": "408", + "content-length": len(content) + }) + response.reason = "Request Timeout" + else: + content = str(e) + response = Response({ + "content-type": "text/plain", + "status": "400", + "content-length": len(content) + }) + response.reason = "Bad Request" + else: + raise + + + return (response, content) + + def _get_proxy_info(self, scheme, authority): + """Return a ProxyInfo instance (or None) based on the scheme + and authority. + """ + hostname, port = urllib.splitport(authority) + proxy_info = self.proxy_info + if callable(proxy_info): + proxy_info = proxy_info(scheme) + + if (hasattr(proxy_info, 'applies_to') + and not proxy_info.applies_to(hostname)): + proxy_info = None + return proxy_info + + +class Response(dict): + """An object more like email.Message than httplib.HTTPResponse.""" + + """Is this response from our local cache""" + fromcache = False + + """HTTP protocol version used by server. 10 for HTTP/1.0, 11 for HTTP/1.1. """ + version = 11 + + "Status code returned by server. " + status = 200 + + """Reason phrase returned by server.""" + reason = "Ok" + + previous = None + + def __init__(self, info): + # info is either an email.Message or + # an httplib.HTTPResponse object. + if isinstance(info, httplib.HTTPResponse): + for key, value in info.getheaders(): + self[key.lower()] = value + self.status = info.status + self['status'] = str(self.status) + self.reason = info.reason + self.version = info.version + elif isinstance(info, email.Message.Message): + for key, value in info.items(): + self[key.lower()] = value + self.status = int(self['status']) + else: + for key, value in info.iteritems(): + self[key.lower()] = value + self.status = int(self.get('status', self.status)) + self.reason = self.get('reason', self.reason) + + + def __getattr__(self, name): + if name == 'dict': + return self + else: + raise AttributeError, name diff --git a/package/bin/da_ess_contentupdate/httplib2/cacerts.txt b/package/bin/da_ess_contentupdate/httplib2/cacerts.txt new file mode 100755 index 0000000000..70990f1f82 --- /dev/null +++ b/package/bin/da_ess_contentupdate/httplib2/cacerts.txt @@ -0,0 +1,2183 @@ +# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Label: "GTE CyberTrust Global Root" +# Serial: 421 +# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db +# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 +# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD +VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv +bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv +b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH +iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS +r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 +04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r +GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 +3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P +lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Server CA" +# Serial: 1 +# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d +# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c +# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm +MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx +MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 +dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl +cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 +DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 +yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX +L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj +EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG +7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e +QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ +qdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Premium Server CA" +# Serial: 1 +# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a +# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a +# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy +dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t +MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB +MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG +A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl +cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv +bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE +VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ +ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR +uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI +hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM +pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +# Issuer: O=Equifax OU=Equifax Secure Certificate Authority +# Subject: O=Equifax OU=Equifax Secure Certificate Authority +# Label: "Equifax Secure CA" +# Serial: 903804111 +# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 +# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a +# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy +dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 +MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx +dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f +BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A +cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ +MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm +aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw +ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj +IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y +7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh +1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 149843929435818692848040365716851702463 +# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 +# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 +# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do +lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc +AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Label: "Verisign Class 3 Public Primary Certification Authority - G2" +# Serial: 167285380242319648451154478808036881606 +# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 +# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f +# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Label: "GlobalSign Root CA - R2" +# Serial: 4835703278459682885658125 +# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 +# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe +# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 +MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL +v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 +eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq +tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd +C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa +zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB +mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH +V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n +bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG +3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs +J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO +291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS +ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd +AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Label: "ValiCert Class 1 VA" +# Serial: 1 +# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb +# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e +# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy +NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y +LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ +TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y +TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 +LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW +I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw +nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Label: "ValiCert Class 2 VA" +# Serial: 1 +# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 +# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 +# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Label: "RSA Root Certificate 1" +# Serial: 1 +# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 +# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb +# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy +NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD +cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs +2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY +JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE +Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ +n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A +PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 3 Public Primary Certification Authority - G3" +# Serial: 206684696279472310254277870180966723415 +# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 +# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 +# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 4 Public Primary Certification Authority - G3" +# Serial: 314531972711909413743075096039378935511 +# MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df +# SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d +# SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 +GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ ++mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd +U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm +NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY +ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ +ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 +CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq +g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c +2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ +bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Secure Server CA" +# Serial: 927650371 +# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee +# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 +# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946059622 +# MD5 Fingerprint: ba:21:ea:20:d6:dd:db:8f:c1:57:8b:40:ad:a1:fc:fc +# SHA1 Fingerprint: 80:1d:62:d0:7b:44:9d:5c:5c:03:5c:98:ea:61:fa:44:3c:2a:58:fe +# SHA256 Fingerprint: d1:c3:39:ea:27:84:eb:87:0f:93:4f:c5:63:4e:4a:a9:ad:55:05:01:64:01:f2:64:65:d3:7a:57:46:63:35:9f +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy +MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA +vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G +CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA +WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ +h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 +f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN +B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy +vUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure Global eBusiness CA" +# Serial: 1 +# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc +# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 +# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure eBusiness CA 1" +# Serial: 4 +# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d +# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 +# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +# Issuer: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Subject: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Label: "Equifax Secure eBusiness CA 2" +# Serial: 930140085 +# MD5 Fingerprint: aa:bf:bf:64:97:da:98:1d:6f:c6:08:3a:95:70:33:ca +# SHA1 Fingerprint: 39:4f:f6:85:0b:06:be:52:e5:18:56:cc:10:e1:80:e8:82:b3:85:cc +# SHA256 Fingerprint: 2f:27:4e:48:ab:a4:ac:7b:76:59:33:10:17:75:50:6d:c3:0e:e3:8e:f6:ac:d5:c0:49:32:cf:e0:41:23:42:20 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj +dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 +NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD +VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G +vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ +BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl +IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw +NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq +y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy +0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 +E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Low-Value Services Root" +# Serial: 1 +# MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc +# SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d +# SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7 +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw +MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD +VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul +CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n +tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl +dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch +PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC ++Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O +BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk +ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X +7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz +43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl +pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA +WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Label: "AddTrust External Root" +# Serial: 1 +# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f +# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 +# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Public Services Root" +# Serial: 1 +# MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f +# SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5 +# SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx +MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB +ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV +BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV +6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX +GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP +dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH +1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF +62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW +BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL +MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU +cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv +b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 +IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ +iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh +4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm +XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Qualified Certificates Root" +# Serial: 1 +# MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb +# SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf +# SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16 +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 +MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK +EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh +BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq +xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G +87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i +2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U +WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 +0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G +A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr +pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL +ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm +aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv +hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm +hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 +P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y +iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no +xqE= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA O=GeoTrust Inc. +# Label: "GeoTrust Global CA" +# Serial: 144470 +# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 +# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 +# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Global CA 2" +# Serial: 1 +# MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9 +# SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d +# SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85 +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs +IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A +PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 +Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL +TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL +5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 +S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe +2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap +EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td +EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv +/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN +A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 +abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF +I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz +4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Label: "GeoTrust Universal CA" +# Serial: 1 +# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 +# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 +# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy +c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 +IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV +VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 +cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT +QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh +F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v +c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w +mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd +VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX +teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ +f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe +Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ +nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY +MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG +9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX +IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn +ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z +uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN +Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja +QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW +koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 +ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt +DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm +bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Universal CA 2" +# Serial: 1 +# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 +# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 +# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy +c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD +VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 +c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 +WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG +FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq +XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL +se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb +KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd +IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 +y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt +hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc +QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 +Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV +HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ +KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ +L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr +Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo +ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY +T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz +GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m +1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV +OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH +6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX +QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +# Issuer: CN=America Online Root Certification Authority 1 O=America Online Inc. +# Subject: CN=America Online Root Certification Authority 1 O=America Online Inc. +# Label: "America Online Root Certification Authority 1" +# Serial: 1 +# MD5 Fingerprint: 14:f1:08:ad:9d:fa:64:e2:89:e7:1c:cf:a8:ad:7d:5e +# SHA1 Fingerprint: 39:21:c1:15:c1:5d:0e:ca:5c:cb:5b:c4:f0:7d:21:d8:05:0b:56:6a +# SHA256 Fingerprint: 77:40:73:12:c6:3a:15:3d:5b:c0:0b:4e:51:75:9c:df:da:c2:37:dc:2a:33:b6:79:46:e9:8e:9b:fa:68:0a:e3 +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 +MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft +ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk +hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym +1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW +OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb +2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko +O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU +AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF +Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb +LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir +oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C +MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +# Issuer: CN=America Online Root Certification Authority 2 O=America Online Inc. +# Subject: CN=America Online Root Certification Authority 2 O=America Online Inc. +# Label: "America Online Root Certification Authority 2" +# Serial: 1 +# MD5 Fingerprint: d6:ed:3c:ca:e2:66:0f:af:10:43:0d:77:9b:04:09:bf +# SHA1 Fingerprint: 85:b5:ff:67:9b:0c:79:96:1f:c8:6e:44:22:00:46:13:db:17:92:84 +# SHA256 Fingerprint: 7d:3b:46:5a:60:14:e5:26:c0:af:fc:ee:21:27:d2:31:17:27:ad:81:1c:26:84:2d:00:6a:f3:73:06:cc:80:bd +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 +MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft +ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC +206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci +KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 +JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 +BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e +Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B +PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 +Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq +Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ +o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 ++L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj +FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn +xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 +LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc +obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 +CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe +IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA +DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F +AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX +Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb +AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl +Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw +RY8mkaKO/qk= +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=Secure Certificate Services O=Comodo CA Limited +# Subject: CN=Secure Certificate Services O=Comodo CA Limited +# Label: "Comodo Secure Services root" +# Serial: 1 +# MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd +# SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1 +# SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8 +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp +ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow +fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV +BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM +cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S +HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 +CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk +3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz +6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV +HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv +Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw +Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww +DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 +5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI +gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ +aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl +izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= +-----END CERTIFICATE----- + +# Issuer: CN=Trusted Certificate Services O=Comodo CA Limited +# Subject: CN=Trusted Certificate Services O=Comodo CA Limited +# Label: "Comodo Trusted Services root" +# Serial: 1 +# MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27 +# SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd +# SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 +aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla +MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD +VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW +fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt +TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL +fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW +1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 +kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G +A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v +ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo +dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu +Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ +HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS +jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ +xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn +dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +# Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN DATACorp SGC Root CA" +# Serial: 91374294542884689855167577680241077609 +# MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06 +# SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4 +# SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48 +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB +kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw +IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG +EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD +VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu +dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 +E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ +D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK +4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq +lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW +bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB +o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT +MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js +LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr +BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB +AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj +j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH +KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv +2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 +mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +# Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN USERFirst Hardware Root CA" +# Serial: 91374294542884704022267039221184531197 +# MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39 +# SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7 +# SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37 +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB +lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt +SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG +A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe +MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v +d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh +cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn +0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ +M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a +MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd +oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI +DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy +oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 +dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy +bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF +BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli +CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE +CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t +3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS +KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 1 +# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 +# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f +# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j +ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js +LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM +BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy +dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh +cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh +YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg +dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp +bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ +YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT +TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ +9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 +jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW +FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz +ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 +ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L +EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu +L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC +O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V +um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh +NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Label: "GeoTrust Primary Certification Authority" +# Serial: 32798226551256963324313806436981982369 +# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf +# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 +# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx +MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 +AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA +ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 +7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W +kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI +mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ +KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 +6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl +4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K +oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj +UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU +AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA" +# Serial: 69529181992039203566298953787712940909 +# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 +# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 +# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G5" +# Serial: 33037644167568058970164719475676101450 +# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c +# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 +# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Label: "Network Solutions Certificate Authority" +# Serial: 116697915152937497490437556386812487904 +# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e +# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce +# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi +MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV +UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO +ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz +c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP +OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl +mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF +BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 +qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw +gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu +bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp +dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 +6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ +h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH +/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN +pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA +# Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA +# Label: "TC TrustCenter Class 2 CA II" +# Serial: 941389028203453866782103406992443 +# MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23 +# SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e +# SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4 +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV +BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 +Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 +OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i +SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc +VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf +tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg +uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J +XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK +8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 +5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 +kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy +dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 +Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz +JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 +Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS +GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt +ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 +au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV +hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI +dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA +# Subject: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA +# Label: "TC TrustCenter Class 3 CA II" +# Serial: 1506523511417715638772220530020799 +# MD5 Fingerprint: 56:5f:aa:80:61:12:17:f6:67:21:e6:2b:6d:61:56:8e +# SHA1 Fingerprint: 80:25:ef:f4:6e:70:c8:d4:72:24:65:84:fe:40:3b:8a:8d:6a:db:f5 +# SHA256 Fingerprint: 8d:a0:84:fc:f9:9c:e0:77:22:f8:9b:32:05:93:98:06:fa:5c:b8:11:e1:c8:13:f6:a1:08:c7:d3:36:b3:40:8e +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV +BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 +Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1 +OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i +SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc +VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW +Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q +Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2 +1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq +ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1 +Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX +XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy +dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6 +Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz +JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 +Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN +irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8 +TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6 +g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB +95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj +S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A== +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA I" +# Serial: 601024842042189035295619584734726 +# MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c +# SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3 +# SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx +MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg +R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD +VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR +JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T +fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu +jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z +wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ +fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD +VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G +CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 +7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn +8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs +ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ +2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc +# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc +# Label: "Cybertrust Global Root" +# Serial: 4835703278459682877484360 +# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 +# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 +# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG +A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh +bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE +ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS +b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 +7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS +J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y +HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP +t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz +FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY +XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ +MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw +hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js +MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA +A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj +Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx +XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o +omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc +A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G3" +# Serial: 28809105769928564313984085209975885599 +# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 +# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd +# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ +BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 +BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz ++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm +hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn +5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W +JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL +DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC +huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB +AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB +zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN +kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH +SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G +spki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G2" +# Serial: 71758320672825410020661621085256472406 +# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f +# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 +# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp +IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi +BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw +MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig +YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v +dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ +BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 +papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K +DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 +KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox +XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G3" +# Serial: 127614157056681299805556476275995414779 +# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 +# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 +# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa +Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl +LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u +MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm +gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 +YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf +b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 +9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S +zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk +OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA +2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW +oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c +KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM +m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu +MdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G2" +# Serial: 80682863203381065782177908751794619243 +# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a +# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 +# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL +MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj +KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 +MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw +NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV +BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL +So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal +tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG +CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT +qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz +rD6ogRLQy7rQkgu2npaqBA+K +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Universal Root Certification Authority" +# Serial: 85209574734084581917763752644031726877 +# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 +# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 +# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G4" +# Serial: 63143484348153506665311985501458640051 +# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 +# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a +# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp +U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg +SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln +biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm +GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve +fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ +aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj +aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW +kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC +4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga +FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 80507572722862485515306429940691309246 +# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 +# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b +# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i +2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ +2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA III" +# Serial: 2010889993983507346460533407902964 +# MD5 Fingerprint: 9f:dd:db:ab:ff:8e:ff:45:21:5f:f0:6c:9d:8f:fe:2b +# SHA1 Fingerprint: 96:56:cd:7b:57:96:98:95:d0:e1:41:46:68:06:fb:b8:c6:11:06:87 +# SHA256 Fingerprint: 30:9b:4a:87:f6:ca:56:c9:31:69:aa:a9:9c:6d:98:88:54:d7:89:2b:d5:43:7e:2d:07:b2:9c:be:da:55:d3:5d +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAeFw0wOTA5MDkwODE1MjdaFw0yOTEy +MzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNUQyBUcnVzdENlbnRl +ciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0ExKDAm +BgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF +5+cvAqBNLaT6hdqbJYUtQCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYv +DIRlzg9uwliT6CwLOunBjvvya8o84pxOjuT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8v +zArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+EutCHnNaYlAJ/Uqwa1D7KRT +yGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1M4BDj5yj +dipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBh +MB8GA1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI +4jANBgkqhkiG9w0BAQUFAAOCAQEAg8ev6n9NCjw5sWi+e22JLumzCecYV42Fmhfz +dkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+KGwWaODIl0YgoGhnYIg5IFHY +aAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhKBgePxLcHsU0G +DeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPH +LQNjO9Po5KIqwoIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 45 +# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 +# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 +# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul +F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC +ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w +ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk +aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 +YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg +c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 +d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG +CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF +wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS +Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst +0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc +pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl +CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF +P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK +1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm +KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ +8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm +fyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Label: "StartCom Certification Authority G2" +# Serial: 59 +# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 +# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 +# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 +OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG +A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ +JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD +vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo +D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ +Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW +RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK +HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN +nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM +0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i +UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 +Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg +TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL +BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX +UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl +6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK +9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ +HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI +wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY +XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l +IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo +hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr +so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- diff --git a/package/bin/da_ess_contentupdate/httplib2/iri2uri.py b/package/bin/da_ess_contentupdate/httplib2/iri2uri.py new file mode 100755 index 0000000000..d88c91fdfb --- /dev/null +++ b/package/bin/da_ess_contentupdate/httplib2/iri2uri.py @@ -0,0 +1,110 @@ +""" +iri2uri + +Converts an IRI to a URI. + +""" +__author__ = "Joe Gregorio (joe@bitworking.org)" +__copyright__ = "Copyright 2006, Joe Gregorio" +__contributors__ = [] +__version__ = "1.0.0" +__license__ = "MIT" +__history__ = """ +""" + +import urlparse + + +# Convert an IRI to a URI following the rules in RFC 3987 +# +# The characters we need to enocde and escape are defined in the spec: +# +# iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD +# ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF +# / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD +# / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD +# / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD +# / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD +# / %xD0000-DFFFD / %xE1000-EFFFD + +escape_range = [ + (0xA0, 0xD7FF), + (0xE000, 0xF8FF), + (0xF900, 0xFDCF), + (0xFDF0, 0xFFEF), + (0x10000, 0x1FFFD), + (0x20000, 0x2FFFD), + (0x30000, 0x3FFFD), + (0x40000, 0x4FFFD), + (0x50000, 0x5FFFD), + (0x60000, 0x6FFFD), + (0x70000, 0x7FFFD), + (0x80000, 0x8FFFD), + (0x90000, 0x9FFFD), + (0xA0000, 0xAFFFD), + (0xB0000, 0xBFFFD), + (0xC0000, 0xCFFFD), + (0xD0000, 0xDFFFD), + (0xE1000, 0xEFFFD), + (0xF0000, 0xFFFFD), + (0x100000, 0x10FFFD), +] + +def encode(c): + retval = c + i = ord(c) + for low, high in escape_range: + if i < low: + break + if i >= low and i <= high: + retval = "".join(["%%%2X" % ord(o) for o in c.encode('utf-8')]) + break + return retval + + +def iri2uri(uri): + """Convert an IRI to a URI. Note that IRIs must be + passed in a unicode strings. That is, do not utf-8 encode + the IRI before passing it into the function.""" + if isinstance(uri ,unicode): + (scheme, authority, path, query, fragment) = urlparse.urlsplit(uri) + authority = authority.encode('idna') + # For each character in 'ucschar' or 'iprivate' + # 1. encode as utf-8 + # 2. then %-encode each octet of that utf-8 + uri = urlparse.urlunsplit((scheme, authority, path, query, fragment)) + uri = "".join([encode(c) for c in uri]) + return uri + +if __name__ == "__main__": + import unittest + + class Test(unittest.TestCase): + + def test_uris(self): + """Test that URIs are invariant under the transformation.""" + invariant = [ + u"ftp://ftp.is.co.za/rfc/rfc1808.txt", + u"http://www.ietf.org/rfc/rfc2396.txt", + u"ldap://[2001:db8::7]/c=GB?objectClass?one", + u"mailto:John.Doe@example.com", + u"news:comp.infosystems.www.servers.unix", + u"tel:+1-816-555-1212", + u"telnet://192.0.2.16:80/", + u"urn:oasis:names:specification:docbook:dtd:xml:4.1.2" ] + for uri in invariant: + self.assertEqual(uri, iri2uri(uri)) + + def test_iri(self): + """ Test that the right type of escaping is done for each part of the URI.""" + self.assertEqual("http://xn--o3h.com/%E2%98%84", iri2uri(u"http://\N{COMET}.com/\N{COMET}")) + self.assertEqual("http://bitworking.org/?fred=%E2%98%84", iri2uri(u"http://bitworking.org/?fred=\N{COMET}")) + self.assertEqual("http://bitworking.org/#%E2%98%84", iri2uri(u"http://bitworking.org/#\N{COMET}")) + self.assertEqual("#%E2%98%84", iri2uri(u"#\N{COMET}")) + self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")) + self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"))) + self.assertNotEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode('utf-8'))) + + unittest.main() + + diff --git a/package/bin/da_ess_contentupdate/httplib2/socks.py b/package/bin/da_ess_contentupdate/httplib2/socks.py new file mode 100755 index 0000000000..0991f4cf6e --- /dev/null +++ b/package/bin/da_ess_contentupdate/httplib2/socks.py @@ -0,0 +1,438 @@ +"""SocksiPy - Python SOCKS module. +Version 1.00 + +Copyright 2006 Dan-Haim. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. Neither the name of Dan Haim nor the names of his contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY DAN HAIM "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL DAN HAIM OR HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMANGE. + + +This module provides a standard socket-like interface for Python +for tunneling connections through SOCKS proxies. + +""" + +""" + +Minor modifications made by Christopher Gilbert (http://motomastyle.com/) +for use in PyLoris (http://pyloris.sourceforge.net/) + +Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/) +mainly to merge bug fixes found in Sourceforge + +""" + +import base64 +import socket +import struct +import sys + +if getattr(socket, 'socket', None) is None: + raise ImportError('socket.socket missing, proxy support unusable') + +PROXY_TYPE_SOCKS4 = 1 +PROXY_TYPE_SOCKS5 = 2 +PROXY_TYPE_HTTP = 3 +PROXY_TYPE_HTTP_NO_TUNNEL = 4 + +_defaultproxy = None +_orgsocket = socket.socket + +class ProxyError(Exception): pass +class GeneralProxyError(ProxyError): pass +class Socks5AuthError(ProxyError): pass +class Socks5Error(ProxyError): pass +class Socks4Error(ProxyError): pass +class HTTPError(ProxyError): pass + +_generalerrors = ("success", + "invalid data", + "not connected", + "not available", + "bad proxy type", + "bad input") + +_socks5errors = ("succeeded", + "general SOCKS server failure", + "connection not allowed by ruleset", + "Network unreachable", + "Host unreachable", + "Connection refused", + "TTL expired", + "Command not supported", + "Address type not supported", + "Unknown error") + +_socks5autherrors = ("succeeded", + "authentication is required", + "all offered authentication methods were rejected", + "unknown username or invalid password", + "unknown error") + +_socks4errors = ("request granted", + "request rejected or failed", + "request rejected because SOCKS server cannot connect to identd on the client", + "request rejected because the client program and identd report different user-ids", + "unknown error") + +def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, username=None, password=None): + """setdefaultproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + Sets a default proxy which all further socksocket objects will use, + unless explicitly changed. + """ + global _defaultproxy + _defaultproxy = (proxytype, addr, port, rdns, username, password) + +def wrapmodule(module): + """wrapmodule(module) + Attempts to replace a module's socket library with a SOCKS socket. Must set + a default proxy using setdefaultproxy(...) first. + This will only work on modules that import socket directly into the namespace; + most of the Python Standard Library falls into this category. + """ + if _defaultproxy != None: + module.socket.socket = socksocket + else: + raise GeneralProxyError((4, "no proxy specified")) + +class socksocket(socket.socket): + """socksocket([family[, type[, proto]]]) -> socket object + Open a SOCKS enabled socket. The parameters are the same as + those of the standard socket init. In order for SOCKS to work, + you must specify family=AF_INET, type=SOCK_STREAM and proto=0. + """ + + def __init__(self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None): + _orgsocket.__init__(self, family, type, proto, _sock) + if _defaultproxy != None: + self.__proxy = _defaultproxy + else: + self.__proxy = (None, None, None, None, None, None) + self.__proxysockname = None + self.__proxypeername = None + self.__httptunnel = True + + def __recvall(self, count): + """__recvall(count) -> data + Receive EXACTLY the number of bytes requested from the socket. + Blocks until the required number of bytes have been received. + """ + data = self.recv(count) + while len(data) < count: + d = self.recv(count-len(data)) + if not d: raise GeneralProxyError((0, "connection closed unexpectedly")) + data = data + d + return data + + def sendall(self, content, *args): + """ override socket.socket.sendall method to rewrite the header + for non-tunneling proxies if needed + """ + if not self.__httptunnel: + content = self.__rewriteproxy(content) + return super(socksocket, self).sendall(content, *args) + + def __rewriteproxy(self, header): + """ rewrite HTTP request headers to support non-tunneling proxies + (i.e. those which do not support the CONNECT method). + This only works for HTTP (not HTTPS) since HTTPS requires tunneling. + """ + host, endpt = None, None + hdrs = header.split("\r\n") + for hdr in hdrs: + if hdr.lower().startswith("host:"): + host = hdr + elif hdr.lower().startswith("get") or hdr.lower().startswith("post"): + endpt = hdr + if host and endpt: + hdrs.remove(host) + hdrs.remove(endpt) + host = host.split(" ")[1] + endpt = endpt.split(" ") + if (self.__proxy[4] != None and self.__proxy[5] != None): + hdrs.insert(0, self.__getauthheader()) + hdrs.insert(0, "Host: %s" % host) + hdrs.insert(0, "%s http://%s%s %s" % (endpt[0], host, endpt[1], endpt[2])) + return "\r\n".join(hdrs) + + def __getauthheader(self): + auth = self.__proxy[4] + ":" + self.__proxy[5] + return "Proxy-Authorization: Basic " + base64.b64encode(auth) + + def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, username=None, password=None): + """setproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + Sets the proxy to be used. + proxytype - The type of the proxy to be used. Three types + are supported: PROXY_TYPE_SOCKS4 (including socks4a), + PROXY_TYPE_SOCKS5 and PROXY_TYPE_HTTP + addr - The address of the server (IP or DNS). + port - The port of the server. Defaults to 1080 for SOCKS + servers and 8080 for HTTP proxy servers. + rdns - Should DNS queries be preformed on the remote side + (rather than the local side). The default is True. + Note: This has no effect with SOCKS4 servers. + username - Username to authenticate with to the server. + The default is no authentication. + password - Password to authenticate with to the server. + Only relevant when username is also provided. + """ + self.__proxy = (proxytype, addr, port, rdns, username, password) + + def __negotiatesocks5(self, destaddr, destport): + """__negotiatesocks5(self,destaddr,destport) + Negotiates a connection through a SOCKS5 server. + """ + # First we'll send the authentication packages we support. + if (self.__proxy[4]!=None) and (self.__proxy[5]!=None): + # The username/password details were supplied to the + # setproxy method so we support the USERNAME/PASSWORD + # authentication (in addition to the standard none). + self.sendall(struct.pack('BBBB', 0x05, 0x02, 0x00, 0x02)) + else: + # No username/password were entered, therefore we + # only support connections with no authentication. + self.sendall(struct.pack('BBB', 0x05, 0x01, 0x00)) + # We'll receive the server's response to determine which + # method was selected + chosenauth = self.__recvall(2) + if chosenauth[0:1] != chr(0x05).encode(): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + # Check the chosen authentication method + if chosenauth[1:2] == chr(0x00).encode(): + # No authentication is required + pass + elif chosenauth[1:2] == chr(0x02).encode(): + # Okay, we need to perform a basic username/password + # authentication. + self.sendall(chr(0x01).encode() + chr(len(self.__proxy[4])) + self.__proxy[4] + chr(len(self.__proxy[5])) + self.__proxy[5]) + authstat = self.__recvall(2) + if authstat[0:1] != chr(0x01).encode(): + # Bad response + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if authstat[1:2] != chr(0x00).encode(): + # Authentication failed + self.close() + raise Socks5AuthError((3, _socks5autherrors[3])) + # Authentication succeeded + else: + # Reaching here is always bad + self.close() + if chosenauth[1] == chr(0xFF).encode(): + raise Socks5AuthError((2, _socks5autherrors[2])) + else: + raise GeneralProxyError((1, _generalerrors[1])) + # Now we can request the actual connection + req = struct.pack('BBB', 0x05, 0x01, 0x00) + # If the given destination address is an IP address, we'll + # use the IPv4 address request even if remote resolving was specified. + try: + ipaddr = socket.inet_aton(destaddr) + req = req + chr(0x01).encode() + ipaddr + except socket.error: + # Well it's not an IP number, so it's probably a DNS name. + if self.__proxy[3]: + # Resolve remotely + ipaddr = None + req = req + chr(0x03).encode() + chr(len(destaddr)).encode() + destaddr + else: + # Resolve locally + ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) + req = req + chr(0x01).encode() + ipaddr + req = req + struct.pack(">H", destport) + self.sendall(req) + # Get the response + resp = self.__recvall(4) + if resp[0:1] != chr(0x05).encode(): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + elif resp[1:2] != chr(0x00).encode(): + # Connection failed + self.close() + if ord(resp[1:2])<=8: + raise Socks5Error((ord(resp[1:2]), _socks5errors[ord(resp[1:2])])) + else: + raise Socks5Error((9, _socks5errors[9])) + # Get the bound address/port + elif resp[3:4] == chr(0x01).encode(): + boundaddr = self.__recvall(4) + elif resp[3:4] == chr(0x03).encode(): + resp = resp + self.recv(1) + boundaddr = self.__recvall(ord(resp[4:5])) + else: + self.close() + raise GeneralProxyError((1,_generalerrors[1])) + boundport = struct.unpack(">H", self.__recvall(2))[0] + self.__proxysockname = (boundaddr, boundport) + if ipaddr != None: + self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) + else: + self.__proxypeername = (destaddr, destport) + + def getproxysockname(self): + """getsockname() -> address info + Returns the bound IP address and port number at the proxy. + """ + return self.__proxysockname + + def getproxypeername(self): + """getproxypeername() -> address info + Returns the IP and port number of the proxy. + """ + return _orgsocket.getpeername(self) + + def getpeername(self): + """getpeername() -> address info + Returns the IP address and port number of the destination + machine (note: getproxypeername returns the proxy) + """ + return self.__proxypeername + + def __negotiatesocks4(self,destaddr,destport): + """__negotiatesocks4(self,destaddr,destport) + Negotiates a connection through a SOCKS4 server. + """ + # Check if the destination address provided is an IP address + rmtrslv = False + try: + ipaddr = socket.inet_aton(destaddr) + except socket.error: + # It's a DNS name. Check where it should be resolved. + if self.__proxy[3]: + ipaddr = struct.pack("BBBB", 0x00, 0x00, 0x00, 0x01) + rmtrslv = True + else: + ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) + # Construct the request packet + req = struct.pack(">BBH", 0x04, 0x01, destport) + ipaddr + # The username parameter is considered userid for SOCKS4 + if self.__proxy[4] != None: + req = req + self.__proxy[4] + req = req + chr(0x00).encode() + # DNS name if remote resolving is required + # NOTE: This is actually an extension to the SOCKS4 protocol + # called SOCKS4A and may not be supported in all cases. + if rmtrslv: + req = req + destaddr + chr(0x00).encode() + self.sendall(req) + # Get the response from the server + resp = self.__recvall(8) + if resp[0:1] != chr(0x00).encode(): + # Bad data + self.close() + raise GeneralProxyError((1,_generalerrors[1])) + if resp[1:2] != chr(0x5A).encode(): + # Server returned an error + self.close() + if ord(resp[1:2]) in (91, 92, 93): + self.close() + raise Socks4Error((ord(resp[1:2]), _socks4errors[ord(resp[1:2]) - 90])) + else: + raise Socks4Error((94, _socks4errors[4])) + # Get the bound address/port + self.__proxysockname = (socket.inet_ntoa(resp[4:]), struct.unpack(">H", resp[2:4])[0]) + if rmtrslv != None: + self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) + else: + self.__proxypeername = (destaddr, destport) + + def __negotiatehttp(self, destaddr, destport): + """__negotiatehttp(self,destaddr,destport) + Negotiates a connection through an HTTP server. + """ + # If we need to resolve locally, we do this now + if not self.__proxy[3]: + addr = socket.gethostbyname(destaddr) + else: + addr = destaddr + headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"] + headers += ["Host: ", destaddr, "\r\n"] + if (self.__proxy[4] != None and self.__proxy[5] != None): + headers += [self.__getauthheader(), "\r\n"] + headers.append("\r\n") + self.sendall("".join(headers).encode()) + # We read the response until we get the string "\r\n\r\n" + resp = self.recv(1) + while resp.find("\r\n\r\n".encode()) == -1: + resp = resp + self.recv(1) + # We just need the first line to check if the connection + # was successful + statusline = resp.splitlines()[0].split(" ".encode(), 2) + if statusline[0] not in ("HTTP/1.0".encode(), "HTTP/1.1".encode()): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + try: + statuscode = int(statusline[1]) + except ValueError: + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if statuscode != 200: + self.close() + raise HTTPError((statuscode, statusline[2])) + self.__proxysockname = ("0.0.0.0", 0) + self.__proxypeername = (addr, destport) + + def connect(self, destpair): + """connect(self, despair) + Connects to the specified destination through a proxy. + destpar - A tuple of the IP/DNS address and the port number. + (identical to socket's connect). + To select the proxy server use setproxy(). + """ + # Do a minimal input check first + if (not type(destpair) in (list,tuple)) or (len(destpair) < 2) or (not isinstance(destpair[0], basestring)) or (type(destpair[1]) != int): + raise GeneralProxyError((5, _generalerrors[5])) + if self.__proxy[0] == PROXY_TYPE_SOCKS5: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 1080 + _orgsocket.connect(self, (self.__proxy[1], portnum)) + self.__negotiatesocks5(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_SOCKS4: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 1080 + _orgsocket.connect(self,(self.__proxy[1], portnum)) + self.__negotiatesocks4(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_HTTP: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 8080 + _orgsocket.connect(self,(self.__proxy[1], portnum)) + self.__negotiatehttp(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_HTTP_NO_TUNNEL: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 8080 + _orgsocket.connect(self,(self.__proxy[1],portnum)) + if destpair[1] == 443: + self.__negotiatehttp(destpair[0],destpair[1]) + else: + self.__httptunnel = False + elif self.__proxy[0] == None: + _orgsocket.connect(self, (destpair[0], destpair[1])) + else: + raise GeneralProxyError((4, _generalerrors[4])) diff --git a/package/bin/da_ess_contentupdate/jinja2/__init__.py b/package/bin/da_ess_contentupdate/jinja2/__init__.py new file mode 100755 index 0000000000..029fb2e6e8 --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/__init__.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +""" + jinja2 + ~~~~~~ + + Jinja2 is a template engine written in pure Python. It provides a + Django inspired non-XML syntax but supports inline expressions and + an optional sandboxed environment. + + Nutshell + -------- + + Here a small example of a Jinja2 template:: + + {% extends 'base.html' %} + {% block title %}Memberlist{% endblock %} + {% block content %} + + {% endblock %} + + + :copyright: (c) 2010 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +__docformat__ = 'restructuredtext en' +__version__ = '2.8' + +# high level interface +from jinja2.environment import Environment, Template + +# loaders +from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \ + DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \ + ModuleLoader + +# bytecode caches +from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \ + MemcachedBytecodeCache + +# undefined types +from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined, \ + make_logging_undefined + +# exceptions +from jinja2.exceptions import TemplateError, UndefinedError, \ + TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \ + TemplateAssertionError + +# decorators and public utilities +from jinja2.filters import environmentfilter, contextfilter, \ + evalcontextfilter +from jinja2.utils import Markup, escape, clear_caches, \ + environmentfunction, evalcontextfunction, contextfunction, \ + is_undefined + +__all__ = [ + 'Environment', 'Template', 'BaseLoader', 'FileSystemLoader', + 'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader', + 'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache', + 'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined', + 'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound', + 'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError', + 'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape', + 'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined', + 'evalcontextfilter', 'evalcontextfunction', 'make_logging_undefined', +] diff --git a/package/bin/da_ess_contentupdate/jinja2/_compat.py b/package/bin/da_ess_contentupdate/jinja2/_compat.py new file mode 100755 index 0000000000..143962f384 --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/_compat.py @@ -0,0 +1,111 @@ +# -*- coding: utf-8 -*- +""" + jinja2._compat + ~~~~~~~~~~~~~~ + + Some py2/py3 compatibility support based on a stripped down + version of six so we don't have to depend on a specific version + of it. + + :copyright: Copyright 2013 by the Jinja team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import sys + +PY2 = sys.version_info[0] == 2 +PYPY = hasattr(sys, 'pypy_translation_info') +_identity = lambda x: x + + +if not PY2: + unichr = chr + range_type = range + text_type = str + string_types = (str,) + integer_types = (int,) + + iterkeys = lambda d: iter(d.keys()) + itervalues = lambda d: iter(d.values()) + iteritems = lambda d: iter(d.items()) + + import pickle + from io import BytesIO, StringIO + NativeStringIO = StringIO + + def reraise(tp, value, tb=None): + if value.__traceback__ is not tb: + raise value.with_traceback(tb) + raise value + + ifilter = filter + imap = map + izip = zip + intern = sys.intern + + implements_iterator = _identity + implements_to_string = _identity + encode_filename = _identity + get_next = lambda x: x.__next__ + +else: + unichr = unichr + text_type = unicode + range_type = xrange + string_types = (str, unicode) + integer_types = (int, long) + + iterkeys = lambda d: d.iterkeys() + itervalues = lambda d: d.itervalues() + iteritems = lambda d: d.iteritems() + + import cPickle as pickle + from cStringIO import StringIO as BytesIO, StringIO + NativeStringIO = BytesIO + + exec('def reraise(tp, value, tb=None):\n raise tp, value, tb') + + from itertools import imap, izip, ifilter + intern = intern + + def implements_iterator(cls): + cls.next = cls.__next__ + del cls.__next__ + return cls + + def implements_to_string(cls): + cls.__unicode__ = cls.__str__ + cls.__str__ = lambda x: x.__unicode__().encode('utf-8') + return cls + + get_next = lambda x: x.next + + def encode_filename(filename): + if isinstance(filename, unicode): + return filename.encode('utf-8') + return filename + + +def with_metaclass(meta, *bases): + # This requires a bit of explanation: the basic idea is to make a + # dummy metaclass for one level of class instanciation that replaces + # itself with the actual metaclass. Because of internal type checks + # we also need to make sure that we downgrade the custom metaclass + # for one level to something closer to type (that's why __call__ and + # __init__ comes back from type etc.). + # + # This has the advantage over six.with_metaclass in that it does not + # introduce dummy classes into the final MRO. + class metaclass(meta): + __call__ = type.__call__ + __init__ = type.__init__ + def __new__(cls, name, this_bases, d): + if this_bases is None: + return type.__new__(cls, name, (), d) + return meta(name, bases, d) + return metaclass('temporary_class', None, {}) + + +try: + from urllib.parse import quote_from_bytes as url_quote +except ImportError: + from urllib import quote as url_quote diff --git a/package/bin/da_ess_contentupdate/jinja2/_stringdefs.py b/package/bin/da_ess_contentupdate/jinja2/_stringdefs.py new file mode 100755 index 0000000000..da5830e9f1 --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/_stringdefs.py @@ -0,0 +1,132 @@ +# -*- coding: utf-8 -*- +""" + jinja2._stringdefs + ~~~~~~~~~~~~~~~~~~ + + Strings of all Unicode characters of a certain category. + Used for matching in Unicode-aware languages. Run to regenerate. + + Inspired by chartypes_create.py from the MoinMoin project, original + implementation from Pygments. + + :copyright: Copyright 2006-2009 by the Jinja team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from jinja2._compat import unichr + +Cc = u'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f' + +Cf = u'\xad\u0600\u0601\u0602\u0603\u06dd\u070f\u17b4\u17b5\u200b\u200c\u200d\u200e\u200f\u202a\u202b\u202c\u202d\u202e\u2060\u2061\u2062\u2063\u206a\u206b\u206c\u206d\u206e\u206f\ufeff\ufff9\ufffa\ufffb' + +Cn = u'\u0242\u0243\u0244\u0245\u0246\u0247\u0248\u0249\u024a\u024b\u024c\u024d\u024e\u024f\u0370\u0371\u0372\u0373\u0376\u0377\u0378\u0379\u037b\u037c\u037d\u037f\u0380\u0381\u0382\u0383\u038b\u038d\u03a2\u03cf\u0487\u04cf\u04fa\u04fb\u04fc\u04fd\u04fe\u04ff\u0510\u0511\u0512\u0513\u0514\u0515\u0516\u0517\u0518\u0519\u051a\u051b\u051c\u051d\u051e\u051f\u0520\u0521\u0522\u0523\u0524\u0525\u0526\u0527\u0528\u0529\u052a\u052b\u052c\u052d\u052e\u052f\u0530\u0557\u0558\u0560\u0588\u058b\u058c\u058d\u058e\u058f\u0590\u05ba\u05c8\u05c9\u05ca\u05cb\u05cc\u05cd\u05ce\u05cf\u05eb\u05ec\u05ed\u05ee\u05ef\u05f5\u05f6\u05f7\u05f8\u05f9\u05fa\u05fb\u05fc\u05fd\u05fe\u05ff\u0604\u0605\u0606\u0607\u0608\u0609\u060a\u0616\u0617\u0618\u0619\u061a\u061c\u061d\u0620\u063b\u063c\u063d\u063e\u063f\u065f\u070e\u074b\u074c\u076e\u076f\u0770\u0771\u0772\u0773\u0774\u0775\u0776\u0777\u0778\u0779\u077a\u077b\u077c\u077d\u077e\u077f\u07b2\u07b3\u07b4\u07b5\u07b6\u07b7\u07b8\u07b9\u07ba\u07bb\u07bc\u07bd\u07be\u07bf\u07c0\u07c1\u07c2\u07c3\u07c4\u07c5\u07c6\u07c7\u07c8\u07c9\u07ca\u07cb\u07cc\u07cd\u07ce\u07cf\u07d0\u07d1\u07d2\u07d3\u07d4\u07d5\u07d6\u07d7\u07d8\u07d9\u07da\u07db\u07dc\u07dd\u07de\u07df\u07e0\u07e1\u07e2\u07e3\u07e4\u07e5\u07e6\u07e7\u07e8\u07e9\u07ea\u07eb\u07ec\u07ed\u07ee\u07ef\u07f0\u07f1\u07f2\u07f3\u07f4\u07f5\u07f6\u07f7\u07f8\u07f9\u07fa\u07fb\u07fc\u07fd\u07fe\u07ff\u0800\u0801\u0802\u0803\u0804\u0805\u0806\u0807\u0808\u0809\u080a\u080b\u080c\u080d\u080e\u080f\u0810\u0811\u0812\u0813\u0814\u0815\u0816\u0817\u0818\u0819\u081a\u081b\u081c\u081d\u081e\u081f\u0820\u0821\u0822\u0823\u0824\u0825\u0826\u0827\u0828\u0829\u082a\u082b\u082c\u082d\u082e\u082f\u0830\u0831\u0832\u0833\u0834\u0835\u0836\u0837\u0838\u0839\u083a\u083b\u083c\u083d\u083e\u083f\u0840\u0841\u0842\u0843\u0844\u0845\u0846\u0847\u0848\u0849\u084a\u084b\u084c\u084d\u084e\u084f\u0850\u0851\u0852\u0853\u0854\u0855\u0856\u0857\u0858\u0859\u085a\u085b\u085c\u085d\u085e\u085f\u0860\u0861\u0862\u0863\u0864\u0865\u0866\u0867\u0868\u0869\u086a\u086b\u086c\u086d\u086e\u086f\u0870\u0871\u0872\u0873\u0874\u0875\u0876\u0877\u0878\u0879\u087a\u087b\u087c\u087d\u087e\u087f\u0880\u0881\u0882\u0883\u0884\u0885\u0886\u0887\u0888\u0889\u088a\u088b\u088c\u088d\u088e\u088f\u0890\u0891\u0892\u0893\u0894\u0895\u0896\u0897\u0898\u0899\u089a\u089b\u089c\u089d\u089e\u089f\u08a0\u08a1\u08a2\u08a3\u08a4\u08a5\u08a6\u08a7\u08a8\u08a9\u08aa\u08ab\u08ac\u08ad\u08ae\u08af\u08b0\u08b1\u08b2\u08b3\u08b4\u08b5\u08b6\u08b7\u08b8\u08b9\u08ba\u08bb\u08bc\u08bd\u08be\u08bf\u08c0\u08c1\u08c2\u08c3\u08c4\u08c5\u08c6\u08c7\u08c8\u08c9\u08ca\u08cb\u08cc\u08cd\u08ce\u08cf\u08d0\u08d1\u08d2\u08d3\u08d4\u08d5\u08d6\u08d7\u08d8\u08d9\u08da\u08db\u08dc\u08dd\u08de\u08df\u08e0\u08e1\u08e2\u08e3\u08e4\u08e5\u08e6\u08e7\u08e8\u08e9\u08ea\u08eb\u08ec\u08ed\u08ee\u08ef\u08f0\u08f1\u08f2\u08f3\u08f4\u08f5\u08f6\u08f7\u08f8\u08f9\u08fa\u08fb\u08fc\u08fd\u08fe\u08ff\u0900\u093a\u093b\u094e\u094f\u0955\u0956\u0957\u0971\u0972\u0973\u0974\u0975\u0976\u0977\u0978\u0979\u097a\u097b\u097c\u097e\u097f\u0980\u0984\u098d\u098e\u0991\u0992\u09a9\u09b1\u09b3\u09b4\u09b5\u09ba\u09bb\u09c5\u09c6\u09c9\u09ca\u09cf\u09d0\u09d1\u09d2\u09d3\u09d4\u09d5\u09d6\u09d8\u09d9\u09da\u09db\u09de\u09e4\u09e5\u09fb\u09fc\u09fd\u09fe\u09ff\u0a00\u0a04\u0a0b\u0a0c\u0a0d\u0a0e\u0a11\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a\u0a3b\u0a3d\u0a43\u0a44\u0a45\u0a46\u0a49\u0a4a\u0a4e\u0a4f\u0a50\u0a51\u0a52\u0a53\u0a54\u0a55\u0a56\u0a57\u0a58\u0a5d\u0a5f\u0a60\u0a61\u0a62\u0a63\u0a64\u0a65\u0a75\u0a76\u0a77\u0a78\u0a79\u0a7a\u0a7b\u0a7c\u0a7d\u0a7e\u0a7f\u0a80\u0a84\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba\u0abb\u0ac6\u0aca\u0ace\u0acf\u0ad1\u0ad2\u0ad3\u0ad4\u0ad5\u0ad6\u0ad7\u0ad8\u0ad9\u0ada\u0adb\u0adc\u0add\u0ade\u0adf\u0ae4\u0ae5\u0af0\u0af2\u0af3\u0af4\u0af5\u0af6\u0af7\u0af8\u0af9\u0afa\u0afb\u0afc\u0afd\u0afe\u0aff\u0b00\u0b04\u0b0d\u0b0e\u0b11\u0b12\u0b29\u0b31\u0b34\u0b3a\u0b3b\u0b44\u0b45\u0b46\u0b49\u0b4a\u0b4e\u0b4f\u0b50\u0b51\u0b52\u0b53\u0b54\u0b55\u0b58\u0b59\u0b5a\u0b5b\u0b5e\u0b62\u0b63\u0b64\u0b65\u0b72\u0b73\u0b74\u0b75\u0b76\u0b77\u0b78\u0b79\u0b7a\u0b7b\u0b7c\u0b7d\u0b7e\u0b7f\u0b80\u0b81\u0b84\u0b8b\u0b8c\u0b8d\u0b91\u0b96\u0b97\u0b98\u0b9b\u0b9d\u0ba0\u0ba1\u0ba2\u0ba5\u0ba6\u0ba7\u0bab\u0bac\u0bad\u0bba\u0bbb\u0bbc\u0bbd\u0bc3\u0bc4\u0bc5\u0bc9\u0bce\u0bcf\u0bd0\u0bd1\u0bd2\u0bd3\u0bd4\u0bd5\u0bd6\u0bd8\u0bd9\u0bda\u0bdb\u0bdc\u0bdd\u0bde\u0bdf\u0be0\u0be1\u0be2\u0be3\u0be4\u0be5\u0bfb\u0bfc\u0bfd\u0bfe\u0bff\u0c00\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a\u0c3b\u0c3c\u0c3d\u0c45\u0c49\u0c4e\u0c4f\u0c50\u0c51\u0c52\u0c53\u0c54\u0c57\u0c58\u0c59\u0c5a\u0c5b\u0c5c\u0c5d\u0c5e\u0c5f\u0c62\u0c63\u0c64\u0c65\u0c70\u0c71\u0c72\u0c73\u0c74\u0c75\u0c76\u0c77\u0c78\u0c79\u0c7a\u0c7b\u0c7c\u0c7d\u0c7e\u0c7f\u0c80\u0c81\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba\u0cbb\u0cc5\u0cc9\u0cce\u0ccf\u0cd0\u0cd1\u0cd2\u0cd3\u0cd4\u0cd7\u0cd8\u0cd9\u0cda\u0cdb\u0cdc\u0cdd\u0cdf\u0ce2\u0ce3\u0ce4\u0ce5\u0cf0\u0cf1\u0cf2\u0cf3\u0cf4\u0cf5\u0cf6\u0cf7\u0cf8\u0cf9\u0cfa\u0cfb\u0cfc\u0cfd\u0cfe\u0cff\u0d00\u0d01\u0d04\u0d0d\u0d11\u0d29\u0d3a\u0d3b\u0d3c\u0d3d\u0d44\u0d45\u0d49\u0d4e\u0d4f\u0d50\u0d51\u0d52\u0d53\u0d54\u0d55\u0d56\u0d58\u0d59\u0d5a\u0d5b\u0d5c\u0d5d\u0d5e\u0d5f\u0d62\u0d63\u0d64\u0d65\u0d70\u0d71\u0d72\u0d73\u0d74\u0d75\u0d76\u0d77\u0d78\u0d79\u0d7a\u0d7b\u0d7c\u0d7d\u0d7e\u0d7f\u0d80\u0d81\u0d84\u0d97\u0d98\u0d99\u0db2\u0dbc\u0dbe\u0dbf\u0dc7\u0dc8\u0dc9\u0dcb\u0dcc\u0dcd\u0dce\u0dd5\u0dd7\u0de0\u0de1\u0de2\u0de3\u0de4\u0de5\u0de6\u0de7\u0de8\u0de9\u0dea\u0deb\u0dec\u0ded\u0dee\u0def\u0df0\u0df1\u0df5\u0df6\u0df7\u0df8\u0df9\u0dfa\u0dfb\u0dfc\u0dfd\u0dfe\u0dff\u0e00\u0e3b\u0e3c\u0e3d\u0e3e\u0e5c\u0e5d\u0e5e\u0e5f\u0e60\u0e61\u0e62\u0e63\u0e64\u0e65\u0e66\u0e67\u0e68\u0e69\u0e6a\u0e6b\u0e6c\u0e6d\u0e6e\u0e6f\u0e70\u0e71\u0e72\u0e73\u0e74\u0e75\u0e76\u0e77\u0e78\u0e79\u0e7a\u0e7b\u0e7c\u0e7d\u0e7e\u0e7f\u0e80\u0e83\u0e85\u0e86\u0e89\u0e8b\u0e8c\u0e8e\u0e8f\u0e90\u0e91\u0e92\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8\u0ea9\u0eac\u0eba\u0ebe\u0ebf\u0ec5\u0ec7\u0ece\u0ecf\u0eda\u0edb\u0ede\u0edf\u0ee0\u0ee1\u0ee2\u0ee3\u0ee4\u0ee5\u0ee6\u0ee7\u0ee8\u0ee9\u0eea\u0eeb\u0eec\u0eed\u0eee\u0eef\u0ef0\u0ef1\u0ef2\u0ef3\u0ef4\u0ef5\u0ef6\u0ef7\u0ef8\u0ef9\u0efa\u0efb\u0efc\u0efd\u0efe\u0eff\u0f48\u0f6b\u0f6c\u0f6d\u0f6e\u0f6f\u0f70\u0f8c\u0f8d\u0f8e\u0f8f\u0f98\u0fbd\u0fcd\u0fce\u0fd2\u0fd3\u0fd4\u0fd5\u0fd6\u0fd7\u0fd8\u0fd9\u0fda\u0fdb\u0fdc\u0fdd\u0fde\u0fdf\u0fe0\u0fe1\u0fe2\u0fe3\u0fe4\u0fe5\u0fe6\u0fe7\u0fe8\u0fe9\u0fea\u0feb\u0fec\u0fed\u0fee\u0fef\u0ff0\u0ff1\u0ff2\u0ff3\u0ff4\u0ff5\u0ff6\u0ff7\u0ff8\u0ff9\u0ffa\u0ffb\u0ffc\u0ffd\u0ffe\u0fff\u1022\u1028\u102b\u1033\u1034\u1035\u103a\u103b\u103c\u103d\u103e\u103f\u105a\u105b\u105c\u105d\u105e\u105f\u1060\u1061\u1062\u1063\u1064\u1065\u1066\u1067\u1068\u1069\u106a\u106b\u106c\u106d\u106e\u106f\u1070\u1071\u1072\u1073\u1074\u1075\u1076\u1077\u1078\u1079\u107a\u107b\u107c\u107d\u107e\u107f\u1080\u1081\u1082\u1083\u1084\u1085\u1086\u1087\u1088\u1089\u108a\u108b\u108c\u108d\u108e\u108f\u1090\u1091\u1092\u1093\u1094\u1095\u1096\u1097\u1098\u1099\u109a\u109b\u109c\u109d\u109e\u109f\u10c6\u10c7\u10c8\u10c9\u10ca\u10cb\u10cc\u10cd\u10ce\u10cf\u10fd\u10fe\u10ff\u115a\u115b\u115c\u115d\u115e\u11a3\u11a4\u11a5\u11a6\u11a7\u11fa\u11fb\u11fc\u11fd\u11fe\u11ff\u1249\u124e\u124f\u1257\u1259\u125e\u125f\u1289\u128e\u128f\u12b1\u12b6\u12b7\u12bf\u12c1\u12c6\u12c7\u12d7\u1311\u1316\u1317\u135b\u135c\u135d\u135e\u137d\u137e\u137f\u139a\u139b\u139c\u139d\u139e\u139f\u13f5\u13f6\u13f7\u13f8\u13f9\u13fa\u13fb\u13fc\u13fd\u13fe\u13ff\u1400\u1677\u1678\u1679\u167a\u167b\u167c\u167d\u167e\u167f\u169d\u169e\u169f\u16f1\u16f2\u16f3\u16f4\u16f5\u16f6\u16f7\u16f8\u16f9\u16fa\u16fb\u16fc\u16fd\u16fe\u16ff\u170d\u1715\u1716\u1717\u1718\u1719\u171a\u171b\u171c\u171d\u171e\u171f\u1737\u1738\u1739\u173a\u173b\u173c\u173d\u173e\u173f\u1754\u1755\u1756\u1757\u1758\u1759\u175a\u175b\u175c\u175d\u175e\u175f\u176d\u1771\u1774\u1775\u1776\u1777\u1778\u1779\u177a\u177b\u177c\u177d\u177e\u177f\u17de\u17df\u17ea\u17eb\u17ec\u17ed\u17ee\u17ef\u17fa\u17fb\u17fc\u17fd\u17fe\u17ff\u180f\u181a\u181b\u181c\u181d\u181e\u181f\u1878\u1879\u187a\u187b\u187c\u187d\u187e\u187f\u18aa\u18ab\u18ac\u18ad\u18ae\u18af\u18b0\u18b1\u18b2\u18b3\u18b4\u18b5\u18b6\u18b7\u18b8\u18b9\u18ba\u18bb\u18bc\u18bd\u18be\u18bf\u18c0\u18c1\u18c2\u18c3\u18c4\u18c5\u18c6\u18c7\u18c8\u18c9\u18ca\u18cb\u18cc\u18cd\u18ce\u18cf\u18d0\u18d1\u18d2\u18d3\u18d4\u18d5\u18d6\u18d7\u18d8\u18d9\u18da\u18db\u18dc\u18dd\u18de\u18df\u18e0\u18e1\u18e2\u18e3\u18e4\u18e5\u18e6\u18e7\u18e8\u18e9\u18ea\u18eb\u18ec\u18ed\u18ee\u18ef\u18f0\u18f1\u18f2\u18f3\u18f4\u18f5\u18f6\u18f7\u18f8\u18f9\u18fa\u18fb\u18fc\u18fd\u18fe\u18ff\u191d\u191e\u191f\u192c\u192d\u192e\u192f\u193c\u193d\u193e\u193f\u1941\u1942\u1943\u196e\u196f\u1975\u1976\u1977\u1978\u1979\u197a\u197b\u197c\u197d\u197e\u197f\u19aa\u19ab\u19ac\u19ad\u19ae\u19af\u19ca\u19cb\u19cc\u19cd\u19ce\u19cf\u19da\u19db\u19dc\u19dd\u1a1c\u1a1d\u1a20\u1a21\u1a22\u1a23\u1a24\u1a25\u1a26\u1a27\u1a28\u1a29\u1a2a\u1a2b\u1a2c\u1a2d\u1a2e\u1a2f\u1a30\u1a31\u1a32\u1a33\u1a34\u1a35\u1a36\u1a37\u1a38\u1a39\u1a3a\u1a3b\u1a3c\u1a3d\u1a3e\u1a3f\u1a40\u1a41\u1a42\u1a43\u1a44\u1a45\u1a46\u1a47\u1a48\u1a49\u1a4a\u1a4b\u1a4c\u1a4d\u1a4e\u1a4f\u1a50\u1a51\u1a52\u1a53\u1a54\u1a55\u1a56\u1a57\u1a58\u1a59\u1a5a\u1a5b\u1a5c\u1a5d\u1a5e\u1a5f\u1a60\u1a61\u1a62\u1a63\u1a64\u1a65\u1a66\u1a67\u1a68\u1a69\u1a6a\u1a6b\u1a6c\u1a6d\u1a6e\u1a6f\u1a70\u1a71\u1a72\u1a73\u1a74\u1a75\u1a76\u1a77\u1a78\u1a79\u1a7a\u1a7b\u1a7c\u1a7d\u1a7e\u1a7f\u1a80\u1a81\u1a82\u1a83\u1a84\u1a85\u1a86\u1a87\u1a88\u1a89\u1a8a\u1a8b\u1a8c\u1a8d\u1a8e\u1a8f\u1a90\u1a91\u1a92\u1a93\u1a94\u1a95\u1a96\u1a97\u1a98\u1a99\u1a9a\u1a9b\u1a9c\u1a9d\u1a9e\u1a9f\u1aa0\u1aa1\u1aa2\u1aa3\u1aa4\u1aa5\u1aa6\u1aa7\u1aa8\u1aa9\u1aaa\u1aab\u1aac\u1aad\u1aae\u1aaf\u1ab0\u1ab1\u1ab2\u1ab3\u1ab4\u1ab5\u1ab6\u1ab7\u1ab8\u1ab9\u1aba\u1abb\u1abc\u1abd\u1abe\u1abf\u1ac0\u1ac1\u1ac2\u1ac3\u1ac4\u1ac5\u1ac6\u1ac7\u1ac8\u1ac9\u1aca\u1acb\u1acc\u1acd\u1ace\u1acf\u1ad0\u1ad1\u1ad2\u1ad3\u1ad4\u1ad5\u1ad6\u1ad7\u1ad8\u1ad9\u1ada\u1adb\u1adc\u1add\u1ade\u1adf\u1ae0\u1ae1\u1ae2\u1ae3\u1ae4\u1ae5\u1ae6\u1ae7\u1ae8\u1ae9\u1aea\u1aeb\u1aec\u1aed\u1aee\u1aef\u1af0\u1af1\u1af2\u1af3\u1af4\u1af5\u1af6\u1af7\u1af8\u1af9\u1afa\u1afb\u1afc\u1afd\u1afe\u1aff\u1b00\u1b01\u1b02\u1b03\u1b04\u1b05\u1b06\u1b07\u1b08\u1b09\u1b0a\u1b0b\u1b0c\u1b0d\u1b0e\u1b0f\u1b10\u1b11\u1b12\u1b13\u1b14\u1b15\u1b16\u1b17\u1b18\u1b19\u1b1a\u1b1b\u1b1c\u1b1d\u1b1e\u1b1f\u1b20\u1b21\u1b22\u1b23\u1b24\u1b25\u1b26\u1b27\u1b28\u1b29\u1b2a\u1b2b\u1b2c\u1b2d\u1b2e\u1b2f\u1b30\u1b31\u1b32\u1b33\u1b34\u1b35\u1b36\u1b37\u1b38\u1b39\u1b3a\u1b3b\u1b3c\u1b3d\u1b3e\u1b3f\u1b40\u1b41\u1b42\u1b43\u1b44\u1b45\u1b46\u1b47\u1b48\u1b49\u1b4a\u1b4b\u1b4c\u1b4d\u1b4e\u1b4f\u1b50\u1b51\u1b52\u1b53\u1b54\u1b55\u1b56\u1b57\u1b58\u1b59\u1b5a\u1b5b\u1b5c\u1b5d\u1b5e\u1b5f\u1b60\u1b61\u1b62\u1b63\u1b64\u1b65\u1b66\u1b67\u1b68\u1b69\u1b6a\u1b6b\u1b6c\u1b6d\u1b6e\u1b6f\u1b70\u1b71\u1b72\u1b73\u1b74\u1b75\u1b76\u1b77\u1b78\u1b79\u1b7a\u1b7b\u1b7c\u1b7d\u1b7e\u1b7f\u1b80\u1b81\u1b82\u1b83\u1b84\u1b85\u1b86\u1b87\u1b88\u1b89\u1b8a\u1b8b\u1b8c\u1b8d\u1b8e\u1b8f\u1b90\u1b91\u1b92\u1b93\u1b94\u1b95\u1b96\u1b97\u1b98\u1b99\u1b9a\u1b9b\u1b9c\u1b9d\u1b9e\u1b9f\u1ba0\u1ba1\u1ba2\u1ba3\u1ba4\u1ba5\u1ba6\u1ba7\u1ba8\u1ba9\u1baa\u1bab\u1bac\u1bad\u1bae\u1baf\u1bb0\u1bb1\u1bb2\u1bb3\u1bb4\u1bb5\u1bb6\u1bb7\u1bb8\u1bb9\u1bba\u1bbb\u1bbc\u1bbd\u1bbe\u1bbf\u1bc0\u1bc1\u1bc2\u1bc3\u1bc4\u1bc5\u1bc6\u1bc7\u1bc8\u1bc9\u1bca\u1bcb\u1bcc\u1bcd\u1bce\u1bcf\u1bd0\u1bd1\u1bd2\u1bd3\u1bd4\u1bd5\u1bd6\u1bd7\u1bd8\u1bd9\u1bda\u1bdb\u1bdc\u1bdd\u1bde\u1bdf\u1be0\u1be1\u1be2\u1be3\u1be4\u1be5\u1be6\u1be7\u1be8\u1be9\u1bea\u1beb\u1bec\u1bed\u1bee\u1bef\u1bf0\u1bf1\u1bf2\u1bf3\u1bf4\u1bf5\u1bf6\u1bf7\u1bf8\u1bf9\u1bfa\u1bfb\u1bfc\u1bfd\u1bfe\u1bff\u1c00\u1c01\u1c02\u1c03\u1c04\u1c05\u1c06\u1c07\u1c08\u1c09\u1c0a\u1c0b\u1c0c\u1c0d\u1c0e\u1c0f\u1c10\u1c11\u1c12\u1c13\u1c14\u1c15\u1c16\u1c17\u1c18\u1c19\u1c1a\u1c1b\u1c1c\u1c1d\u1c1e\u1c1f\u1c20\u1c21\u1c22\u1c23\u1c24\u1c25\u1c26\u1c27\u1c28\u1c29\u1c2a\u1c2b\u1c2c\u1c2d\u1c2e\u1c2f\u1c30\u1c31\u1c32\u1c33\u1c34\u1c35\u1c36\u1c37\u1c38\u1c39\u1c3a\u1c3b\u1c3c\u1c3d\u1c3e\u1c3f\u1c40\u1c41\u1c42\u1c43\u1c44\u1c45\u1c46\u1c47\u1c48\u1c49\u1c4a\u1c4b\u1c4c\u1c4d\u1c4e\u1c4f\u1c50\u1c51\u1c52\u1c53\u1c54\u1c55\u1c56\u1c57\u1c58\u1c59\u1c5a\u1c5b\u1c5c\u1c5d\u1c5e\u1c5f\u1c60\u1c61\u1c62\u1c63\u1c64\u1c65\u1c66\u1c67\u1c68\u1c69\u1c6a\u1c6b\u1c6c\u1c6d\u1c6e\u1c6f\u1c70\u1c71\u1c72\u1c73\u1c74\u1c75\u1c76\u1c77\u1c78\u1c79\u1c7a\u1c7b\u1c7c\u1c7d\u1c7e\u1c7f\u1c80\u1c81\u1c82\u1c83\u1c84\u1c85\u1c86\u1c87\u1c88\u1c89\u1c8a\u1c8b\u1c8c\u1c8d\u1c8e\u1c8f\u1c90\u1c91\u1c92\u1c93\u1c94\u1c95\u1c96\u1c97\u1c98\u1c99\u1c9a\u1c9b\u1c9c\u1c9d\u1c9e\u1c9f\u1ca0\u1ca1\u1ca2\u1ca3\u1ca4\u1ca5\u1ca6\u1ca7\u1ca8\u1ca9\u1caa\u1cab\u1cac\u1cad\u1cae\u1caf\u1cb0\u1cb1\u1cb2\u1cb3\u1cb4\u1cb5\u1cb6\u1cb7\u1cb8\u1cb9\u1cba\u1cbb\u1cbc\u1cbd\u1cbe\u1cbf\u1cc0\u1cc1\u1cc2\u1cc3\u1cc4\u1cc5\u1cc6\u1cc7\u1cc8\u1cc9\u1cca\u1ccb\u1ccc\u1ccd\u1cce\u1ccf\u1cd0\u1cd1\u1cd2\u1cd3\u1cd4\u1cd5\u1cd6\u1cd7\u1cd8\u1cd9\u1cda\u1cdb\u1cdc\u1cdd\u1cde\u1cdf\u1ce0\u1ce1\u1ce2\u1ce3\u1ce4\u1ce5\u1ce6\u1ce7\u1ce8\u1ce9\u1cea\u1ceb\u1cec\u1ced\u1cee\u1cef\u1cf0\u1cf1\u1cf2\u1cf3\u1cf4\u1cf5\u1cf6\u1cf7\u1cf8\u1cf9\u1cfa\u1cfb\u1cfc\u1cfd\u1cfe\u1cff\u1dc4\u1dc5\u1dc6\u1dc7\u1dc8\u1dc9\u1dca\u1dcb\u1dcc\u1dcd\u1dce\u1dcf\u1dd0\u1dd1\u1dd2\u1dd3\u1dd4\u1dd5\u1dd6\u1dd7\u1dd8\u1dd9\u1dda\u1ddb\u1ddc\u1ddd\u1dde\u1ddf\u1de0\u1de1\u1de2\u1de3\u1de4\u1de5\u1de6\u1de7\u1de8\u1de9\u1dea\u1deb\u1dec\u1ded\u1dee\u1def\u1df0\u1df1\u1df2\u1df3\u1df4\u1df5\u1df6\u1df7\u1df8\u1df9\u1dfa\u1dfb\u1dfc\u1dfd\u1dfe\u1dff\u1e9c\u1e9d\u1e9e\u1e9f\u1efa\u1efb\u1efc\u1efd\u1efe\u1eff\u1f16\u1f17\u1f1e\u1f1f\u1f46\u1f47\u1f4e\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e\u1f7f\u1fb5\u1fc5\u1fd4\u1fd5\u1fdc\u1ff0\u1ff1\u1ff5\u1fff\u2064\u2065\u2066\u2067\u2068\u2069\u2072\u2073\u208f\u2095\u2096\u2097\u2098\u2099\u209a\u209b\u209c\u209d\u209e\u209f\u20b6\u20b7\u20b8\u20b9\u20ba\u20bb\u20bc\u20bd\u20be\u20bf\u20c0\u20c1\u20c2\u20c3\u20c4\u20c5\u20c6\u20c7\u20c8\u20c9\u20ca\u20cb\u20cc\u20cd\u20ce\u20cf\u20ec\u20ed\u20ee\u20ef\u20f0\u20f1\u20f2\u20f3\u20f4\u20f5\u20f6\u20f7\u20f8\u20f9\u20fa\u20fb\u20fc\u20fd\u20fe\u20ff\u214d\u214e\u214f\u2150\u2151\u2152\u2184\u2185\u2186\u2187\u2188\u2189\u218a\u218b\u218c\u218d\u218e\u218f\u23dc\u23dd\u23de\u23df\u23e0\u23e1\u23e2\u23e3\u23e4\u23e5\u23e6\u23e7\u23e8\u23e9\u23ea\u23eb\u23ec\u23ed\u23ee\u23ef\u23f0\u23f1\u23f2\u23f3\u23f4\u23f5\u23f6\u23f7\u23f8\u23f9\u23fa\u23fb\u23fc\u23fd\u23fe\u23ff\u2427\u2428\u2429\u242a\u242b\u242c\u242d\u242e\u242f\u2430\u2431\u2432\u2433\u2434\u2435\u2436\u2437\u2438\u2439\u243a\u243b\u243c\u243d\u243e\u243f\u244b\u244c\u244d\u244e\u244f\u2450\u2451\u2452\u2453\u2454\u2455\u2456\u2457\u2458\u2459\u245a\u245b\u245c\u245d\u245e\u245f\u269d\u269e\u269f\u26b2\u26b3\u26b4\u26b5\u26b6\u26b7\u26b8\u26b9\u26ba\u26bb\u26bc\u26bd\u26be\u26bf\u26c0\u26c1\u26c2\u26c3\u26c4\u26c5\u26c6\u26c7\u26c8\u26c9\u26ca\u26cb\u26cc\u26cd\u26ce\u26cf\u26d0\u26d1\u26d2\u26d3\u26d4\u26d5\u26d6\u26d7\u26d8\u26d9\u26da\u26db\u26dc\u26dd\u26de\u26df\u26e0\u26e1\u26e2\u26e3\u26e4\u26e5\u26e6\u26e7\u26e8\u26e9\u26ea\u26eb\u26ec\u26ed\u26ee\u26ef\u26f0\u26f1\u26f2\u26f3\u26f4\u26f5\u26f6\u26f7\u26f8\u26f9\u26fa\u26fb\u26fc\u26fd\u26fe\u26ff\u2700\u2705\u270a\u270b\u2728\u274c\u274e\u2753\u2754\u2755\u2757\u275f\u2760\u2795\u2796\u2797\u27b0\u27bf\u27c7\u27c8\u27c9\u27ca\u27cb\u27cc\u27cd\u27ce\u27cf\u27ec\u27ed\u27ee\u27ef\u2b14\u2b15\u2b16\u2b17\u2b18\u2b19\u2b1a\u2b1b\u2b1c\u2b1d\u2b1e\u2b1f\u2b20\u2b21\u2b22\u2b23\u2b24\u2b25\u2b26\u2b27\u2b28\u2b29\u2b2a\u2b2b\u2b2c\u2b2d\u2b2e\u2b2f\u2b30\u2b31\u2b32\u2b33\u2b34\u2b35\u2b36\u2b37\u2b38\u2b39\u2b3a\u2b3b\u2b3c\u2b3d\u2b3e\u2b3f\u2b40\u2b41\u2b42\u2b43\u2b44\u2b45\u2b46\u2b47\u2b48\u2b49\u2b4a\u2b4b\u2b4c\u2b4d\u2b4e\u2b4f\u2b50\u2b51\u2b52\u2b53\u2b54\u2b55\u2b56\u2b57\u2b58\u2b59\u2b5a\u2b5b\u2b5c\u2b5d\u2b5e\u2b5f\u2b60\u2b61\u2b62\u2b63\u2b64\u2b65\u2b66\u2b67\u2b68\u2b69\u2b6a\u2b6b\u2b6c\u2b6d\u2b6e\u2b6f\u2b70\u2b71\u2b72\u2b73\u2b74\u2b75\u2b76\u2b77\u2b78\u2b79\u2b7a\u2b7b\u2b7c\u2b7d\u2b7e\u2b7f\u2b80\u2b81\u2b82\u2b83\u2b84\u2b85\u2b86\u2b87\u2b88\u2b89\u2b8a\u2b8b\u2b8c\u2b8d\u2b8e\u2b8f\u2b90\u2b91\u2b92\u2b93\u2b94\u2b95\u2b96\u2b97\u2b98\u2b99\u2b9a\u2b9b\u2b9c\u2b9d\u2b9e\u2b9f\u2ba0\u2ba1\u2ba2\u2ba3\u2ba4\u2ba5\u2ba6\u2ba7\u2ba8\u2ba9\u2baa\u2bab\u2bac\u2bad\u2bae\u2baf\u2bb0\u2bb1\u2bb2\u2bb3\u2bb4\u2bb5\u2bb6\u2bb7\u2bb8\u2bb9\u2bba\u2bbb\u2bbc\u2bbd\u2bbe\u2bbf\u2bc0\u2bc1\u2bc2\u2bc3\u2bc4\u2bc5\u2bc6\u2bc7\u2bc8\u2bc9\u2bca\u2bcb\u2bcc\u2bcd\u2bce\u2bcf\u2bd0\u2bd1\u2bd2\u2bd3\u2bd4\u2bd5\u2bd6\u2bd7\u2bd8\u2bd9\u2bda\u2bdb\u2bdc\u2bdd\u2bde\u2bdf\u2be0\u2be1\u2be2\u2be3\u2be4\u2be5\u2be6\u2be7\u2be8\u2be9\u2bea\u2beb\u2bec\u2bed\u2bee\u2bef\u2bf0\u2bf1\u2bf2\u2bf3\u2bf4\u2bf5\u2bf6\u2bf7\u2bf8\u2bf9\u2bfa\u2bfb\u2bfc\u2bfd\u2bfe\u2bff\u2c2f\u2c5f\u2c60\u2c61\u2c62\u2c63\u2c64\u2c65\u2c66\u2c67\u2c68\u2c69\u2c6a\u2c6b\u2c6c\u2c6d\u2c6e\u2c6f\u2c70\u2c71\u2c72\u2c73\u2c74\u2c75\u2c76\u2c77\u2c78\u2c79\u2c7a\u2c7b\u2c7c\u2c7d\u2c7e\u2c7f\u2ceb\u2cec\u2ced\u2cee\u2cef\u2cf0\u2cf1\u2cf2\u2cf3\u2cf4\u2cf5\u2cf6\u2cf7\u2cf8\u2d26\u2d27\u2d28\u2d29\u2d2a\u2d2b\u2d2c\u2d2d\u2d2e\u2d2f\u2d66\u2d67\u2d68\u2d69\u2d6a\u2d6b\u2d6c\u2d6d\u2d6e\u2d70\u2d71\u2d72\u2d73\u2d74\u2d75\u2d76\u2d77\u2d78\u2d79\u2d7a\u2d7b\u2d7c\u2d7d\u2d7e\u2d7f\u2d97\u2d98\u2d99\u2d9a\u2d9b\u2d9c\u2d9d\u2d9e\u2d9f\u2da7\u2daf\u2db7\u2dbf\u2dc7\u2dcf\u2dd7\u2ddf\u2de0\u2de1\u2de2\u2de3\u2de4\u2de5\u2de6\u2de7\u2de8\u2de9\u2dea\u2deb\u2dec\u2ded\u2dee\u2def\u2df0\u2df1\u2df2\u2df3\u2df4\u2df5\u2df6\u2df7\u2df8\u2df9\u2dfa\u2dfb\u2dfc\u2dfd\u2dfe\u2dff\u2e18\u2e19\u2e1a\u2e1b\u2e1e\u2e1f\u2e20\u2e21\u2e22\u2e23\u2e24\u2e25\u2e26\u2e27\u2e28\u2e29\u2e2a\u2e2b\u2e2c\u2e2d\u2e2e\u2e2f\u2e30\u2e31\u2e32\u2e33\u2e34\u2e35\u2e36\u2e37\u2e38\u2e39\u2e3a\u2e3b\u2e3c\u2e3d\u2e3e\u2e3f\u2e40\u2e41\u2e42\u2e43\u2e44\u2e45\u2e46\u2e47\u2e48\u2e49\u2e4a\u2e4b\u2e4c\u2e4d\u2e4e\u2e4f\u2e50\u2e51\u2e52\u2e53\u2e54\u2e55\u2e56\u2e57\u2e58\u2e59\u2e5a\u2e5b\u2e5c\u2e5d\u2e5e\u2e5f\u2e60\u2e61\u2e62\u2e63\u2e64\u2e65\u2e66\u2e67\u2e68\u2e69\u2e6a\u2e6b\u2e6c\u2e6d\u2e6e\u2e6f\u2e70\u2e71\u2e72\u2e73\u2e74\u2e75\u2e76\u2e77\u2e78\u2e79\u2e7a\u2e7b\u2e7c\u2e7d\u2e7e\u2e7f\u2e9a\u2ef4\u2ef5\u2ef6\u2ef7\u2ef8\u2ef9\u2efa\u2efb\u2efc\u2efd\u2efe\u2eff\u2fd6\u2fd7\u2fd8\u2fd9\u2fda\u2fdb\u2fdc\u2fdd\u2fde\u2fdf\u2fe0\u2fe1\u2fe2\u2fe3\u2fe4\u2fe5\u2fe6\u2fe7\u2fe8\u2fe9\u2fea\u2feb\u2fec\u2fed\u2fee\u2fef\u2ffc\u2ffd\u2ffe\u2fff\u3040\u3097\u3098\u3100\u3101\u3102\u3103\u3104\u312d\u312e\u312f\u3130\u318f\u31b8\u31b9\u31ba\u31bb\u31bc\u31bd\u31be\u31bf\u31d0\u31d1\u31d2\u31d3\u31d4\u31d5\u31d6\u31d7\u31d8\u31d9\u31da\u31db\u31dc\u31dd\u31de\u31df\u31e0\u31e1\u31e2\u31e3\u31e4\u31e5\u31e6\u31e7\u31e8\u31e9\u31ea\u31eb\u31ec\u31ed\u31ee\u31ef\u321f\u3244\u3245\u3246\u3247\u3248\u3249\u324a\u324b\u324c\u324d\u324e\u324f\u32ff\u4db6\u4db7\u4db8\u4db9\u4dba\u4dbb\u4dbc\u4dbd\u4dbe\u4dbf\u9fbc\u9fbd\u9fbe\u9fbf\u9fc0\u9fc1\u9fc2\u9fc3\u9fc4\u9fc5\u9fc6\u9fc7\u9fc8\u9fc9\u9fca\u9fcb\u9fcc\u9fcd\u9fce\u9fcf\u9fd0\u9fd1\u9fd2\u9fd3\u9fd4\u9fd5\u9fd6\u9fd7\u9fd8\u9fd9\u9fda\u9fdb\u9fdc\u9fdd\u9fde\u9fdf\u9fe0\u9fe1\u9fe2\u9fe3\u9fe4\u9fe5\u9fe6\u9fe7\u9fe8\u9fe9\u9fea\u9feb\u9fec\u9fed\u9fee\u9fef\u9ff0\u9ff1\u9ff2\u9ff3\u9ff4\u9ff5\u9ff6\u9ff7\u9ff8\u9ff9\u9ffa\u9ffb\u9ffc\u9ffd\u9ffe\u9fff\ua48d\ua48e\ua48f\ua4c7\ua4c8\ua4c9\ua4ca\ua4cb\ua4cc\ua4cd\ua4ce\ua4cf\ua4d0\ua4d1\ua4d2\ua4d3\ua4d4\ua4d5\ua4d6\ua4d7\ua4d8\ua4d9\ua4da\ua4db\ua4dc\ua4dd\ua4de\ua4df\ua4e0\ua4e1\ua4e2\ua4e3\ua4e4\ua4e5\ua4e6\ua4e7\ua4e8\ua4e9\ua4ea\ua4eb\ua4ec\ua4ed\ua4ee\ua4ef\ua4f0\ua4f1\ua4f2\ua4f3\ua4f4\ua4f5\ua4f6\ua4f7\ua4f8\ua4f9\ua4fa\ua4fb\ua4fc\ua4fd\ua4fe\ua4ff\ua500\ua501\ua502\ua503\ua504\ua505\ua506\ua507\ua508\ua509\ua50a\ua50b\ua50c\ua50d\ua50e\ua50f\ua510\ua511\ua512\ua513\ua514\ua515\ua516\ua517\ua518\ua519\ua51a\ua51b\ua51c\ua51d\ua51e\ua51f\ua520\ua521\ua522\ua523\ua524\ua525\ua526\ua527\ua528\ua529\ua52a\ua52b\ua52c\ua52d\ua52e\ua52f\ua530\ua531\ua532\ua533\ua534\ua535\ua536\ua537\ua538\ua539\ua53a\ua53b\ua53c\ua53d\ua53e\ua53f\ua540\ua541\ua542\ua543\ua544\ua545\ua546\ua547\ua548\ua549\ua54a\ua54b\ua54c\ua54d\ua54e\ua54f\ua550\ua551\ua552\ua553\ua554\ua555\ua556\ua557\ua558\ua559\ua55a\ua55b\ua55c\ua55d\ua55e\ua55f\ua560\ua561\ua562\ua563\ua564\ua565\ua566\ua567\ua568\ua569\ua56a\ua56b\ua56c\ua56d\ua56e\ua56f\ua570\ua571\ua572\ua573\ua574\ua575\ua576\ua577\ua578\ua579\ua57a\ua57b\ua57c\ua57d\ua57e\ua57f\ua580\ua581\ua582\ua583\ua584\ua585\ua586\ua587\ua588\ua589\ua58a\ua58b\ua58c\ua58d\ua58e\ua58f\ua590\ua591\ua592\ua593\ua594\ua595\ua596\ua597\ua598\ua599\ua59a\ua59b\ua59c\ua59d\ua59e\ua59f\ua5a0\ua5a1\ua5a2\ua5a3\ua5a4\ua5a5\ua5a6\ua5a7\ua5a8\ua5a9\ua5aa\ua5ab\ua5ac\ua5ad\ua5ae\ua5af\ua5b0\ua5b1\ua5b2\ua5b3\ua5b4\ua5b5\ua5b6\ua5b7\ua5b8\ua5b9\ua5ba\ua5bb\ua5bc\ua5bd\ua5be\ua5bf\ua5c0\ua5c1\ua5c2\ua5c3\ua5c4\ua5c5\ua5c6\ua5c7\ua5c8\ua5c9\ua5ca\ua5cb\ua5cc\ua5cd\ua5ce\ua5cf\ua5d0\ua5d1\ua5d2\ua5d3\ua5d4\ua5d5\ua5d6\ua5d7\ua5d8\ua5d9\ua5da\ua5db\ua5dc\ua5dd\ua5de\ua5df\ua5e0\ua5e1\ua5e2\ua5e3\ua5e4\ua5e5\ua5e6\ua5e7\ua5e8\ua5e9\ua5ea\ua5eb\ua5ec\ua5ed\ua5ee\ua5ef\ua5f0\ua5f1\ua5f2\ua5f3\ua5f4\ua5f5\ua5f6\ua5f7\ua5f8\ua5f9\ua5fa\ua5fb\ua5fc\ua5fd\ua5fe\ua5ff\ua600\ua601\ua602\ua603\ua604\ua605\ua606\ua607\ua608\ua609\ua60a\ua60b\ua60c\ua60d\ua60e\ua60f\ua610\ua611\ua612\ua613\ua614\ua615\ua616\ua617\ua618\ua619\ua61a\ua61b\ua61c\ua61d\ua61e\ua61f\ua620\ua621\ua622\ua623\ua624\ua625\ua626\ua627\ua628\ua629\ua62a\ua62b\ua62c\ua62d\ua62e\ua62f\ua630\ua631\ua632\ua633\ua634\ua635\ua636\ua637\ua638\ua639\ua63a\ua63b\ua63c\ua63d\ua63e\ua63f\ua640\ua641\ua642\ua643\ua644\ua645\ua646\ua647\ua648\ua649\ua64a\ua64b\ua64c\ua64d\ua64e\ua64f\ua650\ua651\ua652\ua653\ua654\ua655\ua656\ua657\ua658\ua659\ua65a\ua65b\ua65c\ua65d\ua65e\ua65f\ua660\ua661\ua662\ua663\ua664\ua665\ua666\ua667\ua668\ua669\ua66a\ua66b\ua66c\ua66d\ua66e\ua66f\ua670\ua671\ua672\ua673\ua674\ua675\ua676\ua677\ua678\ua679\ua67a\ua67b\ua67c\ua67d\ua67e\ua67f\ua680\ua681\ua682\ua683\ua684\ua685\ua686\ua687\ua688\ua689\ua68a\ua68b\ua68c\ua68d\ua68e\ua68f\ua690\ua691\ua692\ua693\ua694\ua695\ua696\ua697\ua698\ua699\ua69a\ua69b\ua69c\ua69d\ua69e\ua69f\ua6a0\ua6a1\ua6a2\ua6a3\ua6a4\ua6a5\ua6a6\ua6a7\ua6a8\ua6a9\ua6aa\ua6ab\ua6ac\ua6ad\ua6ae\ua6af\ua6b0\ua6b1\ua6b2\ua6b3\ua6b4\ua6b5\ua6b6\ua6b7\ua6b8\ua6b9\ua6ba\ua6bb\ua6bc\ua6bd\ua6be\ua6bf\ua6c0\ua6c1\ua6c2\ua6c3\ua6c4\ua6c5\ua6c6\ua6c7\ua6c8\ua6c9\ua6ca\ua6cb\ua6cc\ua6cd\ua6ce\ua6cf\ua6d0\ua6d1\ua6d2\ua6d3\ua6d4\ua6d5\ua6d6\ua6d7\ua6d8\ua6d9\ua6da\ua6db\ua6dc\ua6dd\ua6de\ua6df\ua6e0\ua6e1\ua6e2\ua6e3\ua6e4\ua6e5\ua6e6\ua6e7\ua6e8\ua6e9\ua6ea\ua6eb\ua6ec\ua6ed\ua6ee\ua6ef\ua6f0\ua6f1\ua6f2\ua6f3\ua6f4\ua6f5\ua6f6\ua6f7\ua6f8\ua6f9\ua6fa\ua6fb\ua6fc\ua6fd\ua6fe\ua6ff\ua717\ua718\ua719\ua71a\ua71b\ua71c\ua71d\ua71e\ua71f\ua720\ua721\ua722\ua723\ua724\ua725\ua726\ua727\ua728\ua729\ua72a\ua72b\ua72c\ua72d\ua72e\ua72f\ua730\ua731\ua732\ua733\ua734\ua735\ua736\ua737\ua738\ua739\ua73a\ua73b\ua73c\ua73d\ua73e\ua73f\ua740\ua741\ua742\ua743\ua744\ua745\ua746\ua747\ua748\ua749\ua74a\ua74b\ua74c\ua74d\ua74e\ua74f\ua750\ua751\ua752\ua753\ua754\ua755\ua756\ua757\ua758\ua759\ua75a\ua75b\ua75c\ua75d\ua75e\ua75f\ua760\ua761\ua762\ua763\ua764\ua765\ua766\ua767\ua768\ua769\ua76a\ua76b\ua76c\ua76d\ua76e\ua76f\ua770\ua771\ua772\ua773\ua774\ua775\ua776\ua777\ua778\ua779\ua77a\ua77b\ua77c\ua77d\ua77e\ua77f\ua780\ua781\ua782\ua783\ua784\ua785\ua786\ua787\ua788\ua789\ua78a\ua78b\ua78c\ua78d\ua78e\ua78f\ua790\ua791\ua792\ua793\ua794\ua795\ua796\ua797\ua798\ua799\ua79a\ua79b\ua79c\ua79d\ua79e\ua79f\ua7a0\ua7a1\ua7a2\ua7a3\ua7a4\ua7a5\ua7a6\ua7a7\ua7a8\ua7a9\ua7aa\ua7ab\ua7ac\ua7ad\ua7ae\ua7af\ua7b0\ua7b1\ua7b2\ua7b3\ua7b4\ua7b5\ua7b6\ua7b7\ua7b8\ua7b9\ua7ba\ua7bb\ua7bc\ua7bd\ua7be\ua7bf\ua7c0\ua7c1\ua7c2\ua7c3\ua7c4\ua7c5\ua7c6\ua7c7\ua7c8\ua7c9\ua7ca\ua7cb\ua7cc\ua7cd\ua7ce\ua7cf\ua7d0\ua7d1\ua7d2\ua7d3\ua7d4\ua7d5\ua7d6\ua7d7\ua7d8\ua7d9\ua7da\ua7db\ua7dc\ua7dd\ua7de\ua7df\ua7e0\ua7e1\ua7e2\ua7e3\ua7e4\ua7e5\ua7e6\ua7e7\ua7e8\ua7e9\ua7ea\ua7eb\ua7ec\ua7ed\ua7ee\ua7ef\ua7f0\ua7f1\ua7f2\ua7f3\ua7f4\ua7f5\ua7f6\ua7f7\ua7f8\ua7f9\ua7fa\ua7fb\ua7fc\ua7fd\ua7fe\ua7ff\ua82c\ua82d\ua82e\ua82f\ua830\ua831\ua832\ua833\ua834\ua835\ua836\ua837\ua838\ua839\ua83a\ua83b\ua83c\ua83d\ua83e\ua83f\ua840\ua841\ua842\ua843\ua844\ua845\ua846\ua847\ua848\ua849\ua84a\ua84b\ua84c\ua84d\ua84e\ua84f\ua850\ua851\ua852\ua853\ua854\ua855\ua856\ua857\ua858\ua859\ua85a\ua85b\ua85c\ua85d\ua85e\ua85f\ua860\ua861\ua862\ua863\ua864\ua865\ua866\ua867\ua868\ua869\ua86a\ua86b\ua86c\ua86d\ua86e\ua86f\ua870\ua871\ua872\ua873\ua874\ua875\ua876\ua877\ua878\ua879\ua87a\ua87b\ua87c\ua87d\ua87e\ua87f\ua880\ua881\ua882\ua883\ua884\ua885\ua886\ua887\ua888\ua889\ua88a\ua88b\ua88c\ua88d\ua88e\ua88f\ua890\ua891\ua892\ua893\ua894\ua895\ua896\ua897\ua898\ua899\ua89a\ua89b\ua89c\ua89d\ua89e\ua89f\ua8a0\ua8a1\ua8a2\ua8a3\ua8a4\ua8a5\ua8a6\ua8a7\ua8a8\ua8a9\ua8aa\ua8ab\ua8ac\ua8ad\ua8ae\ua8af\ua8b0\ua8b1\ua8b2\ua8b3\ua8b4\ua8b5\ua8b6\ua8b7\ua8b8\ua8b9\ua8ba\ua8bb\ua8bc\ua8bd\ua8be\ua8bf\ua8c0\ua8c1\ua8c2\ua8c3\ua8c4\ua8c5\ua8c6\ua8c7\ua8c8\ua8c9\ua8ca\ua8cb\ua8cc\ua8cd\ua8ce\ua8cf\ua8d0\ua8d1\ua8d2\ua8d3\ua8d4\ua8d5\ua8d6\ua8d7\ua8d8\ua8d9\ua8da\ua8db\ua8dc\ua8dd\ua8de\ua8df\ua8e0\ua8e1\ua8e2\ua8e3\ua8e4\ua8e5\ua8e6\ua8e7\ua8e8\ua8e9\ua8ea\ua8eb\ua8ec\ua8ed\ua8ee\ua8ef\ua8f0\ua8f1\ua8f2\ua8f3\ua8f4\ua8f5\ua8f6\ua8f7\ua8f8\ua8f9\ua8fa\ua8fb\ua8fc\ua8fd\ua8fe\ua8ff\ua900\ua901\ua902\ua903\ua904\ua905\ua906\ua907\ua908\ua909\ua90a\ua90b\ua90c\ua90d\ua90e\ua90f\ua910\ua911\ua912\ua913\ua914\ua915\ua916\ua917\ua918\ua919\ua91a\ua91b\ua91c\ua91d\ua91e\ua91f\ua920\ua921\ua922\ua923\ua924\ua925\ua926\ua927\ua928\ua929\ua92a\ua92b\ua92c\ua92d\ua92e\ua92f\ua930\ua931\ua932\ua933\ua934\ua935\ua936\ua937\ua938\ua939\ua93a\ua93b\ua93c\ua93d\ua93e\ua93f\ua940\ua941\ua942\ua943\ua944\ua945\ua946\ua947\ua948\ua949\ua94a\ua94b\ua94c\ua94d\ua94e\ua94f\ua950\ua951\ua952\ua953\ua954\ua955\ua956\ua957\ua958\ua959\ua95a\ua95b\ua95c\ua95d\ua95e\ua95f\ua960\ua961\ua962\ua963\ua964\ua965\ua966\ua967\ua968\ua969\ua96a\ua96b\ua96c\ua96d\ua96e\ua96f\ua970\ua971\ua972\ua973\ua974\ua975\ua976\ua977\ua978\ua979\ua97a\ua97b\ua97c\ua97d\ua97e\ua97f\ua980\ua981\ua982\ua983\ua984\ua985\ua986\ua987\ua988\ua989\ua98a\ua98b\ua98c\ua98d\ua98e\ua98f\ua990\ua991\ua992\ua993\ua994\ua995\ua996\ua997\ua998\ua999\ua99a\ua99b\ua99c\ua99d\ua99e\ua99f\ua9a0\ua9a1\ua9a2\ua9a3\ua9a4\ua9a5\ua9a6\ua9a7\ua9a8\ua9a9\ua9aa\ua9ab\ua9ac\ua9ad\ua9ae\ua9af\ua9b0\ua9b1\ua9b2\ua9b3\ua9b4\ua9b5\ua9b6\ua9b7\ua9b8\ua9b9\ua9ba\ua9bb\ua9bc\ua9bd\ua9be\ua9bf\ua9c0\ua9c1\ua9c2\ua9c3\ua9c4\ua9c5\ua9c6\ua9c7\ua9c8\ua9c9\ua9ca\ua9cb\ua9cc\ua9cd\ua9ce\ua9cf\ua9d0\ua9d1\ua9d2\ua9d3\ua9d4\ua9d5\ua9d6\ua9d7\ua9d8\ua9d9\ua9da\ua9db\ua9dc\ua9dd\ua9de\ua9df\ua9e0\ua9e1\ua9e2\ua9e3\ua9e4\ua9e5\ua9e6\ua9e7\ua9e8\ua9e9\ua9ea\ua9eb\ua9ec\ua9ed\ua9ee\ua9ef\ua9f0\ua9f1\ua9f2\ua9f3\ua9f4\ua9f5\ua9f6\ua9f7\ua9f8\ua9f9\ua9fa\ua9fb\ua9fc\ua9fd\ua9fe\ua9ff\uaa00\uaa01\uaa02\uaa03\uaa04\uaa05\uaa06\uaa07\uaa08\uaa09\uaa0a\uaa0b\uaa0c\uaa0d\uaa0e\uaa0f\uaa10\uaa11\uaa12\uaa13\uaa14\uaa15\uaa16\uaa17\uaa18\uaa19\uaa1a\uaa1b\uaa1c\uaa1d\uaa1e\uaa1f\uaa20\uaa21\uaa22\uaa23\uaa24\uaa25\uaa26\uaa27\uaa28\uaa29\uaa2a\uaa2b\uaa2c\uaa2d\uaa2e\uaa2f\uaa30\uaa31\uaa32\uaa33\uaa34\uaa35\uaa36\uaa37\uaa38\uaa39\uaa3a\uaa3b\uaa3c\uaa3d\uaa3e\uaa3f\uaa40\uaa41\uaa42\uaa43\uaa44\uaa45\uaa46\uaa47\uaa48\uaa49\uaa4a\uaa4b\uaa4c\uaa4d\uaa4e\uaa4f\uaa50\uaa51\uaa52\uaa53\uaa54\uaa55\uaa56\uaa57\uaa58\uaa59\uaa5a\uaa5b\uaa5c\uaa5d\uaa5e\uaa5f\uaa60\uaa61\uaa62\uaa63\uaa64\uaa65\uaa66\uaa67\uaa68\uaa69\uaa6a\uaa6b\uaa6c\uaa6d\uaa6e\uaa6f\uaa70\uaa71\uaa72\uaa73\uaa74\uaa75\uaa76\uaa77\uaa78\uaa79\uaa7a\uaa7b\uaa7c\uaa7d\uaa7e\uaa7f\uaa80\uaa81\uaa82\uaa83\uaa84\uaa85\uaa86\uaa87\uaa88\uaa89\uaa8a\uaa8b\uaa8c\uaa8d\uaa8e\uaa8f\uaa90\uaa91\uaa92\uaa93\uaa94\uaa95\uaa96\uaa97\uaa98\uaa99\uaa9a\uaa9b\uaa9c\uaa9d\uaa9e\uaa9f\uaaa0\uaaa1\uaaa2\uaaa3\uaaa4\uaaa5\uaaa6\uaaa7\uaaa8\uaaa9\uaaaa\uaaab\uaaac\uaaad\uaaae\uaaaf\uaab0\uaab1\uaab2\uaab3\uaab4\uaab5\uaab6\uaab7\uaab8\uaab9\uaaba\uaabb\uaabc\uaabd\uaabe\uaabf\uaac0\uaac1\uaac2\uaac3\uaac4\uaac5\uaac6\uaac7\uaac8\uaac9\uaaca\uaacb\uaacc\uaacd\uaace\uaacf\uaad0\uaad1\uaad2\uaad3\uaad4\uaad5\uaad6\uaad7\uaad8\uaad9\uaada\uaadb\uaadc\uaadd\uaade\uaadf\uaae0\uaae1\uaae2\uaae3\uaae4\uaae5\uaae6\uaae7\uaae8\uaae9\uaaea\uaaeb\uaaec\uaaed\uaaee\uaaef\uaaf0\uaaf1\uaaf2\uaaf3\uaaf4\uaaf5\uaaf6\uaaf7\uaaf8\uaaf9\uaafa\uaafb\uaafc\uaafd\uaafe\uaaff\uab00\uab01\uab02\uab03\uab04\uab05\uab06\uab07\uab08\uab09\uab0a\uab0b\uab0c\uab0d\uab0e\uab0f\uab10\uab11\uab12\uab13\uab14\uab15\uab16\uab17\uab18\uab19\uab1a\uab1b\uab1c\uab1d\uab1e\uab1f\uab20\uab21\uab22\uab23\uab24\uab25\uab26\uab27\uab28\uab29\uab2a\uab2b\uab2c\uab2d\uab2e\uab2f\uab30\uab31\uab32\uab33\uab34\uab35\uab36\uab37\uab38\uab39\uab3a\uab3b\uab3c\uab3d\uab3e\uab3f\uab40\uab41\uab42\uab43\uab44\uab45\uab46\uab47\uab48\uab49\uab4a\uab4b\uab4c\uab4d\uab4e\uab4f\uab50\uab51\uab52\uab53\uab54\uab55\uab56\uab57\uab58\uab59\uab5a\uab5b\uab5c\uab5d\uab5e\uab5f\uab60\uab61\uab62\uab63\uab64\uab65\uab66\uab67\uab68\uab69\uab6a\uab6b\uab6c\uab6d\uab6e\uab6f\uab70\uab71\uab72\uab73\uab74\uab75\uab76\uab77\uab78\uab79\uab7a\uab7b\uab7c\uab7d\uab7e\uab7f\uab80\uab81\uab82\uab83\uab84\uab85\uab86\uab87\uab88\uab89\uab8a\uab8b\uab8c\uab8d\uab8e\uab8f\uab90\uab91\uab92\uab93\uab94\uab95\uab96\uab97\uab98\uab99\uab9a\uab9b\uab9c\uab9d\uab9e\uab9f\uaba0\uaba1\uaba2\uaba3\uaba4\uaba5\uaba6\uaba7\uaba8\uaba9\uabaa\uabab\uabac\uabad\uabae\uabaf\uabb0\uabb1\uabb2\uabb3\uabb4\uabb5\uabb6\uabb7\uabb8\uabb9\uabba\uabbb\uabbc\uabbd\uabbe\uabbf\uabc0\uabc1\uabc2\uabc3\uabc4\uabc5\uabc6\uabc7\uabc8\uabc9\uabca\uabcb\uabcc\uabcd\uabce\uabcf\uabd0\uabd1\uabd2\uabd3\uabd4\uabd5\uabd6\uabd7\uabd8\uabd9\uabda\uabdb\uabdc\uabdd\uabde\uabdf\uabe0\uabe1\uabe2\uabe3\uabe4\uabe5\uabe6\uabe7\uabe8\uabe9\uabea\uabeb\uabec\uabed\uabee\uabef\uabf0\uabf1\uabf2\uabf3\uabf4\uabf5\uabf6\uabf7\uabf8\uabf9\uabfa\uabfb\uabfc\uabfd\uabfe\uabff\ud7a4\ud7a5\ud7a6\ud7a7\ud7a8\ud7a9\ud7aa\ud7ab\ud7ac\ud7ad\ud7ae\ud7af\ud7b0\ud7b1\ud7b2\ud7b3\ud7b4\ud7b5\ud7b6\ud7b7\ud7b8\ud7b9\ud7ba\ud7bb\ud7bc\ud7bd\ud7be\ud7bf\ud7c0\ud7c1\ud7c2\ud7c3\ud7c4\ud7c5\ud7c6\ud7c7\ud7c8\ud7c9\ud7ca\ud7cb\ud7cc\ud7cd\ud7ce\ud7cf\ud7d0\ud7d1\ud7d2\ud7d3\ud7d4\ud7d5\ud7d6\ud7d7\ud7d8\ud7d9\ud7da\ud7db\ud7dc\ud7dd\ud7de\ud7df\ud7e0\ud7e1\ud7e2\ud7e3\ud7e4\ud7e5\ud7e6\ud7e7\ud7e8\ud7e9\ud7ea\ud7eb\ud7ec\ud7ed\ud7ee\ud7ef\ud7f0\ud7f1\ud7f2\ud7f3\ud7f4\ud7f5\ud7f6\ud7f7\ud7f8\ud7f9\ud7fa\ud7fb\ud7fc\ud7fd\ud7fe\ud7ff\ufa2e\ufa2f\ufa6b\ufa6c\ufa6d\ufa6e\ufa6f\ufada\ufadb\ufadc\ufadd\ufade\ufadf\ufae0\ufae1\ufae2\ufae3\ufae4\ufae5\ufae6\ufae7\ufae8\ufae9\ufaea\ufaeb\ufaec\ufaed\ufaee\ufaef\ufaf0\ufaf1\ufaf2\ufaf3\ufaf4\ufaf5\ufaf6\ufaf7\ufaf8\ufaf9\ufafa\ufafb\ufafc\ufafd\ufafe\ufaff\ufb07\ufb08\ufb09\ufb0a\ufb0b\ufb0c\ufb0d\ufb0e\ufb0f\ufb10\ufb11\ufb12\ufb18\ufb19\ufb1a\ufb1b\ufb1c\ufb37\ufb3d\ufb3f\ufb42\ufb45\ufbb2\ufbb3\ufbb4\ufbb5\ufbb6\ufbb7\ufbb8\ufbb9\ufbba\ufbbb\ufbbc\ufbbd\ufbbe\ufbbf\ufbc0\ufbc1\ufbc2\ufbc3\ufbc4\ufbc5\ufbc6\ufbc7\ufbc8\ufbc9\ufbca\ufbcb\ufbcc\ufbcd\ufbce\ufbcf\ufbd0\ufbd1\ufbd2\ufd40\ufd41\ufd42\ufd43\ufd44\ufd45\ufd46\ufd47\ufd48\ufd49\ufd4a\ufd4b\ufd4c\ufd4d\ufd4e\ufd4f\ufd90\ufd91\ufdc8\ufdc9\ufdca\ufdcb\ufdcc\ufdcd\ufdce\ufdcf\ufdd0\ufdd1\ufdd2\ufdd3\ufdd4\ufdd5\ufdd6\ufdd7\ufdd8\ufdd9\ufdda\ufddb\ufddc\ufddd\ufdde\ufddf\ufde0\ufde1\ufde2\ufde3\ufde4\ufde5\ufde6\ufde7\ufde8\ufde9\ufdea\ufdeb\ufdec\ufded\ufdee\ufdef\ufdfe\ufdff\ufe1a\ufe1b\ufe1c\ufe1d\ufe1e\ufe1f\ufe24\ufe25\ufe26\ufe27\ufe28\ufe29\ufe2a\ufe2b\ufe2c\ufe2d\ufe2e\ufe2f\ufe53\ufe67\ufe6c\ufe6d\ufe6e\ufe6f\ufe75\ufefd\ufefe\uff00\uffbf\uffc0\uffc1\uffc8\uffc9\uffd0\uffd1\uffd8\uffd9\uffdd\uffde\uffdf\uffe7\uffef\ufff0\ufff1\ufff2\ufff3\ufff4\ufff5\ufff6\ufff7\ufff8\ufffe' + +Co = u'\ue000\ue001\ue002\ue003\ue004\ue005\ue006\ue007\ue008\ue009\ue00a\ue00b\ue00c\ue00d\ue00e\ue00f\ue010\ue011\ue012\ue013\ue014\ue015\ue016\ue017\ue018\ue019\ue01a\ue01b\ue01c\ue01d\ue01e\ue01f\ue020\ue021\ue022\ue023\ue024\ue025\ue026\ue027\ue028\ue029\ue02a\ue02b\ue02c\ue02d\ue02e\ue02f\ue030\ue031\ue032\ue033\ue034\ue035\ue036\ue037\ue038\ue039\ue03a\ue03b\ue03c\ue03d\ue03e\ue03f\ue040\ue041\ue042\ue043\ue044\ue045\ue046\ue047\ue048\ue049\ue04a\ue04b\ue04c\ue04d\ue04e\ue04f\ue050\ue051\ue052\ue053\ue054\ue055\ue056\ue057\ue058\ue059\ue05a\ue05b\ue05c\ue05d\ue05e\ue05f\ue060\ue061\ue062\ue063\ue064\ue065\ue066\ue067\ue068\ue069\ue06a\ue06b\ue06c\ue06d\ue06e\ue06f\ue070\ue071\ue072\ue073\ue074\ue075\ue076\ue077\ue078\ue079\ue07a\ue07b\ue07c\ue07d\ue07e\ue07f\ue080\ue081\ue082\ue083\ue084\ue085\ue086\ue087\ue088\ue089\ue08a\ue08b\ue08c\ue08d\ue08e\ue08f\ue090\ue091\ue092\ue093\ue094\ue095\ue096\ue097\ue098\ue099\ue09a\ue09b\ue09c\ue09d\ue09e\ue09f\ue0a0\ue0a1\ue0a2\ue0a3\ue0a4\ue0a5\ue0a6\ue0a7\ue0a8\ue0a9\ue0aa\ue0ab\ue0ac\ue0ad\ue0ae\ue0af\ue0b0\ue0b1\ue0b2\ue0b3\ue0b4\ue0b5\ue0b6\ue0b7\ue0b8\ue0b9\ue0ba\ue0bb\ue0bc\ue0bd\ue0be\ue0bf\ue0c0\ue0c1\ue0c2\ue0c3\ue0c4\ue0c5\ue0c6\ue0c7\ue0c8\ue0c9\ue0ca\ue0cb\ue0cc\ue0cd\ue0ce\ue0cf\ue0d0\ue0d1\ue0d2\ue0d3\ue0d4\ue0d5\ue0d6\ue0d7\ue0d8\ue0d9\ue0da\ue0db\ue0dc\ue0dd\ue0de\ue0df\ue0e0\ue0e1\ue0e2\ue0e3\ue0e4\ue0e5\ue0e6\ue0e7\ue0e8\ue0e9\ue0ea\ue0eb\ue0ec\ue0ed\ue0ee\ue0ef\ue0f0\ue0f1\ue0f2\ue0f3\ue0f4\ue0f5\ue0f6\ue0f7\ue0f8\ue0f9\ue0fa\ue0fb\ue0fc\ue0fd\ue0fe\ue0ff\ue100\ue101\ue102\ue103\ue104\ue105\ue106\ue107\ue108\ue109\ue10a\ue10b\ue10c\ue10d\ue10e\ue10f\ue110\ue111\ue112\ue113\ue114\ue115\ue116\ue117\ue118\ue119\ue11a\ue11b\ue11c\ue11d\ue11e\ue11f\ue120\ue121\ue122\ue123\ue124\ue125\ue126\ue127\ue128\ue129\ue12a\ue12b\ue12c\ue12d\ue12e\ue12f\ue130\ue131\ue132\ue133\ue134\ue135\ue136\ue137\ue138\ue139\ue13a\ue13b\ue13c\ue13d\ue13e\ue13f\ue140\ue141\ue142\ue143\ue144\ue145\ue146\ue147\ue148\ue149\ue14a\ue14b\ue14c\ue14d\ue14e\ue14f\ue150\ue151\ue152\ue153\ue154\ue155\ue156\ue157\ue158\ue159\ue15a\ue15b\ue15c\ue15d\ue15e\ue15f\ue160\ue161\ue162\ue163\ue164\ue165\ue166\ue167\ue168\ue169\ue16a\ue16b\ue16c\ue16d\ue16e\ue16f\ue170\ue171\ue172\ue173\ue174\ue175\ue176\ue177\ue178\ue179\ue17a\ue17b\ue17c\ue17d\ue17e\ue17f\ue180\ue181\ue182\ue183\ue184\ue185\ue186\ue187\ue188\ue189\ue18a\ue18b\ue18c\ue18d\ue18e\ue18f\ue190\ue191\ue192\ue193\ue194\ue195\ue196\ue197\ue198\ue199\ue19a\ue19b\ue19c\ue19d\ue19e\ue19f\ue1a0\ue1a1\ue1a2\ue1a3\ue1a4\ue1a5\ue1a6\ue1a7\ue1a8\ue1a9\ue1aa\ue1ab\ue1ac\ue1ad\ue1ae\ue1af\ue1b0\ue1b1\ue1b2\ue1b3\ue1b4\ue1b5\ue1b6\ue1b7\ue1b8\ue1b9\ue1ba\ue1bb\ue1bc\ue1bd\ue1be\ue1bf\ue1c0\ue1c1\ue1c2\ue1c3\ue1c4\ue1c5\ue1c6\ue1c7\ue1c8\ue1c9\ue1ca\ue1cb\ue1cc\ue1cd\ue1ce\ue1cf\ue1d0\ue1d1\ue1d2\ue1d3\ue1d4\ue1d5\ue1d6\ue1d7\ue1d8\ue1d9\ue1da\ue1db\ue1dc\ue1dd\ue1de\ue1df\ue1e0\ue1e1\ue1e2\ue1e3\ue1e4\ue1e5\ue1e6\ue1e7\ue1e8\ue1e9\ue1ea\ue1eb\ue1ec\ue1ed\ue1ee\ue1ef\ue1f0\ue1f1\ue1f2\ue1f3\ue1f4\ue1f5\ue1f6\ue1f7\ue1f8\ue1f9\ue1fa\ue1fb\ue1fc\ue1fd\ue1fe\ue1ff\ue200\ue201\ue202\ue203\ue204\ue205\ue206\ue207\ue208\ue209\ue20a\ue20b\ue20c\ue20d\ue20e\ue20f\ue210\ue211\ue212\ue213\ue214\ue215\ue216\ue217\ue218\ue219\ue21a\ue21b\ue21c\ue21d\ue21e\ue21f\ue220\ue221\ue222\ue223\ue224\ue225\ue226\ue227\ue228\ue229\ue22a\ue22b\ue22c\ue22d\ue22e\ue22f\ue230\ue231\ue232\ue233\ue234\ue235\ue236\ue237\ue238\ue239\ue23a\ue23b\ue23c\ue23d\ue23e\ue23f\ue240\ue241\ue242\ue243\ue244\ue245\ue246\ue247\ue248\ue249\ue24a\ue24b\ue24c\ue24d\ue24e\ue24f\ue250\ue251\ue252\ue253\ue254\ue255\ue256\ue257\ue258\ue259\ue25a\ue25b\ue25c\ue25d\ue25e\ue25f\ue260\ue261\ue262\ue263\ue264\ue265\ue266\ue267\ue268\ue269\ue26a\ue26b\ue26c\ue26d\ue26e\ue26f\ue270\ue271\ue272\ue273\ue274\ue275\ue276\ue277\ue278\ue279\ue27a\ue27b\ue27c\ue27d\ue27e\ue27f\ue280\ue281\ue282\ue283\ue284\ue285\ue286\ue287\ue288\ue289\ue28a\ue28b\ue28c\ue28d\ue28e\ue28f\ue290\ue291\ue292\ue293\ue294\ue295\ue296\ue297\ue298\ue299\ue29a\ue29b\ue29c\ue29d\ue29e\ue29f\ue2a0\ue2a1\ue2a2\ue2a3\ue2a4\ue2a5\ue2a6\ue2a7\ue2a8\ue2a9\ue2aa\ue2ab\ue2ac\ue2ad\ue2ae\ue2af\ue2b0\ue2b1\ue2b2\ue2b3\ue2b4\ue2b5\ue2b6\ue2b7\ue2b8\ue2b9\ue2ba\ue2bb\ue2bc\ue2bd\ue2be\ue2bf\ue2c0\ue2c1\ue2c2\ue2c3\ue2c4\ue2c5\ue2c6\ue2c7\ue2c8\ue2c9\ue2ca\ue2cb\ue2cc\ue2cd\ue2ce\ue2cf\ue2d0\ue2d1\ue2d2\ue2d3\ue2d4\ue2d5\ue2d6\ue2d7\ue2d8\ue2d9\ue2da\ue2db\ue2dc\ue2dd\ue2de\ue2df\ue2e0\ue2e1\ue2e2\ue2e3\ue2e4\ue2e5\ue2e6\ue2e7\ue2e8\ue2e9\ue2ea\ue2eb\ue2ec\ue2ed\ue2ee\ue2ef\ue2f0\ue2f1\ue2f2\ue2f3\ue2f4\ue2f5\ue2f6\ue2f7\ue2f8\ue2f9\ue2fa\ue2fb\ue2fc\ue2fd\ue2fe\ue2ff\ue300\ue301\ue302\ue303\ue304\ue305\ue306\ue307\ue308\ue309\ue30a\ue30b\ue30c\ue30d\ue30e\ue30f\ue310\ue311\ue312\ue313\ue314\ue315\ue316\ue317\ue318\ue319\ue31a\ue31b\ue31c\ue31d\ue31e\ue31f\ue320\ue321\ue322\ue323\ue324\ue325\ue326\ue327\ue328\ue329\ue32a\ue32b\ue32c\ue32d\ue32e\ue32f\ue330\ue331\ue332\ue333\ue334\ue335\ue336\ue337\ue338\ue339\ue33a\ue33b\ue33c\ue33d\ue33e\ue33f\ue340\ue341\ue342\ue343\ue344\ue345\ue346\ue347\ue348\ue349\ue34a\ue34b\ue34c\ue34d\ue34e\ue34f\ue350\ue351\ue352\ue353\ue354\ue355\ue356\ue357\ue358\ue359\ue35a\ue35b\ue35c\ue35d\ue35e\ue35f\ue360\ue361\ue362\ue363\ue364\ue365\ue366\ue367\ue368\ue369\ue36a\ue36b\ue36c\ue36d\ue36e\ue36f\ue370\ue371\ue372\ue373\ue374\ue375\ue376\ue377\ue378\ue379\ue37a\ue37b\ue37c\ue37d\ue37e\ue37f\ue380\ue381\ue382\ue383\ue384\ue385\ue386\ue387\ue388\ue389\ue38a\ue38b\ue38c\ue38d\ue38e\ue38f\ue390\ue391\ue392\ue393\ue394\ue395\ue396\ue397\ue398\ue399\ue39a\ue39b\ue39c\ue39d\ue39e\ue39f\ue3a0\ue3a1\ue3a2\ue3a3\ue3a4\ue3a5\ue3a6\ue3a7\ue3a8\ue3a9\ue3aa\ue3ab\ue3ac\ue3ad\ue3ae\ue3af\ue3b0\ue3b1\ue3b2\ue3b3\ue3b4\ue3b5\ue3b6\ue3b7\ue3b8\ue3b9\ue3ba\ue3bb\ue3bc\ue3bd\ue3be\ue3bf\ue3c0\ue3c1\ue3c2\ue3c3\ue3c4\ue3c5\ue3c6\ue3c7\ue3c8\ue3c9\ue3ca\ue3cb\ue3cc\ue3cd\ue3ce\ue3cf\ue3d0\ue3d1\ue3d2\ue3d3\ue3d4\ue3d5\ue3d6\ue3d7\ue3d8\ue3d9\ue3da\ue3db\ue3dc\ue3dd\ue3de\ue3df\ue3e0\ue3e1\ue3e2\ue3e3\ue3e4\ue3e5\ue3e6\ue3e7\ue3e8\ue3e9\ue3ea\ue3eb\ue3ec\ue3ed\ue3ee\ue3ef\ue3f0\ue3f1\ue3f2\ue3f3\ue3f4\ue3f5\ue3f6\ue3f7\ue3f8\ue3f9\ue3fa\ue3fb\ue3fc\ue3fd\ue3fe\ue3ff\ue400\ue401\ue402\ue403\ue404\ue405\ue406\ue407\ue408\ue409\ue40a\ue40b\ue40c\ue40d\ue40e\ue40f\ue410\ue411\ue412\ue413\ue414\ue415\ue416\ue417\ue418\ue419\ue41a\ue41b\ue41c\ue41d\ue41e\ue41f\ue420\ue421\ue422\ue423\ue424\ue425\ue426\ue427\ue428\ue429\ue42a\ue42b\ue42c\ue42d\ue42e\ue42f\ue430\ue431\ue432\ue433\ue434\ue435\ue436\ue437\ue438\ue439\ue43a\ue43b\ue43c\ue43d\ue43e\ue43f\ue440\ue441\ue442\ue443\ue444\ue445\ue446\ue447\ue448\ue449\ue44a\ue44b\ue44c\ue44d\ue44e\ue44f\ue450\ue451\ue452\ue453\ue454\ue455\ue456\ue457\ue458\ue459\ue45a\ue45b\ue45c\ue45d\ue45e\ue45f\ue460\ue461\ue462\ue463\ue464\ue465\ue466\ue467\ue468\ue469\ue46a\ue46b\ue46c\ue46d\ue46e\ue46f\ue470\ue471\ue472\ue473\ue474\ue475\ue476\ue477\ue478\ue479\ue47a\ue47b\ue47c\ue47d\ue47e\ue47f\ue480\ue481\ue482\ue483\ue484\ue485\ue486\ue487\ue488\ue489\ue48a\ue48b\ue48c\ue48d\ue48e\ue48f\ue490\ue491\ue492\ue493\ue494\ue495\ue496\ue497\ue498\ue499\ue49a\ue49b\ue49c\ue49d\ue49e\ue49f\ue4a0\ue4a1\ue4a2\ue4a3\ue4a4\ue4a5\ue4a6\ue4a7\ue4a8\ue4a9\ue4aa\ue4ab\ue4ac\ue4ad\ue4ae\ue4af\ue4b0\ue4b1\ue4b2\ue4b3\ue4b4\ue4b5\ue4b6\ue4b7\ue4b8\ue4b9\ue4ba\ue4bb\ue4bc\ue4bd\ue4be\ue4bf\ue4c0\ue4c1\ue4c2\ue4c3\ue4c4\ue4c5\ue4c6\ue4c7\ue4c8\ue4c9\ue4ca\ue4cb\ue4cc\ue4cd\ue4ce\ue4cf\ue4d0\ue4d1\ue4d2\ue4d3\ue4d4\ue4d5\ue4d6\ue4d7\ue4d8\ue4d9\ue4da\ue4db\ue4dc\ue4dd\ue4de\ue4df\ue4e0\ue4e1\ue4e2\ue4e3\ue4e4\ue4e5\ue4e6\ue4e7\ue4e8\ue4e9\ue4ea\ue4eb\ue4ec\ue4ed\ue4ee\ue4ef\ue4f0\ue4f1\ue4f2\ue4f3\ue4f4\ue4f5\ue4f6\ue4f7\ue4f8\ue4f9\ue4fa\ue4fb\ue4fc\ue4fd\ue4fe\ue4ff\ue500\ue501\ue502\ue503\ue504\ue505\ue506\ue507\ue508\ue509\ue50a\ue50b\ue50c\ue50d\ue50e\ue50f\ue510\ue511\ue512\ue513\ue514\ue515\ue516\ue517\ue518\ue519\ue51a\ue51b\ue51c\ue51d\ue51e\ue51f\ue520\ue521\ue522\ue523\ue524\ue525\ue526\ue527\ue528\ue529\ue52a\ue52b\ue52c\ue52d\ue52e\ue52f\ue530\ue531\ue532\ue533\ue534\ue535\ue536\ue537\ue538\ue539\ue53a\ue53b\ue53c\ue53d\ue53e\ue53f\ue540\ue541\ue542\ue543\ue544\ue545\ue546\ue547\ue548\ue549\ue54a\ue54b\ue54c\ue54d\ue54e\ue54f\ue550\ue551\ue552\ue553\ue554\ue555\ue556\ue557\ue558\ue559\ue55a\ue55b\ue55c\ue55d\ue55e\ue55f\ue560\ue561\ue562\ue563\ue564\ue565\ue566\ue567\ue568\ue569\ue56a\ue56b\ue56c\ue56d\ue56e\ue56f\ue570\ue571\ue572\ue573\ue574\ue575\ue576\ue577\ue578\ue579\ue57a\ue57b\ue57c\ue57d\ue57e\ue57f\ue580\ue581\ue582\ue583\ue584\ue585\ue586\ue587\ue588\ue589\ue58a\ue58b\ue58c\ue58d\ue58e\ue58f\ue590\ue591\ue592\ue593\ue594\ue595\ue596\ue597\ue598\ue599\ue59a\ue59b\ue59c\ue59d\ue59e\ue59f\ue5a0\ue5a1\ue5a2\ue5a3\ue5a4\ue5a5\ue5a6\ue5a7\ue5a8\ue5a9\ue5aa\ue5ab\ue5ac\ue5ad\ue5ae\ue5af\ue5b0\ue5b1\ue5b2\ue5b3\ue5b4\ue5b5\ue5b6\ue5b7\ue5b8\ue5b9\ue5ba\ue5bb\ue5bc\ue5bd\ue5be\ue5bf\ue5c0\ue5c1\ue5c2\ue5c3\ue5c4\ue5c5\ue5c6\ue5c7\ue5c8\ue5c9\ue5ca\ue5cb\ue5cc\ue5cd\ue5ce\ue5cf\ue5d0\ue5d1\ue5d2\ue5d3\ue5d4\ue5d5\ue5d6\ue5d7\ue5d8\ue5d9\ue5da\ue5db\ue5dc\ue5dd\ue5de\ue5df\ue5e0\ue5e1\ue5e2\ue5e3\ue5e4\ue5e5\ue5e6\ue5e7\ue5e8\ue5e9\ue5ea\ue5eb\ue5ec\ue5ed\ue5ee\ue5ef\ue5f0\ue5f1\ue5f2\ue5f3\ue5f4\ue5f5\ue5f6\ue5f7\ue5f8\ue5f9\ue5fa\ue5fb\ue5fc\ue5fd\ue5fe\ue5ff\ue600\ue601\ue602\ue603\ue604\ue605\ue606\ue607\ue608\ue609\ue60a\ue60b\ue60c\ue60d\ue60e\ue60f\ue610\ue611\ue612\ue613\ue614\ue615\ue616\ue617\ue618\ue619\ue61a\ue61b\ue61c\ue61d\ue61e\ue61f\ue620\ue621\ue622\ue623\ue624\ue625\ue626\ue627\ue628\ue629\ue62a\ue62b\ue62c\ue62d\ue62e\ue62f\ue630\ue631\ue632\ue633\ue634\ue635\ue636\ue637\ue638\ue639\ue63a\ue63b\ue63c\ue63d\ue63e\ue63f\ue640\ue641\ue642\ue643\ue644\ue645\ue646\ue647\ue648\ue649\ue64a\ue64b\ue64c\ue64d\ue64e\ue64f\ue650\ue651\ue652\ue653\ue654\ue655\ue656\ue657\ue658\ue659\ue65a\ue65b\ue65c\ue65d\ue65e\ue65f\ue660\ue661\ue662\ue663\ue664\ue665\ue666\ue667\ue668\ue669\ue66a\ue66b\ue66c\ue66d\ue66e\ue66f\ue670\ue671\ue672\ue673\ue674\ue675\ue676\ue677\ue678\ue679\ue67a\ue67b\ue67c\ue67d\ue67e\ue67f\ue680\ue681\ue682\ue683\ue684\ue685\ue686\ue687\ue688\ue689\ue68a\ue68b\ue68c\ue68d\ue68e\ue68f\ue690\ue691\ue692\ue693\ue694\ue695\ue696\ue697\ue698\ue699\ue69a\ue69b\ue69c\ue69d\ue69e\ue69f\ue6a0\ue6a1\ue6a2\ue6a3\ue6a4\ue6a5\ue6a6\ue6a7\ue6a8\ue6a9\ue6aa\ue6ab\ue6ac\ue6ad\ue6ae\ue6af\ue6b0\ue6b1\ue6b2\ue6b3\ue6b4\ue6b5\ue6b6\ue6b7\ue6b8\ue6b9\ue6ba\ue6bb\ue6bc\ue6bd\ue6be\ue6bf\ue6c0\ue6c1\ue6c2\ue6c3\ue6c4\ue6c5\ue6c6\ue6c7\ue6c8\ue6c9\ue6ca\ue6cb\ue6cc\ue6cd\ue6ce\ue6cf\ue6d0\ue6d1\ue6d2\ue6d3\ue6d4\ue6d5\ue6d6\ue6d7\ue6d8\ue6d9\ue6da\ue6db\ue6dc\ue6dd\ue6de\ue6df\ue6e0\ue6e1\ue6e2\ue6e3\ue6e4\ue6e5\ue6e6\ue6e7\ue6e8\ue6e9\ue6ea\ue6eb\ue6ec\ue6ed\ue6ee\ue6ef\ue6f0\ue6f1\ue6f2\ue6f3\ue6f4\ue6f5\ue6f6\ue6f7\ue6f8\ue6f9\ue6fa\ue6fb\ue6fc\ue6fd\ue6fe\ue6ff\ue700\ue701\ue702\ue703\ue704\ue705\ue706\ue707\ue708\ue709\ue70a\ue70b\ue70c\ue70d\ue70e\ue70f\ue710\ue711\ue712\ue713\ue714\ue715\ue716\ue717\ue718\ue719\ue71a\ue71b\ue71c\ue71d\ue71e\ue71f\ue720\ue721\ue722\ue723\ue724\ue725\ue726\ue727\ue728\ue729\ue72a\ue72b\ue72c\ue72d\ue72e\ue72f\ue730\ue731\ue732\ue733\ue734\ue735\ue736\ue737\ue738\ue739\ue73a\ue73b\ue73c\ue73d\ue73e\ue73f\ue740\ue741\ue742\ue743\ue744\ue745\ue746\ue747\ue748\ue749\ue74a\ue74b\ue74c\ue74d\ue74e\ue74f\ue750\ue751\ue752\ue753\ue754\ue755\ue756\ue757\ue758\ue759\ue75a\ue75b\ue75c\ue75d\ue75e\ue75f\ue760\ue761\ue762\ue763\ue764\ue765\ue766\ue767\ue768\ue769\ue76a\ue76b\ue76c\ue76d\ue76e\ue76f\ue770\ue771\ue772\ue773\ue774\ue775\ue776\ue777\ue778\ue779\ue77a\ue77b\ue77c\ue77d\ue77e\ue77f\ue780\ue781\ue782\ue783\ue784\ue785\ue786\ue787\ue788\ue789\ue78a\ue78b\ue78c\ue78d\ue78e\ue78f\ue790\ue791\ue792\ue793\ue794\ue795\ue796\ue797\ue798\ue799\ue79a\ue79b\ue79c\ue79d\ue79e\ue79f\ue7a0\ue7a1\ue7a2\ue7a3\ue7a4\ue7a5\ue7a6\ue7a7\ue7a8\ue7a9\ue7aa\ue7ab\ue7ac\ue7ad\ue7ae\ue7af\ue7b0\ue7b1\ue7b2\ue7b3\ue7b4\ue7b5\ue7b6\ue7b7\ue7b8\ue7b9\ue7ba\ue7bb\ue7bc\ue7bd\ue7be\ue7bf\ue7c0\ue7c1\ue7c2\ue7c3\ue7c4\ue7c5\ue7c6\ue7c7\ue7c8\ue7c9\ue7ca\ue7cb\ue7cc\ue7cd\ue7ce\ue7cf\ue7d0\ue7d1\ue7d2\ue7d3\ue7d4\ue7d5\ue7d6\ue7d7\ue7d8\ue7d9\ue7da\ue7db\ue7dc\ue7dd\ue7de\ue7df\ue7e0\ue7e1\ue7e2\ue7e3\ue7e4\ue7e5\ue7e6\ue7e7\ue7e8\ue7e9\ue7ea\ue7eb\ue7ec\ue7ed\ue7ee\ue7ef\ue7f0\ue7f1\ue7f2\ue7f3\ue7f4\ue7f5\ue7f6\ue7f7\ue7f8\ue7f9\ue7fa\ue7fb\ue7fc\ue7fd\ue7fe\ue7ff\ue800\ue801\ue802\ue803\ue804\ue805\ue806\ue807\ue808\ue809\ue80a\ue80b\ue80c\ue80d\ue80e\ue80f\ue810\ue811\ue812\ue813\ue814\ue815\ue816\ue817\ue818\ue819\ue81a\ue81b\ue81c\ue81d\ue81e\ue81f\ue820\ue821\ue822\ue823\ue824\ue825\ue826\ue827\ue828\ue829\ue82a\ue82b\ue82c\ue82d\ue82e\ue82f\ue830\ue831\ue832\ue833\ue834\ue835\ue836\ue837\ue838\ue839\ue83a\ue83b\ue83c\ue83d\ue83e\ue83f\ue840\ue841\ue842\ue843\ue844\ue845\ue846\ue847\ue848\ue849\ue84a\ue84b\ue84c\ue84d\ue84e\ue84f\ue850\ue851\ue852\ue853\ue854\ue855\ue856\ue857\ue858\ue859\ue85a\ue85b\ue85c\ue85d\ue85e\ue85f\ue860\ue861\ue862\ue863\ue864\ue865\ue866\ue867\ue868\ue869\ue86a\ue86b\ue86c\ue86d\ue86e\ue86f\ue870\ue871\ue872\ue873\ue874\ue875\ue876\ue877\ue878\ue879\ue87a\ue87b\ue87c\ue87d\ue87e\ue87f\ue880\ue881\ue882\ue883\ue884\ue885\ue886\ue887\ue888\ue889\ue88a\ue88b\ue88c\ue88d\ue88e\ue88f\ue890\ue891\ue892\ue893\ue894\ue895\ue896\ue897\ue898\ue899\ue89a\ue89b\ue89c\ue89d\ue89e\ue89f\ue8a0\ue8a1\ue8a2\ue8a3\ue8a4\ue8a5\ue8a6\ue8a7\ue8a8\ue8a9\ue8aa\ue8ab\ue8ac\ue8ad\ue8ae\ue8af\ue8b0\ue8b1\ue8b2\ue8b3\ue8b4\ue8b5\ue8b6\ue8b7\ue8b8\ue8b9\ue8ba\ue8bb\ue8bc\ue8bd\ue8be\ue8bf\ue8c0\ue8c1\ue8c2\ue8c3\ue8c4\ue8c5\ue8c6\ue8c7\ue8c8\ue8c9\ue8ca\ue8cb\ue8cc\ue8cd\ue8ce\ue8cf\ue8d0\ue8d1\ue8d2\ue8d3\ue8d4\ue8d5\ue8d6\ue8d7\ue8d8\ue8d9\ue8da\ue8db\ue8dc\ue8dd\ue8de\ue8df\ue8e0\ue8e1\ue8e2\ue8e3\ue8e4\ue8e5\ue8e6\ue8e7\ue8e8\ue8e9\ue8ea\ue8eb\ue8ec\ue8ed\ue8ee\ue8ef\ue8f0\ue8f1\ue8f2\ue8f3\ue8f4\ue8f5\ue8f6\ue8f7\ue8f8\ue8f9\ue8fa\ue8fb\ue8fc\ue8fd\ue8fe\ue8ff\ue900\ue901\ue902\ue903\ue904\ue905\ue906\ue907\ue908\ue909\ue90a\ue90b\ue90c\ue90d\ue90e\ue90f\ue910\ue911\ue912\ue913\ue914\ue915\ue916\ue917\ue918\ue919\ue91a\ue91b\ue91c\ue91d\ue91e\ue91f\ue920\ue921\ue922\ue923\ue924\ue925\ue926\ue927\ue928\ue929\ue92a\ue92b\ue92c\ue92d\ue92e\ue92f\ue930\ue931\ue932\ue933\ue934\ue935\ue936\ue937\ue938\ue939\ue93a\ue93b\ue93c\ue93d\ue93e\ue93f\ue940\ue941\ue942\ue943\ue944\ue945\ue946\ue947\ue948\ue949\ue94a\ue94b\ue94c\ue94d\ue94e\ue94f\ue950\ue951\ue952\ue953\ue954\ue955\ue956\ue957\ue958\ue959\ue95a\ue95b\ue95c\ue95d\ue95e\ue95f\ue960\ue961\ue962\ue963\ue964\ue965\ue966\ue967\ue968\ue969\ue96a\ue96b\ue96c\ue96d\ue96e\ue96f\ue970\ue971\ue972\ue973\ue974\ue975\ue976\ue977\ue978\ue979\ue97a\ue97b\ue97c\ue97d\ue97e\ue97f\ue980\ue981\ue982\ue983\ue984\ue985\ue986\ue987\ue988\ue989\ue98a\ue98b\ue98c\ue98d\ue98e\ue98f\ue990\ue991\ue992\ue993\ue994\ue995\ue996\ue997\ue998\ue999\ue99a\ue99b\ue99c\ue99d\ue99e\ue99f\ue9a0\ue9a1\ue9a2\ue9a3\ue9a4\ue9a5\ue9a6\ue9a7\ue9a8\ue9a9\ue9aa\ue9ab\ue9ac\ue9ad\ue9ae\ue9af\ue9b0\ue9b1\ue9b2\ue9b3\ue9b4\ue9b5\ue9b6\ue9b7\ue9b8\ue9b9\ue9ba\ue9bb\ue9bc\ue9bd\ue9be\ue9bf\ue9c0\ue9c1\ue9c2\ue9c3\ue9c4\ue9c5\ue9c6\ue9c7\ue9c8\ue9c9\ue9ca\ue9cb\ue9cc\ue9cd\ue9ce\ue9cf\ue9d0\ue9d1\ue9d2\ue9d3\ue9d4\ue9d5\ue9d6\ue9d7\ue9d8\ue9d9\ue9da\ue9db\ue9dc\ue9dd\ue9de\ue9df\ue9e0\ue9e1\ue9e2\ue9e3\ue9e4\ue9e5\ue9e6\ue9e7\ue9e8\ue9e9\ue9ea\ue9eb\ue9ec\ue9ed\ue9ee\ue9ef\ue9f0\ue9f1\ue9f2\ue9f3\ue9f4\ue9f5\ue9f6\ue9f7\ue9f8\ue9f9\ue9fa\ue9fb\ue9fc\ue9fd\ue9fe\ue9ff\uea00\uea01\uea02\uea03\uea04\uea05\uea06\uea07\uea08\uea09\uea0a\uea0b\uea0c\uea0d\uea0e\uea0f\uea10\uea11\uea12\uea13\uea14\uea15\uea16\uea17\uea18\uea19\uea1a\uea1b\uea1c\uea1d\uea1e\uea1f\uea20\uea21\uea22\uea23\uea24\uea25\uea26\uea27\uea28\uea29\uea2a\uea2b\uea2c\uea2d\uea2e\uea2f\uea30\uea31\uea32\uea33\uea34\uea35\uea36\uea37\uea38\uea39\uea3a\uea3b\uea3c\uea3d\uea3e\uea3f\uea40\uea41\uea42\uea43\uea44\uea45\uea46\uea47\uea48\uea49\uea4a\uea4b\uea4c\uea4d\uea4e\uea4f\uea50\uea51\uea52\uea53\uea54\uea55\uea56\uea57\uea58\uea59\uea5a\uea5b\uea5c\uea5d\uea5e\uea5f\uea60\uea61\uea62\uea63\uea64\uea65\uea66\uea67\uea68\uea69\uea6a\uea6b\uea6c\uea6d\uea6e\uea6f\uea70\uea71\uea72\uea73\uea74\uea75\uea76\uea77\uea78\uea79\uea7a\uea7b\uea7c\uea7d\uea7e\uea7f\uea80\uea81\uea82\uea83\uea84\uea85\uea86\uea87\uea88\uea89\uea8a\uea8b\uea8c\uea8d\uea8e\uea8f\uea90\uea91\uea92\uea93\uea94\uea95\uea96\uea97\uea98\uea99\uea9a\uea9b\uea9c\uea9d\uea9e\uea9f\ueaa0\ueaa1\ueaa2\ueaa3\ueaa4\ueaa5\ueaa6\ueaa7\ueaa8\ueaa9\ueaaa\ueaab\ueaac\ueaad\ueaae\ueaaf\ueab0\ueab1\ueab2\ueab3\ueab4\ueab5\ueab6\ueab7\ueab8\ueab9\ueaba\ueabb\ueabc\ueabd\ueabe\ueabf\ueac0\ueac1\ueac2\ueac3\ueac4\ueac5\ueac6\ueac7\ueac8\ueac9\ueaca\ueacb\ueacc\ueacd\ueace\ueacf\uead0\uead1\uead2\uead3\uead4\uead5\uead6\uead7\uead8\uead9\ueada\ueadb\ueadc\ueadd\ueade\ueadf\ueae0\ueae1\ueae2\ueae3\ueae4\ueae5\ueae6\ueae7\ueae8\ueae9\ueaea\ueaeb\ueaec\ueaed\ueaee\ueaef\ueaf0\ueaf1\ueaf2\ueaf3\ueaf4\ueaf5\ueaf6\ueaf7\ueaf8\ueaf9\ueafa\ueafb\ueafc\ueafd\ueafe\ueaff\ueb00\ueb01\ueb02\ueb03\ueb04\ueb05\ueb06\ueb07\ueb08\ueb09\ueb0a\ueb0b\ueb0c\ueb0d\ueb0e\ueb0f\ueb10\ueb11\ueb12\ueb13\ueb14\ueb15\ueb16\ueb17\ueb18\ueb19\ueb1a\ueb1b\ueb1c\ueb1d\ueb1e\ueb1f\ueb20\ueb21\ueb22\ueb23\ueb24\ueb25\ueb26\ueb27\ueb28\ueb29\ueb2a\ueb2b\ueb2c\ueb2d\ueb2e\ueb2f\ueb30\ueb31\ueb32\ueb33\ueb34\ueb35\ueb36\ueb37\ueb38\ueb39\ueb3a\ueb3b\ueb3c\ueb3d\ueb3e\ueb3f\ueb40\ueb41\ueb42\ueb43\ueb44\ueb45\ueb46\ueb47\ueb48\ueb49\ueb4a\ueb4b\ueb4c\ueb4d\ueb4e\ueb4f\ueb50\ueb51\ueb52\ueb53\ueb54\ueb55\ueb56\ueb57\ueb58\ueb59\ueb5a\ueb5b\ueb5c\ueb5d\ueb5e\ueb5f\ueb60\ueb61\ueb62\ueb63\ueb64\ueb65\ueb66\ueb67\ueb68\ueb69\ueb6a\ueb6b\ueb6c\ueb6d\ueb6e\ueb6f\ueb70\ueb71\ueb72\ueb73\ueb74\ueb75\ueb76\ueb77\ueb78\ueb79\ueb7a\ueb7b\ueb7c\ueb7d\ueb7e\ueb7f\ueb80\ueb81\ueb82\ueb83\ueb84\ueb85\ueb86\ueb87\ueb88\ueb89\ueb8a\ueb8b\ueb8c\ueb8d\ueb8e\ueb8f\ueb90\ueb91\ueb92\ueb93\ueb94\ueb95\ueb96\ueb97\ueb98\ueb99\ueb9a\ueb9b\ueb9c\ueb9d\ueb9e\ueb9f\ueba0\ueba1\ueba2\ueba3\ueba4\ueba5\ueba6\ueba7\ueba8\ueba9\uebaa\uebab\uebac\uebad\uebae\uebaf\uebb0\uebb1\uebb2\uebb3\uebb4\uebb5\uebb6\uebb7\uebb8\uebb9\uebba\uebbb\uebbc\uebbd\uebbe\uebbf\uebc0\uebc1\uebc2\uebc3\uebc4\uebc5\uebc6\uebc7\uebc8\uebc9\uebca\uebcb\uebcc\uebcd\uebce\uebcf\uebd0\uebd1\uebd2\uebd3\uebd4\uebd5\uebd6\uebd7\uebd8\uebd9\uebda\uebdb\uebdc\uebdd\uebde\uebdf\uebe0\uebe1\uebe2\uebe3\uebe4\uebe5\uebe6\uebe7\uebe8\uebe9\uebea\uebeb\uebec\uebed\uebee\uebef\uebf0\uebf1\uebf2\uebf3\uebf4\uebf5\uebf6\uebf7\uebf8\uebf9\uebfa\uebfb\uebfc\uebfd\uebfe\uebff\uec00\uec01\uec02\uec03\uec04\uec05\uec06\uec07\uec08\uec09\uec0a\uec0b\uec0c\uec0d\uec0e\uec0f\uec10\uec11\uec12\uec13\uec14\uec15\uec16\uec17\uec18\uec19\uec1a\uec1b\uec1c\uec1d\uec1e\uec1f\uec20\uec21\uec22\uec23\uec24\uec25\uec26\uec27\uec28\uec29\uec2a\uec2b\uec2c\uec2d\uec2e\uec2f\uec30\uec31\uec32\uec33\uec34\uec35\uec36\uec37\uec38\uec39\uec3a\uec3b\uec3c\uec3d\uec3e\uec3f\uec40\uec41\uec42\uec43\uec44\uec45\uec46\uec47\uec48\uec49\uec4a\uec4b\uec4c\uec4d\uec4e\uec4f\uec50\uec51\uec52\uec53\uec54\uec55\uec56\uec57\uec58\uec59\uec5a\uec5b\uec5c\uec5d\uec5e\uec5f\uec60\uec61\uec62\uec63\uec64\uec65\uec66\uec67\uec68\uec69\uec6a\uec6b\uec6c\uec6d\uec6e\uec6f\uec70\uec71\uec72\uec73\uec74\uec75\uec76\uec77\uec78\uec79\uec7a\uec7b\uec7c\uec7d\uec7e\uec7f\uec80\uec81\uec82\uec83\uec84\uec85\uec86\uec87\uec88\uec89\uec8a\uec8b\uec8c\uec8d\uec8e\uec8f\uec90\uec91\uec92\uec93\uec94\uec95\uec96\uec97\uec98\uec99\uec9a\uec9b\uec9c\uec9d\uec9e\uec9f\ueca0\ueca1\ueca2\ueca3\ueca4\ueca5\ueca6\ueca7\ueca8\ueca9\uecaa\uecab\uecac\uecad\uecae\uecaf\uecb0\uecb1\uecb2\uecb3\uecb4\uecb5\uecb6\uecb7\uecb8\uecb9\uecba\uecbb\uecbc\uecbd\uecbe\uecbf\uecc0\uecc1\uecc2\uecc3\uecc4\uecc5\uecc6\uecc7\uecc8\uecc9\uecca\ueccb\ueccc\ueccd\uecce\ueccf\uecd0\uecd1\uecd2\uecd3\uecd4\uecd5\uecd6\uecd7\uecd8\uecd9\uecda\uecdb\uecdc\uecdd\uecde\uecdf\uece0\uece1\uece2\uece3\uece4\uece5\uece6\uece7\uece8\uece9\uecea\ueceb\uecec\ueced\uecee\uecef\uecf0\uecf1\uecf2\uecf3\uecf4\uecf5\uecf6\uecf7\uecf8\uecf9\uecfa\uecfb\uecfc\uecfd\uecfe\uecff\ued00\ued01\ued02\ued03\ued04\ued05\ued06\ued07\ued08\ued09\ued0a\ued0b\ued0c\ued0d\ued0e\ued0f\ued10\ued11\ued12\ued13\ued14\ued15\ued16\ued17\ued18\ued19\ued1a\ued1b\ued1c\ued1d\ued1e\ued1f\ued20\ued21\ued22\ued23\ued24\ued25\ued26\ued27\ued28\ued29\ued2a\ued2b\ued2c\ued2d\ued2e\ued2f\ued30\ued31\ued32\ued33\ued34\ued35\ued36\ued37\ued38\ued39\ued3a\ued3b\ued3c\ued3d\ued3e\ued3f\ued40\ued41\ued42\ued43\ued44\ued45\ued46\ued47\ued48\ued49\ued4a\ued4b\ued4c\ued4d\ued4e\ued4f\ued50\ued51\ued52\ued53\ued54\ued55\ued56\ued57\ued58\ued59\ued5a\ued5b\ued5c\ued5d\ued5e\ued5f\ued60\ued61\ued62\ued63\ued64\ued65\ued66\ued67\ued68\ued69\ued6a\ued6b\ued6c\ued6d\ued6e\ued6f\ued70\ued71\ued72\ued73\ued74\ued75\ued76\ued77\ued78\ued79\ued7a\ued7b\ued7c\ued7d\ued7e\ued7f\ued80\ued81\ued82\ued83\ued84\ued85\ued86\ued87\ued88\ued89\ued8a\ued8b\ued8c\ued8d\ued8e\ued8f\ued90\ued91\ued92\ued93\ued94\ued95\ued96\ued97\ued98\ued99\ued9a\ued9b\ued9c\ued9d\ued9e\ued9f\ueda0\ueda1\ueda2\ueda3\ueda4\ueda5\ueda6\ueda7\ueda8\ueda9\uedaa\uedab\uedac\uedad\uedae\uedaf\uedb0\uedb1\uedb2\uedb3\uedb4\uedb5\uedb6\uedb7\uedb8\uedb9\uedba\uedbb\uedbc\uedbd\uedbe\uedbf\uedc0\uedc1\uedc2\uedc3\uedc4\uedc5\uedc6\uedc7\uedc8\uedc9\uedca\uedcb\uedcc\uedcd\uedce\uedcf\uedd0\uedd1\uedd2\uedd3\uedd4\uedd5\uedd6\uedd7\uedd8\uedd9\uedda\ueddb\ueddc\ueddd\uedde\ueddf\uede0\uede1\uede2\uede3\uede4\uede5\uede6\uede7\uede8\uede9\uedea\uedeb\uedec\ueded\uedee\uedef\uedf0\uedf1\uedf2\uedf3\uedf4\uedf5\uedf6\uedf7\uedf8\uedf9\uedfa\uedfb\uedfc\uedfd\uedfe\uedff\uee00\uee01\uee02\uee03\uee04\uee05\uee06\uee07\uee08\uee09\uee0a\uee0b\uee0c\uee0d\uee0e\uee0f\uee10\uee11\uee12\uee13\uee14\uee15\uee16\uee17\uee18\uee19\uee1a\uee1b\uee1c\uee1d\uee1e\uee1f\uee20\uee21\uee22\uee23\uee24\uee25\uee26\uee27\uee28\uee29\uee2a\uee2b\uee2c\uee2d\uee2e\uee2f\uee30\uee31\uee32\uee33\uee34\uee35\uee36\uee37\uee38\uee39\uee3a\uee3b\uee3c\uee3d\uee3e\uee3f\uee40\uee41\uee42\uee43\uee44\uee45\uee46\uee47\uee48\uee49\uee4a\uee4b\uee4c\uee4d\uee4e\uee4f\uee50\uee51\uee52\uee53\uee54\uee55\uee56\uee57\uee58\uee59\uee5a\uee5b\uee5c\uee5d\uee5e\uee5f\uee60\uee61\uee62\uee63\uee64\uee65\uee66\uee67\uee68\uee69\uee6a\uee6b\uee6c\uee6d\uee6e\uee6f\uee70\uee71\uee72\uee73\uee74\uee75\uee76\uee77\uee78\uee79\uee7a\uee7b\uee7c\uee7d\uee7e\uee7f\uee80\uee81\uee82\uee83\uee84\uee85\uee86\uee87\uee88\uee89\uee8a\uee8b\uee8c\uee8d\uee8e\uee8f\uee90\uee91\uee92\uee93\uee94\uee95\uee96\uee97\uee98\uee99\uee9a\uee9b\uee9c\uee9d\uee9e\uee9f\ueea0\ueea1\ueea2\ueea3\ueea4\ueea5\ueea6\ueea7\ueea8\ueea9\ueeaa\ueeab\ueeac\ueead\ueeae\ueeaf\ueeb0\ueeb1\ueeb2\ueeb3\ueeb4\ueeb5\ueeb6\ueeb7\ueeb8\ueeb9\ueeba\ueebb\ueebc\ueebd\ueebe\ueebf\ueec0\ueec1\ueec2\ueec3\ueec4\ueec5\ueec6\ueec7\ueec8\ueec9\ueeca\ueecb\ueecc\ueecd\ueece\ueecf\ueed0\ueed1\ueed2\ueed3\ueed4\ueed5\ueed6\ueed7\ueed8\ueed9\ueeda\ueedb\ueedc\ueedd\ueede\ueedf\ueee0\ueee1\ueee2\ueee3\ueee4\ueee5\ueee6\ueee7\ueee8\ueee9\ueeea\ueeeb\ueeec\ueeed\ueeee\ueeef\ueef0\ueef1\ueef2\ueef3\ueef4\ueef5\ueef6\ueef7\ueef8\ueef9\ueefa\ueefb\ueefc\ueefd\ueefe\ueeff\uef00\uef01\uef02\uef03\uef04\uef05\uef06\uef07\uef08\uef09\uef0a\uef0b\uef0c\uef0d\uef0e\uef0f\uef10\uef11\uef12\uef13\uef14\uef15\uef16\uef17\uef18\uef19\uef1a\uef1b\uef1c\uef1d\uef1e\uef1f\uef20\uef21\uef22\uef23\uef24\uef25\uef26\uef27\uef28\uef29\uef2a\uef2b\uef2c\uef2d\uef2e\uef2f\uef30\uef31\uef32\uef33\uef34\uef35\uef36\uef37\uef38\uef39\uef3a\uef3b\uef3c\uef3d\uef3e\uef3f\uef40\uef41\uef42\uef43\uef44\uef45\uef46\uef47\uef48\uef49\uef4a\uef4b\uef4c\uef4d\uef4e\uef4f\uef50\uef51\uef52\uef53\uef54\uef55\uef56\uef57\uef58\uef59\uef5a\uef5b\uef5c\uef5d\uef5e\uef5f\uef60\uef61\uef62\uef63\uef64\uef65\uef66\uef67\uef68\uef69\uef6a\uef6b\uef6c\uef6d\uef6e\uef6f\uef70\uef71\uef72\uef73\uef74\uef75\uef76\uef77\uef78\uef79\uef7a\uef7b\uef7c\uef7d\uef7e\uef7f\uef80\uef81\uef82\uef83\uef84\uef85\uef86\uef87\uef88\uef89\uef8a\uef8b\uef8c\uef8d\uef8e\uef8f\uef90\uef91\uef92\uef93\uef94\uef95\uef96\uef97\uef98\uef99\uef9a\uef9b\uef9c\uef9d\uef9e\uef9f\uefa0\uefa1\uefa2\uefa3\uefa4\uefa5\uefa6\uefa7\uefa8\uefa9\uefaa\uefab\uefac\uefad\uefae\uefaf\uefb0\uefb1\uefb2\uefb3\uefb4\uefb5\uefb6\uefb7\uefb8\uefb9\uefba\uefbb\uefbc\uefbd\uefbe\uefbf\uefc0\uefc1\uefc2\uefc3\uefc4\uefc5\uefc6\uefc7\uefc8\uefc9\uefca\uefcb\uefcc\uefcd\uefce\uefcf\uefd0\uefd1\uefd2\uefd3\uefd4\uefd5\uefd6\uefd7\uefd8\uefd9\uefda\uefdb\uefdc\uefdd\uefde\uefdf\uefe0\uefe1\uefe2\uefe3\uefe4\uefe5\uefe6\uefe7\uefe8\uefe9\uefea\uefeb\uefec\uefed\uefee\uefef\ueff0\ueff1\ueff2\ueff3\ueff4\ueff5\ueff6\ueff7\ueff8\ueff9\ueffa\ueffb\ueffc\ueffd\ueffe\uefff\uf000\uf001\uf002\uf003\uf004\uf005\uf006\uf007\uf008\uf009\uf00a\uf00b\uf00c\uf00d\uf00e\uf00f\uf010\uf011\uf012\uf013\uf014\uf015\uf016\uf017\uf018\uf019\uf01a\uf01b\uf01c\uf01d\uf01e\uf01f\uf020\uf021\uf022\uf023\uf024\uf025\uf026\uf027\uf028\uf029\uf02a\uf02b\uf02c\uf02d\uf02e\uf02f\uf030\uf031\uf032\uf033\uf034\uf035\uf036\uf037\uf038\uf039\uf03a\uf03b\uf03c\uf03d\uf03e\uf03f\uf040\uf041\uf042\uf043\uf044\uf045\uf046\uf047\uf048\uf049\uf04a\uf04b\uf04c\uf04d\uf04e\uf04f\uf050\uf051\uf052\uf053\uf054\uf055\uf056\uf057\uf058\uf059\uf05a\uf05b\uf05c\uf05d\uf05e\uf05f\uf060\uf061\uf062\uf063\uf064\uf065\uf066\uf067\uf068\uf069\uf06a\uf06b\uf06c\uf06d\uf06e\uf06f\uf070\uf071\uf072\uf073\uf074\uf075\uf076\uf077\uf078\uf079\uf07a\uf07b\uf07c\uf07d\uf07e\uf07f\uf080\uf081\uf082\uf083\uf084\uf085\uf086\uf087\uf088\uf089\uf08a\uf08b\uf08c\uf08d\uf08e\uf08f\uf090\uf091\uf092\uf093\uf094\uf095\uf096\uf097\uf098\uf099\uf09a\uf09b\uf09c\uf09d\uf09e\uf09f\uf0a0\uf0a1\uf0a2\uf0a3\uf0a4\uf0a5\uf0a6\uf0a7\uf0a8\uf0a9\uf0aa\uf0ab\uf0ac\uf0ad\uf0ae\uf0af\uf0b0\uf0b1\uf0b2\uf0b3\uf0b4\uf0b5\uf0b6\uf0b7\uf0b8\uf0b9\uf0ba\uf0bb\uf0bc\uf0bd\uf0be\uf0bf\uf0c0\uf0c1\uf0c2\uf0c3\uf0c4\uf0c5\uf0c6\uf0c7\uf0c8\uf0c9\uf0ca\uf0cb\uf0cc\uf0cd\uf0ce\uf0cf\uf0d0\uf0d1\uf0d2\uf0d3\uf0d4\uf0d5\uf0d6\uf0d7\uf0d8\uf0d9\uf0da\uf0db\uf0dc\uf0dd\uf0de\uf0df\uf0e0\uf0e1\uf0e2\uf0e3\uf0e4\uf0e5\uf0e6\uf0e7\uf0e8\uf0e9\uf0ea\uf0eb\uf0ec\uf0ed\uf0ee\uf0ef\uf0f0\uf0f1\uf0f2\uf0f3\uf0f4\uf0f5\uf0f6\uf0f7\uf0f8\uf0f9\uf0fa\uf0fb\uf0fc\uf0fd\uf0fe\uf0ff\uf100\uf101\uf102\uf103\uf104\uf105\uf106\uf107\uf108\uf109\uf10a\uf10b\uf10c\uf10d\uf10e\uf10f\uf110\uf111\uf112\uf113\uf114\uf115\uf116\uf117\uf118\uf119\uf11a\uf11b\uf11c\uf11d\uf11e\uf11f\uf120\uf121\uf122\uf123\uf124\uf125\uf126\uf127\uf128\uf129\uf12a\uf12b\uf12c\uf12d\uf12e\uf12f\uf130\uf131\uf132\uf133\uf134\uf135\uf136\uf137\uf138\uf139\uf13a\uf13b\uf13c\uf13d\uf13e\uf13f\uf140\uf141\uf142\uf143\uf144\uf145\uf146\uf147\uf148\uf149\uf14a\uf14b\uf14c\uf14d\uf14e\uf14f\uf150\uf151\uf152\uf153\uf154\uf155\uf156\uf157\uf158\uf159\uf15a\uf15b\uf15c\uf15d\uf15e\uf15f\uf160\uf161\uf162\uf163\uf164\uf165\uf166\uf167\uf168\uf169\uf16a\uf16b\uf16c\uf16d\uf16e\uf16f\uf170\uf171\uf172\uf173\uf174\uf175\uf176\uf177\uf178\uf179\uf17a\uf17b\uf17c\uf17d\uf17e\uf17f\uf180\uf181\uf182\uf183\uf184\uf185\uf186\uf187\uf188\uf189\uf18a\uf18b\uf18c\uf18d\uf18e\uf18f\uf190\uf191\uf192\uf193\uf194\uf195\uf196\uf197\uf198\uf199\uf19a\uf19b\uf19c\uf19d\uf19e\uf19f\uf1a0\uf1a1\uf1a2\uf1a3\uf1a4\uf1a5\uf1a6\uf1a7\uf1a8\uf1a9\uf1aa\uf1ab\uf1ac\uf1ad\uf1ae\uf1af\uf1b0\uf1b1\uf1b2\uf1b3\uf1b4\uf1b5\uf1b6\uf1b7\uf1b8\uf1b9\uf1ba\uf1bb\uf1bc\uf1bd\uf1be\uf1bf\uf1c0\uf1c1\uf1c2\uf1c3\uf1c4\uf1c5\uf1c6\uf1c7\uf1c8\uf1c9\uf1ca\uf1cb\uf1cc\uf1cd\uf1ce\uf1cf\uf1d0\uf1d1\uf1d2\uf1d3\uf1d4\uf1d5\uf1d6\uf1d7\uf1d8\uf1d9\uf1da\uf1db\uf1dc\uf1dd\uf1de\uf1df\uf1e0\uf1e1\uf1e2\uf1e3\uf1e4\uf1e5\uf1e6\uf1e7\uf1e8\uf1e9\uf1ea\uf1eb\uf1ec\uf1ed\uf1ee\uf1ef\uf1f0\uf1f1\uf1f2\uf1f3\uf1f4\uf1f5\uf1f6\uf1f7\uf1f8\uf1f9\uf1fa\uf1fb\uf1fc\uf1fd\uf1fe\uf1ff\uf200\uf201\uf202\uf203\uf204\uf205\uf206\uf207\uf208\uf209\uf20a\uf20b\uf20c\uf20d\uf20e\uf20f\uf210\uf211\uf212\uf213\uf214\uf215\uf216\uf217\uf218\uf219\uf21a\uf21b\uf21c\uf21d\uf21e\uf21f\uf220\uf221\uf222\uf223\uf224\uf225\uf226\uf227\uf228\uf229\uf22a\uf22b\uf22c\uf22d\uf22e\uf22f\uf230\uf231\uf232\uf233\uf234\uf235\uf236\uf237\uf238\uf239\uf23a\uf23b\uf23c\uf23d\uf23e\uf23f\uf240\uf241\uf242\uf243\uf244\uf245\uf246\uf247\uf248\uf249\uf24a\uf24b\uf24c\uf24d\uf24e\uf24f\uf250\uf251\uf252\uf253\uf254\uf255\uf256\uf257\uf258\uf259\uf25a\uf25b\uf25c\uf25d\uf25e\uf25f\uf260\uf261\uf262\uf263\uf264\uf265\uf266\uf267\uf268\uf269\uf26a\uf26b\uf26c\uf26d\uf26e\uf26f\uf270\uf271\uf272\uf273\uf274\uf275\uf276\uf277\uf278\uf279\uf27a\uf27b\uf27c\uf27d\uf27e\uf27f\uf280\uf281\uf282\uf283\uf284\uf285\uf286\uf287\uf288\uf289\uf28a\uf28b\uf28c\uf28d\uf28e\uf28f\uf290\uf291\uf292\uf293\uf294\uf295\uf296\uf297\uf298\uf299\uf29a\uf29b\uf29c\uf29d\uf29e\uf29f\uf2a0\uf2a1\uf2a2\uf2a3\uf2a4\uf2a5\uf2a6\uf2a7\uf2a8\uf2a9\uf2aa\uf2ab\uf2ac\uf2ad\uf2ae\uf2af\uf2b0\uf2b1\uf2b2\uf2b3\uf2b4\uf2b5\uf2b6\uf2b7\uf2b8\uf2b9\uf2ba\uf2bb\uf2bc\uf2bd\uf2be\uf2bf\uf2c0\uf2c1\uf2c2\uf2c3\uf2c4\uf2c5\uf2c6\uf2c7\uf2c8\uf2c9\uf2ca\uf2cb\uf2cc\uf2cd\uf2ce\uf2cf\uf2d0\uf2d1\uf2d2\uf2d3\uf2d4\uf2d5\uf2d6\uf2d7\uf2d8\uf2d9\uf2da\uf2db\uf2dc\uf2dd\uf2de\uf2df\uf2e0\uf2e1\uf2e2\uf2e3\uf2e4\uf2e5\uf2e6\uf2e7\uf2e8\uf2e9\uf2ea\uf2eb\uf2ec\uf2ed\uf2ee\uf2ef\uf2f0\uf2f1\uf2f2\uf2f3\uf2f4\uf2f5\uf2f6\uf2f7\uf2f8\uf2f9\uf2fa\uf2fb\uf2fc\uf2fd\uf2fe\uf2ff\uf300\uf301\uf302\uf303\uf304\uf305\uf306\uf307\uf308\uf309\uf30a\uf30b\uf30c\uf30d\uf30e\uf30f\uf310\uf311\uf312\uf313\uf314\uf315\uf316\uf317\uf318\uf319\uf31a\uf31b\uf31c\uf31d\uf31e\uf31f\uf320\uf321\uf322\uf323\uf324\uf325\uf326\uf327\uf328\uf329\uf32a\uf32b\uf32c\uf32d\uf32e\uf32f\uf330\uf331\uf332\uf333\uf334\uf335\uf336\uf337\uf338\uf339\uf33a\uf33b\uf33c\uf33d\uf33e\uf33f\uf340\uf341\uf342\uf343\uf344\uf345\uf346\uf347\uf348\uf349\uf34a\uf34b\uf34c\uf34d\uf34e\uf34f\uf350\uf351\uf352\uf353\uf354\uf355\uf356\uf357\uf358\uf359\uf35a\uf35b\uf35c\uf35d\uf35e\uf35f\uf360\uf361\uf362\uf363\uf364\uf365\uf366\uf367\uf368\uf369\uf36a\uf36b\uf36c\uf36d\uf36e\uf36f\uf370\uf371\uf372\uf373\uf374\uf375\uf376\uf377\uf378\uf379\uf37a\uf37b\uf37c\uf37d\uf37e\uf37f\uf380\uf381\uf382\uf383\uf384\uf385\uf386\uf387\uf388\uf389\uf38a\uf38b\uf38c\uf38d\uf38e\uf38f\uf390\uf391\uf392\uf393\uf394\uf395\uf396\uf397\uf398\uf399\uf39a\uf39b\uf39c\uf39d\uf39e\uf39f\uf3a0\uf3a1\uf3a2\uf3a3\uf3a4\uf3a5\uf3a6\uf3a7\uf3a8\uf3a9\uf3aa\uf3ab\uf3ac\uf3ad\uf3ae\uf3af\uf3b0\uf3b1\uf3b2\uf3b3\uf3b4\uf3b5\uf3b6\uf3b7\uf3b8\uf3b9\uf3ba\uf3bb\uf3bc\uf3bd\uf3be\uf3bf\uf3c0\uf3c1\uf3c2\uf3c3\uf3c4\uf3c5\uf3c6\uf3c7\uf3c8\uf3c9\uf3ca\uf3cb\uf3cc\uf3cd\uf3ce\uf3cf\uf3d0\uf3d1\uf3d2\uf3d3\uf3d4\uf3d5\uf3d6\uf3d7\uf3d8\uf3d9\uf3da\uf3db\uf3dc\uf3dd\uf3de\uf3df\uf3e0\uf3e1\uf3e2\uf3e3\uf3e4\uf3e5\uf3e6\uf3e7\uf3e8\uf3e9\uf3ea\uf3eb\uf3ec\uf3ed\uf3ee\uf3ef\uf3f0\uf3f1\uf3f2\uf3f3\uf3f4\uf3f5\uf3f6\uf3f7\uf3f8\uf3f9\uf3fa\uf3fb\uf3fc\uf3fd\uf3fe\uf3ff\uf400\uf401\uf402\uf403\uf404\uf405\uf406\uf407\uf408\uf409\uf40a\uf40b\uf40c\uf40d\uf40e\uf40f\uf410\uf411\uf412\uf413\uf414\uf415\uf416\uf417\uf418\uf419\uf41a\uf41b\uf41c\uf41d\uf41e\uf41f\uf420\uf421\uf422\uf423\uf424\uf425\uf426\uf427\uf428\uf429\uf42a\uf42b\uf42c\uf42d\uf42e\uf42f\uf430\uf431\uf432\uf433\uf434\uf435\uf436\uf437\uf438\uf439\uf43a\uf43b\uf43c\uf43d\uf43e\uf43f\uf440\uf441\uf442\uf443\uf444\uf445\uf446\uf447\uf448\uf449\uf44a\uf44b\uf44c\uf44d\uf44e\uf44f\uf450\uf451\uf452\uf453\uf454\uf455\uf456\uf457\uf458\uf459\uf45a\uf45b\uf45c\uf45d\uf45e\uf45f\uf460\uf461\uf462\uf463\uf464\uf465\uf466\uf467\uf468\uf469\uf46a\uf46b\uf46c\uf46d\uf46e\uf46f\uf470\uf471\uf472\uf473\uf474\uf475\uf476\uf477\uf478\uf479\uf47a\uf47b\uf47c\uf47d\uf47e\uf47f\uf480\uf481\uf482\uf483\uf484\uf485\uf486\uf487\uf488\uf489\uf48a\uf48b\uf48c\uf48d\uf48e\uf48f\uf490\uf491\uf492\uf493\uf494\uf495\uf496\uf497\uf498\uf499\uf49a\uf49b\uf49c\uf49d\uf49e\uf49f\uf4a0\uf4a1\uf4a2\uf4a3\uf4a4\uf4a5\uf4a6\uf4a7\uf4a8\uf4a9\uf4aa\uf4ab\uf4ac\uf4ad\uf4ae\uf4af\uf4b0\uf4b1\uf4b2\uf4b3\uf4b4\uf4b5\uf4b6\uf4b7\uf4b8\uf4b9\uf4ba\uf4bb\uf4bc\uf4bd\uf4be\uf4bf\uf4c0\uf4c1\uf4c2\uf4c3\uf4c4\uf4c5\uf4c6\uf4c7\uf4c8\uf4c9\uf4ca\uf4cb\uf4cc\uf4cd\uf4ce\uf4cf\uf4d0\uf4d1\uf4d2\uf4d3\uf4d4\uf4d5\uf4d6\uf4d7\uf4d8\uf4d9\uf4da\uf4db\uf4dc\uf4dd\uf4de\uf4df\uf4e0\uf4e1\uf4e2\uf4e3\uf4e4\uf4e5\uf4e6\uf4e7\uf4e8\uf4e9\uf4ea\uf4eb\uf4ec\uf4ed\uf4ee\uf4ef\uf4f0\uf4f1\uf4f2\uf4f3\uf4f4\uf4f5\uf4f6\uf4f7\uf4f8\uf4f9\uf4fa\uf4fb\uf4fc\uf4fd\uf4fe\uf4ff\uf500\uf501\uf502\uf503\uf504\uf505\uf506\uf507\uf508\uf509\uf50a\uf50b\uf50c\uf50d\uf50e\uf50f\uf510\uf511\uf512\uf513\uf514\uf515\uf516\uf517\uf518\uf519\uf51a\uf51b\uf51c\uf51d\uf51e\uf51f\uf520\uf521\uf522\uf523\uf524\uf525\uf526\uf527\uf528\uf529\uf52a\uf52b\uf52c\uf52d\uf52e\uf52f\uf530\uf531\uf532\uf533\uf534\uf535\uf536\uf537\uf538\uf539\uf53a\uf53b\uf53c\uf53d\uf53e\uf53f\uf540\uf541\uf542\uf543\uf544\uf545\uf546\uf547\uf548\uf549\uf54a\uf54b\uf54c\uf54d\uf54e\uf54f\uf550\uf551\uf552\uf553\uf554\uf555\uf556\uf557\uf558\uf559\uf55a\uf55b\uf55c\uf55d\uf55e\uf55f\uf560\uf561\uf562\uf563\uf564\uf565\uf566\uf567\uf568\uf569\uf56a\uf56b\uf56c\uf56d\uf56e\uf56f\uf570\uf571\uf572\uf573\uf574\uf575\uf576\uf577\uf578\uf579\uf57a\uf57b\uf57c\uf57d\uf57e\uf57f\uf580\uf581\uf582\uf583\uf584\uf585\uf586\uf587\uf588\uf589\uf58a\uf58b\uf58c\uf58d\uf58e\uf58f\uf590\uf591\uf592\uf593\uf594\uf595\uf596\uf597\uf598\uf599\uf59a\uf59b\uf59c\uf59d\uf59e\uf59f\uf5a0\uf5a1\uf5a2\uf5a3\uf5a4\uf5a5\uf5a6\uf5a7\uf5a8\uf5a9\uf5aa\uf5ab\uf5ac\uf5ad\uf5ae\uf5af\uf5b0\uf5b1\uf5b2\uf5b3\uf5b4\uf5b5\uf5b6\uf5b7\uf5b8\uf5b9\uf5ba\uf5bb\uf5bc\uf5bd\uf5be\uf5bf\uf5c0\uf5c1\uf5c2\uf5c3\uf5c4\uf5c5\uf5c6\uf5c7\uf5c8\uf5c9\uf5ca\uf5cb\uf5cc\uf5cd\uf5ce\uf5cf\uf5d0\uf5d1\uf5d2\uf5d3\uf5d4\uf5d5\uf5d6\uf5d7\uf5d8\uf5d9\uf5da\uf5db\uf5dc\uf5dd\uf5de\uf5df\uf5e0\uf5e1\uf5e2\uf5e3\uf5e4\uf5e5\uf5e6\uf5e7\uf5e8\uf5e9\uf5ea\uf5eb\uf5ec\uf5ed\uf5ee\uf5ef\uf5f0\uf5f1\uf5f2\uf5f3\uf5f4\uf5f5\uf5f6\uf5f7\uf5f8\uf5f9\uf5fa\uf5fb\uf5fc\uf5fd\uf5fe\uf5ff\uf600\uf601\uf602\uf603\uf604\uf605\uf606\uf607\uf608\uf609\uf60a\uf60b\uf60c\uf60d\uf60e\uf60f\uf610\uf611\uf612\uf613\uf614\uf615\uf616\uf617\uf618\uf619\uf61a\uf61b\uf61c\uf61d\uf61e\uf61f\uf620\uf621\uf622\uf623\uf624\uf625\uf626\uf627\uf628\uf629\uf62a\uf62b\uf62c\uf62d\uf62e\uf62f\uf630\uf631\uf632\uf633\uf634\uf635\uf636\uf637\uf638\uf639\uf63a\uf63b\uf63c\uf63d\uf63e\uf63f\uf640\uf641\uf642\uf643\uf644\uf645\uf646\uf647\uf648\uf649\uf64a\uf64b\uf64c\uf64d\uf64e\uf64f\uf650\uf651\uf652\uf653\uf654\uf655\uf656\uf657\uf658\uf659\uf65a\uf65b\uf65c\uf65d\uf65e\uf65f\uf660\uf661\uf662\uf663\uf664\uf665\uf666\uf667\uf668\uf669\uf66a\uf66b\uf66c\uf66d\uf66e\uf66f\uf670\uf671\uf672\uf673\uf674\uf675\uf676\uf677\uf678\uf679\uf67a\uf67b\uf67c\uf67d\uf67e\uf67f\uf680\uf681\uf682\uf683\uf684\uf685\uf686\uf687\uf688\uf689\uf68a\uf68b\uf68c\uf68d\uf68e\uf68f\uf690\uf691\uf692\uf693\uf694\uf695\uf696\uf697\uf698\uf699\uf69a\uf69b\uf69c\uf69d\uf69e\uf69f\uf6a0\uf6a1\uf6a2\uf6a3\uf6a4\uf6a5\uf6a6\uf6a7\uf6a8\uf6a9\uf6aa\uf6ab\uf6ac\uf6ad\uf6ae\uf6af\uf6b0\uf6b1\uf6b2\uf6b3\uf6b4\uf6b5\uf6b6\uf6b7\uf6b8\uf6b9\uf6ba\uf6bb\uf6bc\uf6bd\uf6be\uf6bf\uf6c0\uf6c1\uf6c2\uf6c3\uf6c4\uf6c5\uf6c6\uf6c7\uf6c8\uf6c9\uf6ca\uf6cb\uf6cc\uf6cd\uf6ce\uf6cf\uf6d0\uf6d1\uf6d2\uf6d3\uf6d4\uf6d5\uf6d6\uf6d7\uf6d8\uf6d9\uf6da\uf6db\uf6dc\uf6dd\uf6de\uf6df\uf6e0\uf6e1\uf6e2\uf6e3\uf6e4\uf6e5\uf6e6\uf6e7\uf6e8\uf6e9\uf6ea\uf6eb\uf6ec\uf6ed\uf6ee\uf6ef\uf6f0\uf6f1\uf6f2\uf6f3\uf6f4\uf6f5\uf6f6\uf6f7\uf6f8\uf6f9\uf6fa\uf6fb\uf6fc\uf6fd\uf6fe\uf6ff\uf700\uf701\uf702\uf703\uf704\uf705\uf706\uf707\uf708\uf709\uf70a\uf70b\uf70c\uf70d\uf70e\uf70f\uf710\uf711\uf712\uf713\uf714\uf715\uf716\uf717\uf718\uf719\uf71a\uf71b\uf71c\uf71d\uf71e\uf71f\uf720\uf721\uf722\uf723\uf724\uf725\uf726\uf727\uf728\uf729\uf72a\uf72b\uf72c\uf72d\uf72e\uf72f\uf730\uf731\uf732\uf733\uf734\uf735\uf736\uf737\uf738\uf739\uf73a\uf73b\uf73c\uf73d\uf73e\uf73f\uf740\uf741\uf742\uf743\uf744\uf745\uf746\uf747\uf748\uf749\uf74a\uf74b\uf74c\uf74d\uf74e\uf74f\uf750\uf751\uf752\uf753\uf754\uf755\uf756\uf757\uf758\uf759\uf75a\uf75b\uf75c\uf75d\uf75e\uf75f\uf760\uf761\uf762\uf763\uf764\uf765\uf766\uf767\uf768\uf769\uf76a\uf76b\uf76c\uf76d\uf76e\uf76f\uf770\uf771\uf772\uf773\uf774\uf775\uf776\uf777\uf778\uf779\uf77a\uf77b\uf77c\uf77d\uf77e\uf77f\uf780\uf781\uf782\uf783\uf784\uf785\uf786\uf787\uf788\uf789\uf78a\uf78b\uf78c\uf78d\uf78e\uf78f\uf790\uf791\uf792\uf793\uf794\uf795\uf796\uf797\uf798\uf799\uf79a\uf79b\uf79c\uf79d\uf79e\uf79f\uf7a0\uf7a1\uf7a2\uf7a3\uf7a4\uf7a5\uf7a6\uf7a7\uf7a8\uf7a9\uf7aa\uf7ab\uf7ac\uf7ad\uf7ae\uf7af\uf7b0\uf7b1\uf7b2\uf7b3\uf7b4\uf7b5\uf7b6\uf7b7\uf7b8\uf7b9\uf7ba\uf7bb\uf7bc\uf7bd\uf7be\uf7bf\uf7c0\uf7c1\uf7c2\uf7c3\uf7c4\uf7c5\uf7c6\uf7c7\uf7c8\uf7c9\uf7ca\uf7cb\uf7cc\uf7cd\uf7ce\uf7cf\uf7d0\uf7d1\uf7d2\uf7d3\uf7d4\uf7d5\uf7d6\uf7d7\uf7d8\uf7d9\uf7da\uf7db\uf7dc\uf7dd\uf7de\uf7df\uf7e0\uf7e1\uf7e2\uf7e3\uf7e4\uf7e5\uf7e6\uf7e7\uf7e8\uf7e9\uf7ea\uf7eb\uf7ec\uf7ed\uf7ee\uf7ef\uf7f0\uf7f1\uf7f2\uf7f3\uf7f4\uf7f5\uf7f6\uf7f7\uf7f8\uf7f9\uf7fa\uf7fb\uf7fc\uf7fd\uf7fe\uf7ff\uf800\uf801\uf802\uf803\uf804\uf805\uf806\uf807\uf808\uf809\uf80a\uf80b\uf80c\uf80d\uf80e\uf80f\uf810\uf811\uf812\uf813\uf814\uf815\uf816\uf817\uf818\uf819\uf81a\uf81b\uf81c\uf81d\uf81e\uf81f\uf820\uf821\uf822\uf823\uf824\uf825\uf826\uf827\uf828\uf829\uf82a\uf82b\uf82c\uf82d\uf82e\uf82f\uf830\uf831\uf832\uf833\uf834\uf835\uf836\uf837\uf838\uf839\uf83a\uf83b\uf83c\uf83d\uf83e\uf83f\uf840\uf841\uf842\uf843\uf844\uf845\uf846\uf847\uf848\uf849\uf84a\uf84b\uf84c\uf84d\uf84e\uf84f\uf850\uf851\uf852\uf853\uf854\uf855\uf856\uf857\uf858\uf859\uf85a\uf85b\uf85c\uf85d\uf85e\uf85f\uf860\uf861\uf862\uf863\uf864\uf865\uf866\uf867\uf868\uf869\uf86a\uf86b\uf86c\uf86d\uf86e\uf86f\uf870\uf871\uf872\uf873\uf874\uf875\uf876\uf877\uf878\uf879\uf87a\uf87b\uf87c\uf87d\uf87e\uf87f\uf880\uf881\uf882\uf883\uf884\uf885\uf886\uf887\uf888\uf889\uf88a\uf88b\uf88c\uf88d\uf88e\uf88f\uf890\uf891\uf892\uf893\uf894\uf895\uf896\uf897\uf898\uf899\uf89a\uf89b\uf89c\uf89d\uf89e\uf89f\uf8a0\uf8a1\uf8a2\uf8a3\uf8a4\uf8a5\uf8a6\uf8a7\uf8a8\uf8a9\uf8aa\uf8ab\uf8ac\uf8ad\uf8ae\uf8af\uf8b0\uf8b1\uf8b2\uf8b3\uf8b4\uf8b5\uf8b6\uf8b7\uf8b8\uf8b9\uf8ba\uf8bb\uf8bc\uf8bd\uf8be\uf8bf\uf8c0\uf8c1\uf8c2\uf8c3\uf8c4\uf8c5\uf8c6\uf8c7\uf8c8\uf8c9\uf8ca\uf8cb\uf8cc\uf8cd\uf8ce\uf8cf\uf8d0\uf8d1\uf8d2\uf8d3\uf8d4\uf8d5\uf8d6\uf8d7\uf8d8\uf8d9\uf8da\uf8db\uf8dc\uf8dd\uf8de\uf8df\uf8e0\uf8e1\uf8e2\uf8e3\uf8e4\uf8e5\uf8e6\uf8e7\uf8e8\uf8e9\uf8ea\uf8eb\uf8ec\uf8ed\uf8ee\uf8ef\uf8f0\uf8f1\uf8f2\uf8f3\uf8f4\uf8f5\uf8f6\uf8f7\uf8f8\uf8f9\uf8fa\uf8fb\uf8fc\uf8fd\uf8fe\uf8ff' + +try: + Cs = eval(r"'\ud800\ud801\ud802\ud803\ud804\ud805\ud806\ud807\ud808\ud809\ud80a\ud80b\ud80c\ud80d\ud80e\ud80f\ud810\ud811\ud812\ud813\ud814\ud815\ud816\ud817\ud818\ud819\ud81a\ud81b\ud81c\ud81d\ud81e\ud81f\ud820\ud821\ud822\ud823\ud824\ud825\ud826\ud827\ud828\ud829\ud82a\ud82b\ud82c\ud82d\ud82e\ud82f\ud830\ud831\ud832\ud833\ud834\ud835\ud836\ud837\ud838\ud839\ud83a\ud83b\ud83c\ud83d\ud83e\ud83f\ud840\ud841\ud842\ud843\ud844\ud845\ud846\ud847\ud848\ud849\ud84a\ud84b\ud84c\ud84d\ud84e\ud84f\ud850\ud851\ud852\ud853\ud854\ud855\ud856\ud857\ud858\ud859\ud85a\ud85b\ud85c\ud85d\ud85e\ud85f\ud860\ud861\ud862\ud863\ud864\ud865\ud866\ud867\ud868\ud869\ud86a\ud86b\ud86c\ud86d\ud86e\ud86f\ud870\ud871\ud872\ud873\ud874\ud875\ud876\ud877\ud878\ud879\ud87a\ud87b\ud87c\ud87d\ud87e\ud87f\ud880\ud881\ud882\ud883\ud884\ud885\ud886\ud887\ud888\ud889\ud88a\ud88b\ud88c\ud88d\ud88e\ud88f\ud890\ud891\ud892\ud893\ud894\ud895\ud896\ud897\ud898\ud899\ud89a\ud89b\ud89c\ud89d\ud89e\ud89f\ud8a0\ud8a1\ud8a2\ud8a3\ud8a4\ud8a5\ud8a6\ud8a7\ud8a8\ud8a9\ud8aa\ud8ab\ud8ac\ud8ad\ud8ae\ud8af\ud8b0\ud8b1\ud8b2\ud8b3\ud8b4\ud8b5\ud8b6\ud8b7\ud8b8\ud8b9\ud8ba\ud8bb\ud8bc\ud8bd\ud8be\ud8bf\ud8c0\ud8c1\ud8c2\ud8c3\ud8c4\ud8c5\ud8c6\ud8c7\ud8c8\ud8c9\ud8ca\ud8cb\ud8cc\ud8cd\ud8ce\ud8cf\ud8d0\ud8d1\ud8d2\ud8d3\ud8d4\ud8d5\ud8d6\ud8d7\ud8d8\ud8d9\ud8da\ud8db\ud8dc\ud8dd\ud8de\ud8df\ud8e0\ud8e1\ud8e2\ud8e3\ud8e4\ud8e5\ud8e6\ud8e7\ud8e8\ud8e9\ud8ea\ud8eb\ud8ec\ud8ed\ud8ee\ud8ef\ud8f0\ud8f1\ud8f2\ud8f3\ud8f4\ud8f5\ud8f6\ud8f7\ud8f8\ud8f9\ud8fa\ud8fb\ud8fc\ud8fd\ud8fe\ud8ff\ud900\ud901\ud902\ud903\ud904\ud905\ud906\ud907\ud908\ud909\ud90a\ud90b\ud90c\ud90d\ud90e\ud90f\ud910\ud911\ud912\ud913\ud914\ud915\ud916\ud917\ud918\ud919\ud91a\ud91b\ud91c\ud91d\ud91e\ud91f\ud920\ud921\ud922\ud923\ud924\ud925\ud926\ud927\ud928\ud929\ud92a\ud92b\ud92c\ud92d\ud92e\ud92f\ud930\ud931\ud932\ud933\ud934\ud935\ud936\ud937\ud938\ud939\ud93a\ud93b\ud93c\ud93d\ud93e\ud93f\ud940\ud941\ud942\ud943\ud944\ud945\ud946\ud947\ud948\ud949\ud94a\ud94b\ud94c\ud94d\ud94e\ud94f\ud950\ud951\ud952\ud953\ud954\ud955\ud956\ud957\ud958\ud959\ud95a\ud95b\ud95c\ud95d\ud95e\ud95f\ud960\ud961\ud962\ud963\ud964\ud965\ud966\ud967\ud968\ud969\ud96a\ud96b\ud96c\ud96d\ud96e\ud96f\ud970\ud971\ud972\ud973\ud974\ud975\ud976\ud977\ud978\ud979\ud97a\ud97b\ud97c\ud97d\ud97e\ud97f\ud980\ud981\ud982\ud983\ud984\ud985\ud986\ud987\ud988\ud989\ud98a\ud98b\ud98c\ud98d\ud98e\ud98f\ud990\ud991\ud992\ud993\ud994\ud995\ud996\ud997\ud998\ud999\ud99a\ud99b\ud99c\ud99d\ud99e\ud99f\ud9a0\ud9a1\ud9a2\ud9a3\ud9a4\ud9a5\ud9a6\ud9a7\ud9a8\ud9a9\ud9aa\ud9ab\ud9ac\ud9ad\ud9ae\ud9af\ud9b0\ud9b1\ud9b2\ud9b3\ud9b4\ud9b5\ud9b6\ud9b7\ud9b8\ud9b9\ud9ba\ud9bb\ud9bc\ud9bd\ud9be\ud9bf\ud9c0\ud9c1\ud9c2\ud9c3\ud9c4\ud9c5\ud9c6\ud9c7\ud9c8\ud9c9\ud9ca\ud9cb\ud9cc\ud9cd\ud9ce\ud9cf\ud9d0\ud9d1\ud9d2\ud9d3\ud9d4\ud9d5\ud9d6\ud9d7\ud9d8\ud9d9\ud9da\ud9db\ud9dc\ud9dd\ud9de\ud9df\ud9e0\ud9e1\ud9e2\ud9e3\ud9e4\ud9e5\ud9e6\ud9e7\ud9e8\ud9e9\ud9ea\ud9eb\ud9ec\ud9ed\ud9ee\ud9ef\ud9f0\ud9f1\ud9f2\ud9f3\ud9f4\ud9f5\ud9f6\ud9f7\ud9f8\ud9f9\ud9fa\ud9fb\ud9fc\ud9fd\ud9fe\ud9ff\uda00\uda01\uda02\uda03\uda04\uda05\uda06\uda07\uda08\uda09\uda0a\uda0b\uda0c\uda0d\uda0e\uda0f\uda10\uda11\uda12\uda13\uda14\uda15\uda16\uda17\uda18\uda19\uda1a\uda1b\uda1c\uda1d\uda1e\uda1f\uda20\uda21\uda22\uda23\uda24\uda25\uda26\uda27\uda28\uda29\uda2a\uda2b\uda2c\uda2d\uda2e\uda2f\uda30\uda31\uda32\uda33\uda34\uda35\uda36\uda37\uda38\uda39\uda3a\uda3b\uda3c\uda3d\uda3e\uda3f\uda40\uda41\uda42\uda43\uda44\uda45\uda46\uda47\uda48\uda49\uda4a\uda4b\uda4c\uda4d\uda4e\uda4f\uda50\uda51\uda52\uda53\uda54\uda55\uda56\uda57\uda58\uda59\uda5a\uda5b\uda5c\uda5d\uda5e\uda5f\uda60\uda61\uda62\uda63\uda64\uda65\uda66\uda67\uda68\uda69\uda6a\uda6b\uda6c\uda6d\uda6e\uda6f\uda70\uda71\uda72\uda73\uda74\uda75\uda76\uda77\uda78\uda79\uda7a\uda7b\uda7c\uda7d\uda7e\uda7f\uda80\uda81\uda82\uda83\uda84\uda85\uda86\uda87\uda88\uda89\uda8a\uda8b\uda8c\uda8d\uda8e\uda8f\uda90\uda91\uda92\uda93\uda94\uda95\uda96\uda97\uda98\uda99\uda9a\uda9b\uda9c\uda9d\uda9e\uda9f\udaa0\udaa1\udaa2\udaa3\udaa4\udaa5\udaa6\udaa7\udaa8\udaa9\udaaa\udaab\udaac\udaad\udaae\udaaf\udab0\udab1\udab2\udab3\udab4\udab5\udab6\udab7\udab8\udab9\udaba\udabb\udabc\udabd\udabe\udabf\udac0\udac1\udac2\udac3\udac4\udac5\udac6\udac7\udac8\udac9\udaca\udacb\udacc\udacd\udace\udacf\udad0\udad1\udad2\udad3\udad4\udad5\udad6\udad7\udad8\udad9\udada\udadb\udadc\udadd\udade\udadf\udae0\udae1\udae2\udae3\udae4\udae5\udae6\udae7\udae8\udae9\udaea\udaeb\udaec\udaed\udaee\udaef\udaf0\udaf1\udaf2\udaf3\udaf4\udaf5\udaf6\udaf7\udaf8\udaf9\udafa\udafb\udafc\udafd\udafe\udaff\udb00\udb01\udb02\udb03\udb04\udb05\udb06\udb07\udb08\udb09\udb0a\udb0b\udb0c\udb0d\udb0e\udb0f\udb10\udb11\udb12\udb13\udb14\udb15\udb16\udb17\udb18\udb19\udb1a\udb1b\udb1c\udb1d\udb1e\udb1f\udb20\udb21\udb22\udb23\udb24\udb25\udb26\udb27\udb28\udb29\udb2a\udb2b\udb2c\udb2d\udb2e\udb2f\udb30\udb31\udb32\udb33\udb34\udb35\udb36\udb37\udb38\udb39\udb3a\udb3b\udb3c\udb3d\udb3e\udb3f\udb40\udb41\udb42\udb43\udb44\udb45\udb46\udb47\udb48\udb49\udb4a\udb4b\udb4c\udb4d\udb4e\udb4f\udb50\udb51\udb52\udb53\udb54\udb55\udb56\udb57\udb58\udb59\udb5a\udb5b\udb5c\udb5d\udb5e\udb5f\udb60\udb61\udb62\udb63\udb64\udb65\udb66\udb67\udb68\udb69\udb6a\udb6b\udb6c\udb6d\udb6e\udb6f\udb70\udb71\udb72\udb73\udb74\udb75\udb76\udb77\udb78\udb79\udb7a\udb7b\udb7c\udb7d\udb7e\udb7f\udb80\udb81\udb82\udb83\udb84\udb85\udb86\udb87\udb88\udb89\udb8a\udb8b\udb8c\udb8d\udb8e\udb8f\udb90\udb91\udb92\udb93\udb94\udb95\udb96\udb97\udb98\udb99\udb9a\udb9b\udb9c\udb9d\udb9e\udb9f\udba0\udba1\udba2\udba3\udba4\udba5\udba6\udba7\udba8\udba9\udbaa\udbab\udbac\udbad\udbae\udbaf\udbb0\udbb1\udbb2\udbb3\udbb4\udbb5\udbb6\udbb7\udbb8\udbb9\udbba\udbbb\udbbc\udbbd\udbbe\udbbf\udbc0\udbc1\udbc2\udbc3\udbc4\udbc5\udbc6\udbc7\udbc8\udbc9\udbca\udbcb\udbcc\udbcd\udbce\udbcf\udbd0\udbd1\udbd2\udbd3\udbd4\udbd5\udbd6\udbd7\udbd8\udbd9\udbda\udbdb\udbdc\udbdd\udbde\udbdf\udbe0\udbe1\udbe2\udbe3\udbe4\udbe5\udbe6\udbe7\udbe8\udbe9\udbea\udbeb\udbec\udbed\udbee\udbef\udbf0\udbf1\udbf2\udbf3\udbf4\udbf5\udbf6\udbf7\udbf8\udbf9\udbfa\udbfb\udbfc\udbfd\udbfe\U0010fc00\udc01\udc02\udc03\udc04\udc05\udc06\udc07\udc08\udc09\udc0a\udc0b\udc0c\udc0d\udc0e\udc0f\udc10\udc11\udc12\udc13\udc14\udc15\udc16\udc17\udc18\udc19\udc1a\udc1b\udc1c\udc1d\udc1e\udc1f\udc20\udc21\udc22\udc23\udc24\udc25\udc26\udc27\udc28\udc29\udc2a\udc2b\udc2c\udc2d\udc2e\udc2f\udc30\udc31\udc32\udc33\udc34\udc35\udc36\udc37\udc38\udc39\udc3a\udc3b\udc3c\udc3d\udc3e\udc3f\udc40\udc41\udc42\udc43\udc44\udc45\udc46\udc47\udc48\udc49\udc4a\udc4b\udc4c\udc4d\udc4e\udc4f\udc50\udc51\udc52\udc53\udc54\udc55\udc56\udc57\udc58\udc59\udc5a\udc5b\udc5c\udc5d\udc5e\udc5f\udc60\udc61\udc62\udc63\udc64\udc65\udc66\udc67\udc68\udc69\udc6a\udc6b\udc6c\udc6d\udc6e\udc6f\udc70\udc71\udc72\udc73\udc74\udc75\udc76\udc77\udc78\udc79\udc7a\udc7b\udc7c\udc7d\udc7e\udc7f\udc80\udc81\udc82\udc83\udc84\udc85\udc86\udc87\udc88\udc89\udc8a\udc8b\udc8c\udc8d\udc8e\udc8f\udc90\udc91\udc92\udc93\udc94\udc95\udc96\udc97\udc98\udc99\udc9a\udc9b\udc9c\udc9d\udc9e\udc9f\udca0\udca1\udca2\udca3\udca4\udca5\udca6\udca7\udca8\udca9\udcaa\udcab\udcac\udcad\udcae\udcaf\udcb0\udcb1\udcb2\udcb3\udcb4\udcb5\udcb6\udcb7\udcb8\udcb9\udcba\udcbb\udcbc\udcbd\udcbe\udcbf\udcc0\udcc1\udcc2\udcc3\udcc4\udcc5\udcc6\udcc7\udcc8\udcc9\udcca\udccb\udccc\udccd\udcce\udccf\udcd0\udcd1\udcd2\udcd3\udcd4\udcd5\udcd6\udcd7\udcd8\udcd9\udcda\udcdb\udcdc\udcdd\udcde\udcdf\udce0\udce1\udce2\udce3\udce4\udce5\udce6\udce7\udce8\udce9\udcea\udceb\udcec\udced\udcee\udcef\udcf0\udcf1\udcf2\udcf3\udcf4\udcf5\udcf6\udcf7\udcf8\udcf9\udcfa\udcfb\udcfc\udcfd\udcfe\udcff\udd00\udd01\udd02\udd03\udd04\udd05\udd06\udd07\udd08\udd09\udd0a\udd0b\udd0c\udd0d\udd0e\udd0f\udd10\udd11\udd12\udd13\udd14\udd15\udd16\udd17\udd18\udd19\udd1a\udd1b\udd1c\udd1d\udd1e\udd1f\udd20\udd21\udd22\udd23\udd24\udd25\udd26\udd27\udd28\udd29\udd2a\udd2b\udd2c\udd2d\udd2e\udd2f\udd30\udd31\udd32\udd33\udd34\udd35\udd36\udd37\udd38\udd39\udd3a\udd3b\udd3c\udd3d\udd3e\udd3f\udd40\udd41\udd42\udd43\udd44\udd45\udd46\udd47\udd48\udd49\udd4a\udd4b\udd4c\udd4d\udd4e\udd4f\udd50\udd51\udd52\udd53\udd54\udd55\udd56\udd57\udd58\udd59\udd5a\udd5b\udd5c\udd5d\udd5e\udd5f\udd60\udd61\udd62\udd63\udd64\udd65\udd66\udd67\udd68\udd69\udd6a\udd6b\udd6c\udd6d\udd6e\udd6f\udd70\udd71\udd72\udd73\udd74\udd75\udd76\udd77\udd78\udd79\udd7a\udd7b\udd7c\udd7d\udd7e\udd7f\udd80\udd81\udd82\udd83\udd84\udd85\udd86\udd87\udd88\udd89\udd8a\udd8b\udd8c\udd8d\udd8e\udd8f\udd90\udd91\udd92\udd93\udd94\udd95\udd96\udd97\udd98\udd99\udd9a\udd9b\udd9c\udd9d\udd9e\udd9f\udda0\udda1\udda2\udda3\udda4\udda5\udda6\udda7\udda8\udda9\uddaa\uddab\uddac\uddad\uddae\uddaf\uddb0\uddb1\uddb2\uddb3\uddb4\uddb5\uddb6\uddb7\uddb8\uddb9\uddba\uddbb\uddbc\uddbd\uddbe\uddbf\uddc0\uddc1\uddc2\uddc3\uddc4\uddc5\uddc6\uddc7\uddc8\uddc9\uddca\uddcb\uddcc\uddcd\uddce\uddcf\uddd0\uddd1\uddd2\uddd3\uddd4\uddd5\uddd6\uddd7\uddd8\uddd9\uddda\udddb\udddc\udddd\uddde\udddf\udde0\udde1\udde2\udde3\udde4\udde5\udde6\udde7\udde8\udde9\uddea\uddeb\uddec\udded\uddee\uddef\uddf0\uddf1\uddf2\uddf3\uddf4\uddf5\uddf6\uddf7\uddf8\uddf9\uddfa\uddfb\uddfc\uddfd\uddfe\uddff\ude00\ude01\ude02\ude03\ude04\ude05\ude06\ude07\ude08\ude09\ude0a\ude0b\ude0c\ude0d\ude0e\ude0f\ude10\ude11\ude12\ude13\ude14\ude15\ude16\ude17\ude18\ude19\ude1a\ude1b\ude1c\ude1d\ude1e\ude1f\ude20\ude21\ude22\ude23\ude24\ude25\ude26\ude27\ude28\ude29\ude2a\ude2b\ude2c\ude2d\ude2e\ude2f\ude30\ude31\ude32\ude33\ude34\ude35\ude36\ude37\ude38\ude39\ude3a\ude3b\ude3c\ude3d\ude3e\ude3f\ude40\ude41\ude42\ude43\ude44\ude45\ude46\ude47\ude48\ude49\ude4a\ude4b\ude4c\ude4d\ude4e\ude4f\ude50\ude51\ude52\ude53\ude54\ude55\ude56\ude57\ude58\ude59\ude5a\ude5b\ude5c\ude5d\ude5e\ude5f\ude60\ude61\ude62\ude63\ude64\ude65\ude66\ude67\ude68\ude69\ude6a\ude6b\ude6c\ude6d\ude6e\ude6f\ude70\ude71\ude72\ude73\ude74\ude75\ude76\ude77\ude78\ude79\ude7a\ude7b\ude7c\ude7d\ude7e\ude7f\ude80\ude81\ude82\ude83\ude84\ude85\ude86\ude87\ude88\ude89\ude8a\ude8b\ude8c\ude8d\ude8e\ude8f\ude90\ude91\ude92\ude93\ude94\ude95\ude96\ude97\ude98\ude99\ude9a\ude9b\ude9c\ude9d\ude9e\ude9f\udea0\udea1\udea2\udea3\udea4\udea5\udea6\udea7\udea8\udea9\udeaa\udeab\udeac\udead\udeae\udeaf\udeb0\udeb1\udeb2\udeb3\udeb4\udeb5\udeb6\udeb7\udeb8\udeb9\udeba\udebb\udebc\udebd\udebe\udebf\udec0\udec1\udec2\udec3\udec4\udec5\udec6\udec7\udec8\udec9\udeca\udecb\udecc\udecd\udece\udecf\uded0\uded1\uded2\uded3\uded4\uded5\uded6\uded7\uded8\uded9\udeda\udedb\udedc\udedd\udede\udedf\udee0\udee1\udee2\udee3\udee4\udee5\udee6\udee7\udee8\udee9\udeea\udeeb\udeec\udeed\udeee\udeef\udef0\udef1\udef2\udef3\udef4\udef5\udef6\udef7\udef8\udef9\udefa\udefb\udefc\udefd\udefe\udeff\udf00\udf01\udf02\udf03\udf04\udf05\udf06\udf07\udf08\udf09\udf0a\udf0b\udf0c\udf0d\udf0e\udf0f\udf10\udf11\udf12\udf13\udf14\udf15\udf16\udf17\udf18\udf19\udf1a\udf1b\udf1c\udf1d\udf1e\udf1f\udf20\udf21\udf22\udf23\udf24\udf25\udf26\udf27\udf28\udf29\udf2a\udf2b\udf2c\udf2d\udf2e\udf2f\udf30\udf31\udf32\udf33\udf34\udf35\udf36\udf37\udf38\udf39\udf3a\udf3b\udf3c\udf3d\udf3e\udf3f\udf40\udf41\udf42\udf43\udf44\udf45\udf46\udf47\udf48\udf49\udf4a\udf4b\udf4c\udf4d\udf4e\udf4f\udf50\udf51\udf52\udf53\udf54\udf55\udf56\udf57\udf58\udf59\udf5a\udf5b\udf5c\udf5d\udf5e\udf5f\udf60\udf61\udf62\udf63\udf64\udf65\udf66\udf67\udf68\udf69\udf6a\udf6b\udf6c\udf6d\udf6e\udf6f\udf70\udf71\udf72\udf73\udf74\udf75\udf76\udf77\udf78\udf79\udf7a\udf7b\udf7c\udf7d\udf7e\udf7f\udf80\udf81\udf82\udf83\udf84\udf85\udf86\udf87\udf88\udf89\udf8a\udf8b\udf8c\udf8d\udf8e\udf8f\udf90\udf91\udf92\udf93\udf94\udf95\udf96\udf97\udf98\udf99\udf9a\udf9b\udf9c\udf9d\udf9e\udf9f\udfa0\udfa1\udfa2\udfa3\udfa4\udfa5\udfa6\udfa7\udfa8\udfa9\udfaa\udfab\udfac\udfad\udfae\udfaf\udfb0\udfb1\udfb2\udfb3\udfb4\udfb5\udfb6\udfb7\udfb8\udfb9\udfba\udfbb\udfbc\udfbd\udfbe\udfbf\udfc0\udfc1\udfc2\udfc3\udfc4\udfc5\udfc6\udfc7\udfc8\udfc9\udfca\udfcb\udfcc\udfcd\udfce\udfcf\udfd0\udfd1\udfd2\udfd3\udfd4\udfd5\udfd6\udfd7\udfd8\udfd9\udfda\udfdb\udfdc\udfdd\udfde\udfdf\udfe0\udfe1\udfe2\udfe3\udfe4\udfe5\udfe6\udfe7\udfe8\udfe9\udfea\udfeb\udfec\udfed\udfee\udfef\udff0\udff1\udff2\udff3\udff4\udff5\udff6\udff7\udff8\udff9\udffa\udffb\udffc\udffd\udffe\udfff'") +except UnicodeDecodeError: + Cs = '' # Jython can't handle isolated surrogates + +Ll = u'abcdefghijklmnopqrstuvwxyz\xaa\xb5\xba\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff\u0101\u0103\u0105\u0107\u0109\u010b\u010d\u010f\u0111\u0113\u0115\u0117\u0119\u011b\u011d\u011f\u0121\u0123\u0125\u0127\u0129\u012b\u012d\u012f\u0131\u0133\u0135\u0137\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u0149\u014b\u014d\u014f\u0151\u0153\u0155\u0157\u0159\u015b\u015d\u015f\u0161\u0163\u0165\u0167\u0169\u016b\u016d\u016f\u0171\u0173\u0175\u0177\u017a\u017c\u017e\u017f\u0180\u0183\u0185\u0188\u018c\u018d\u0192\u0195\u0199\u019a\u019b\u019e\u01a1\u01a3\u01a5\u01a8\u01aa\u01ab\u01ad\u01b0\u01b4\u01b6\u01b9\u01ba\u01bd\u01be\u01bf\u01c6\u01c9\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc\u01dd\u01df\u01e1\u01e3\u01e5\u01e7\u01e9\u01eb\u01ed\u01ef\u01f0\u01f3\u01f5\u01f9\u01fb\u01fd\u01ff\u0201\u0203\u0205\u0207\u0209\u020b\u020d\u020f\u0211\u0213\u0215\u0217\u0219\u021b\u021d\u021f\u0221\u0223\u0225\u0227\u0229\u022b\u022d\u022f\u0231\u0233\u0234\u0235\u0236\u0237\u0238\u0239\u023c\u023f\u0240\u0250\u0251\u0252\u0253\u0254\u0255\u0256\u0257\u0258\u0259\u025a\u025b\u025c\u025d\u025e\u025f\u0260\u0261\u0262\u0263\u0264\u0265\u0266\u0267\u0268\u0269\u026a\u026b\u026c\u026d\u026e\u026f\u0270\u0271\u0272\u0273\u0274\u0275\u0276\u0277\u0278\u0279\u027a\u027b\u027c\u027d\u027e\u027f\u0280\u0281\u0282\u0283\u0284\u0285\u0286\u0287\u0288\u0289\u028a\u028b\u028c\u028d\u028e\u028f\u0290\u0291\u0292\u0293\u0294\u0295\u0296\u0297\u0298\u0299\u029a\u029b\u029c\u029d\u029e\u029f\u02a0\u02a1\u02a2\u02a3\u02a4\u02a5\u02a6\u02a7\u02a8\u02a9\u02aa\u02ab\u02ac\u02ad\u02ae\u02af\u0390\u03ac\u03ad\u03ae\u03af\u03b0\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\u03ca\u03cb\u03cc\u03cd\u03ce\u03d0\u03d1\u03d5\u03d6\u03d7\u03d9\u03db\u03dd\u03df\u03e1\u03e3\u03e5\u03e7\u03e9\u03eb\u03ed\u03ef\u03f0\u03f1\u03f2\u03f3\u03f5\u03f8\u03fb\u03fc\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u0450\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045a\u045b\u045c\u045d\u045e\u045f\u0461\u0463\u0465\u0467\u0469\u046b\u046d\u046f\u0471\u0473\u0475\u0477\u0479\u047b\u047d\u047f\u0481\u048b\u048d\u048f\u0491\u0493\u0495\u0497\u0499\u049b\u049d\u049f\u04a1\u04a3\u04a5\u04a7\u04a9\u04ab\u04ad\u04af\u04b1\u04b3\u04b5\u04b7\u04b9\u04bb\u04bd\u04bf\u04c2\u04c4\u04c6\u04c8\u04ca\u04cc\u04ce\u04d1\u04d3\u04d5\u04d7\u04d9\u04db\u04dd\u04df\u04e1\u04e3\u04e5\u04e7\u04e9\u04eb\u04ed\u04ef\u04f1\u04f3\u04f5\u04f7\u04f9\u0501\u0503\u0505\u0507\u0509\u050b\u050d\u050f\u0561\u0562\u0563\u0564\u0565\u0566\u0567\u0568\u0569\u056a\u056b\u056c\u056d\u056e\u056f\u0570\u0571\u0572\u0573\u0574\u0575\u0576\u0577\u0578\u0579\u057a\u057b\u057c\u057d\u057e\u057f\u0580\u0581\u0582\u0583\u0584\u0585\u0586\u0587\u1d00\u1d01\u1d02\u1d03\u1d04\u1d05\u1d06\u1d07\u1d08\u1d09\u1d0a\u1d0b\u1d0c\u1d0d\u1d0e\u1d0f\u1d10\u1d11\u1d12\u1d13\u1d14\u1d15\u1d16\u1d17\u1d18\u1d19\u1d1a\u1d1b\u1d1c\u1d1d\u1d1e\u1d1f\u1d20\u1d21\u1d22\u1d23\u1d24\u1d25\u1d26\u1d27\u1d28\u1d29\u1d2a\u1d2b\u1d62\u1d63\u1d64\u1d65\u1d66\u1d67\u1d68\u1d69\u1d6a\u1d6b\u1d6c\u1d6d\u1d6e\u1d6f\u1d70\u1d71\u1d72\u1d73\u1d74\u1d75\u1d76\u1d77\u1d79\u1d7a\u1d7b\u1d7c\u1d7d\u1d7e\u1d7f\u1d80\u1d81\u1d82\u1d83\u1d84\u1d85\u1d86\u1d87\u1d88\u1d89\u1d8a\u1d8b\u1d8c\u1d8d\u1d8e\u1d8f\u1d90\u1d91\u1d92\u1d93\u1d94\u1d95\u1d96\u1d97\u1d98\u1d99\u1d9a\u1e01\u1e03\u1e05\u1e07\u1e09\u1e0b\u1e0d\u1e0f\u1e11\u1e13\u1e15\u1e17\u1e19\u1e1b\u1e1d\u1e1f\u1e21\u1e23\u1e25\u1e27\u1e29\u1e2b\u1e2d\u1e2f\u1e31\u1e33\u1e35\u1e37\u1e39\u1e3b\u1e3d\u1e3f\u1e41\u1e43\u1e45\u1e47\u1e49\u1e4b\u1e4d\u1e4f\u1e51\u1e53\u1e55\u1e57\u1e59\u1e5b\u1e5d\u1e5f\u1e61\u1e63\u1e65\u1e67\u1e69\u1e6b\u1e6d\u1e6f\u1e71\u1e73\u1e75\u1e77\u1e79\u1e7b\u1e7d\u1e7f\u1e81\u1e83\u1e85\u1e87\u1e89\u1e8b\u1e8d\u1e8f\u1e91\u1e93\u1e95\u1e96\u1e97\u1e98\u1e99\u1e9a\u1e9b\u1ea1\u1ea3\u1ea5\u1ea7\u1ea9\u1eab\u1ead\u1eaf\u1eb1\u1eb3\u1eb5\u1eb7\u1eb9\u1ebb\u1ebd\u1ebf\u1ec1\u1ec3\u1ec5\u1ec7\u1ec9\u1ecb\u1ecd\u1ecf\u1ed1\u1ed3\u1ed5\u1ed7\u1ed9\u1edb\u1edd\u1edf\u1ee1\u1ee3\u1ee5\u1ee7\u1ee9\u1eeb\u1eed\u1eef\u1ef1\u1ef3\u1ef5\u1ef7\u1ef9\u1f00\u1f01\u1f02\u1f03\u1f04\u1f05\u1f06\u1f07\u1f10\u1f11\u1f12\u1f13\u1f14\u1f15\u1f20\u1f21\u1f22\u1f23\u1f24\u1f25\u1f26\u1f27\u1f30\u1f31\u1f32\u1f33\u1f34\u1f35\u1f36\u1f37\u1f40\u1f41\u1f42\u1f43\u1f44\u1f45\u1f50\u1f51\u1f52\u1f53\u1f54\u1f55\u1f56\u1f57\u1f60\u1f61\u1f62\u1f63\u1f64\u1f65\u1f66\u1f67\u1f70\u1f71\u1f72\u1f73\u1f74\u1f75\u1f76\u1f77\u1f78\u1f79\u1f7a\u1f7b\u1f7c\u1f7d\u1f80\u1f81\u1f82\u1f83\u1f84\u1f85\u1f86\u1f87\u1f90\u1f91\u1f92\u1f93\u1f94\u1f95\u1f96\u1f97\u1fa0\u1fa1\u1fa2\u1fa3\u1fa4\u1fa5\u1fa6\u1fa7\u1fb0\u1fb1\u1fb2\u1fb3\u1fb4\u1fb6\u1fb7\u1fbe\u1fc2\u1fc3\u1fc4\u1fc6\u1fc7\u1fd0\u1fd1\u1fd2\u1fd3\u1fd6\u1fd7\u1fe0\u1fe1\u1fe2\u1fe3\u1fe4\u1fe5\u1fe6\u1fe7\u1ff2\u1ff3\u1ff4\u1ff6\u1ff7\u2071\u207f\u210a\u210e\u210f\u2113\u212f\u2134\u2139\u213c\u213d\u2146\u2147\u2148\u2149\u2c30\u2c31\u2c32\u2c33\u2c34\u2c35\u2c36\u2c37\u2c38\u2c39\u2c3a\u2c3b\u2c3c\u2c3d\u2c3e\u2c3f\u2c40\u2c41\u2c42\u2c43\u2c44\u2c45\u2c46\u2c47\u2c48\u2c49\u2c4a\u2c4b\u2c4c\u2c4d\u2c4e\u2c4f\u2c50\u2c51\u2c52\u2c53\u2c54\u2c55\u2c56\u2c57\u2c58\u2c59\u2c5a\u2c5b\u2c5c\u2c5d\u2c5e\u2c81\u2c83\u2c85\u2c87\u2c89\u2c8b\u2c8d\u2c8f\u2c91\u2c93\u2c95\u2c97\u2c99\u2c9b\u2c9d\u2c9f\u2ca1\u2ca3\u2ca5\u2ca7\u2ca9\u2cab\u2cad\u2caf\u2cb1\u2cb3\u2cb5\u2cb7\u2cb9\u2cbb\u2cbd\u2cbf\u2cc1\u2cc3\u2cc5\u2cc7\u2cc9\u2ccb\u2ccd\u2ccf\u2cd1\u2cd3\u2cd5\u2cd7\u2cd9\u2cdb\u2cdd\u2cdf\u2ce1\u2ce3\u2ce4\u2d00\u2d01\u2d02\u2d03\u2d04\u2d05\u2d06\u2d07\u2d08\u2d09\u2d0a\u2d0b\u2d0c\u2d0d\u2d0e\u2d0f\u2d10\u2d11\u2d12\u2d13\u2d14\u2d15\u2d16\u2d17\u2d18\u2d19\u2d1a\u2d1b\u2d1c\u2d1d\u2d1e\u2d1f\u2d20\u2d21\u2d22\u2d23\u2d24\u2d25\ufb00\ufb01\ufb02\ufb03\ufb04\ufb05\ufb06\ufb13\ufb14\ufb15\ufb16\ufb17\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a' + +Lm = u'\u02b0\u02b1\u02b2\u02b3\u02b4\u02b5\u02b6\u02b7\u02b8\u02b9\u02ba\u02bb\u02bc\u02bd\u02be\u02bf\u02c0\u02c1\u02c6\u02c7\u02c8\u02c9\u02ca\u02cb\u02cc\u02cd\u02ce\u02cf\u02d0\u02d1\u02e0\u02e1\u02e2\u02e3\u02e4\u02ee\u037a\u0559\u0640\u06e5\u06e6\u0e46\u0ec6\u10fc\u17d7\u1843\u1d2c\u1d2d\u1d2e\u1d2f\u1d30\u1d31\u1d32\u1d33\u1d34\u1d35\u1d36\u1d37\u1d38\u1d39\u1d3a\u1d3b\u1d3c\u1d3d\u1d3e\u1d3f\u1d40\u1d41\u1d42\u1d43\u1d44\u1d45\u1d46\u1d47\u1d48\u1d49\u1d4a\u1d4b\u1d4c\u1d4d\u1d4e\u1d4f\u1d50\u1d51\u1d52\u1d53\u1d54\u1d55\u1d56\u1d57\u1d58\u1d59\u1d5a\u1d5b\u1d5c\u1d5d\u1d5e\u1d5f\u1d60\u1d61\u1d78\u1d9b\u1d9c\u1d9d\u1d9e\u1d9f\u1da0\u1da1\u1da2\u1da3\u1da4\u1da5\u1da6\u1da7\u1da8\u1da9\u1daa\u1dab\u1dac\u1dad\u1dae\u1daf\u1db0\u1db1\u1db2\u1db3\u1db4\u1db5\u1db6\u1db7\u1db8\u1db9\u1dba\u1dbb\u1dbc\u1dbd\u1dbe\u1dbf\u2090\u2091\u2092\u2093\u2094\u2d6f\u3005\u3031\u3032\u3033\u3034\u3035\u303b\u309d\u309e\u30fc\u30fd\u30fe\ua015\uff70\uff9e\uff9f' + +Lo = u'\u01bb\u01c0\u01c1\u01c2\u01c3\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\u05f0\u05f1\u05f2\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063a\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064a\u066e\u066f\u0671\u0672\u0673\u0674\u0675\u0676\u0677\u0678\u0679\u067a\u067b\u067c\u067d\u067e\u067f\u0680\u0681\u0682\u0683\u0684\u0685\u0686\u0687\u0688\u0689\u068a\u068b\u068c\u068d\u068e\u068f\u0690\u0691\u0692\u0693\u0694\u0695\u0696\u0697\u0698\u0699\u069a\u069b\u069c\u069d\u069e\u069f\u06a0\u06a1\u06a2\u06a3\u06a4\u06a5\u06a6\u06a7\u06a8\u06a9\u06aa\u06ab\u06ac\u06ad\u06ae\u06af\u06b0\u06b1\u06b2\u06b3\u06b4\u06b5\u06b6\u06b7\u06b8\u06b9\u06ba\u06bb\u06bc\u06bd\u06be\u06bf\u06c0\u06c1\u06c2\u06c3\u06c4\u06c5\u06c6\u06c7\u06c8\u06c9\u06ca\u06cb\u06cc\u06cd\u06ce\u06cf\u06d0\u06d1\u06d2\u06d3\u06d5\u06ee\u06ef\u06fa\u06fb\u06fc\u06ff\u0710\u0712\u0713\u0714\u0715\u0716\u0717\u0718\u0719\u071a\u071b\u071c\u071d\u071e\u071f\u0720\u0721\u0722\u0723\u0724\u0725\u0726\u0727\u0728\u0729\u072a\u072b\u072c\u072d\u072e\u072f\u074d\u074e\u074f\u0750\u0751\u0752\u0753\u0754\u0755\u0756\u0757\u0758\u0759\u075a\u075b\u075c\u075d\u075e\u075f\u0760\u0761\u0762\u0763\u0764\u0765\u0766\u0767\u0768\u0769\u076a\u076b\u076c\u076d\u0780\u0781\u0782\u0783\u0784\u0785\u0786\u0787\u0788\u0789\u078a\u078b\u078c\u078d\u078e\u078f\u0790\u0791\u0792\u0793\u0794\u0795\u0796\u0797\u0798\u0799\u079a\u079b\u079c\u079d\u079e\u079f\u07a0\u07a1\u07a2\u07a3\u07a4\u07a5\u07b1\u0904\u0905\u0906\u0907\u0908\u0909\u090a\u090b\u090c\u090d\u090e\u090f\u0910\u0911\u0912\u0913\u0914\u0915\u0916\u0917\u0918\u0919\u091a\u091b\u091c\u091d\u091e\u091f\u0920\u0921\u0922\u0923\u0924\u0925\u0926\u0927\u0928\u0929\u092a\u092b\u092c\u092d\u092e\u092f\u0930\u0931\u0932\u0933\u0934\u0935\u0936\u0937\u0938\u0939\u093d\u0950\u0958\u0959\u095a\u095b\u095c\u095d\u095e\u095f\u0960\u0961\u097d\u0985\u0986\u0987\u0988\u0989\u098a\u098b\u098c\u098f\u0990\u0993\u0994\u0995\u0996\u0997\u0998\u0999\u099a\u099b\u099c\u099d\u099e\u099f\u09a0\u09a1\u09a2\u09a3\u09a4\u09a5\u09a6\u09a7\u09a8\u09aa\u09ab\u09ac\u09ad\u09ae\u09af\u09b0\u09b2\u09b6\u09b7\u09b8\u09b9\u09bd\u09ce\u09dc\u09dd\u09df\u09e0\u09e1\u09f0\u09f1\u0a05\u0a06\u0a07\u0a08\u0a09\u0a0a\u0a0f\u0a10\u0a13\u0a14\u0a15\u0a16\u0a17\u0a18\u0a19\u0a1a\u0a1b\u0a1c\u0a1d\u0a1e\u0a1f\u0a20\u0a21\u0a22\u0a23\u0a24\u0a25\u0a26\u0a27\u0a28\u0a2a\u0a2b\u0a2c\u0a2d\u0a2e\u0a2f\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59\u0a5a\u0a5b\u0a5c\u0a5e\u0a72\u0a73\u0a74\u0a85\u0a86\u0a87\u0a88\u0a89\u0a8a\u0a8b\u0a8c\u0a8d\u0a8f\u0a90\u0a91\u0a93\u0a94\u0a95\u0a96\u0a97\u0a98\u0a99\u0a9a\u0a9b\u0a9c\u0a9d\u0a9e\u0a9f\u0aa0\u0aa1\u0aa2\u0aa3\u0aa4\u0aa5\u0aa6\u0aa7\u0aa8\u0aaa\u0aab\u0aac\u0aad\u0aae\u0aaf\u0ab0\u0ab2\u0ab3\u0ab5\u0ab6\u0ab7\u0ab8\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05\u0b06\u0b07\u0b08\u0b09\u0b0a\u0b0b\u0b0c\u0b0f\u0b10\u0b13\u0b14\u0b15\u0b16\u0b17\u0b18\u0b19\u0b1a\u0b1b\u0b1c\u0b1d\u0b1e\u0b1f\u0b20\u0b21\u0b22\u0b23\u0b24\u0b25\u0b26\u0b27\u0b28\u0b2a\u0b2b\u0b2c\u0b2d\u0b2e\u0b2f\u0b30\u0b32\u0b33\u0b35\u0b36\u0b37\u0b38\u0b39\u0b3d\u0b5c\u0b5d\u0b5f\u0b60\u0b61\u0b71\u0b83\u0b85\u0b86\u0b87\u0b88\u0b89\u0b8a\u0b8e\u0b8f\u0b90\u0b92\u0b93\u0b94\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8\u0ba9\u0baa\u0bae\u0baf\u0bb0\u0bb1\u0bb2\u0bb3\u0bb4\u0bb5\u0bb6\u0bb7\u0bb8\u0bb9\u0c05\u0c06\u0c07\u0c08\u0c09\u0c0a\u0c0b\u0c0c\u0c0e\u0c0f\u0c10\u0c12\u0c13\u0c14\u0c15\u0c16\u0c17\u0c18\u0c19\u0c1a\u0c1b\u0c1c\u0c1d\u0c1e\u0c1f\u0c20\u0c21\u0c22\u0c23\u0c24\u0c25\u0c26\u0c27\u0c28\u0c2a\u0c2b\u0c2c\u0c2d\u0c2e\u0c2f\u0c30\u0c31\u0c32\u0c33\u0c35\u0c36\u0c37\u0c38\u0c39\u0c60\u0c61\u0c85\u0c86\u0c87\u0c88\u0c89\u0c8a\u0c8b\u0c8c\u0c8e\u0c8f\u0c90\u0c92\u0c93\u0c94\u0c95\u0c96\u0c97\u0c98\u0c99\u0c9a\u0c9b\u0c9c\u0c9d\u0c9e\u0c9f\u0ca0\u0ca1\u0ca2\u0ca3\u0ca4\u0ca5\u0ca6\u0ca7\u0ca8\u0caa\u0cab\u0cac\u0cad\u0cae\u0caf\u0cb0\u0cb1\u0cb2\u0cb3\u0cb5\u0cb6\u0cb7\u0cb8\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0d05\u0d06\u0d07\u0d08\u0d09\u0d0a\u0d0b\u0d0c\u0d0e\u0d0f\u0d10\u0d12\u0d13\u0d14\u0d15\u0d16\u0d17\u0d18\u0d19\u0d1a\u0d1b\u0d1c\u0d1d\u0d1e\u0d1f\u0d20\u0d21\u0d22\u0d23\u0d24\u0d25\u0d26\u0d27\u0d28\u0d2a\u0d2b\u0d2c\u0d2d\u0d2e\u0d2f\u0d30\u0d31\u0d32\u0d33\u0d34\u0d35\u0d36\u0d37\u0d38\u0d39\u0d60\u0d61\u0d85\u0d86\u0d87\u0d88\u0d89\u0d8a\u0d8b\u0d8c\u0d8d\u0d8e\u0d8f\u0d90\u0d91\u0d92\u0d93\u0d94\u0d95\u0d96\u0d9a\u0d9b\u0d9c\u0d9d\u0d9e\u0d9f\u0da0\u0da1\u0da2\u0da3\u0da4\u0da5\u0da6\u0da7\u0da8\u0da9\u0daa\u0dab\u0dac\u0dad\u0dae\u0daf\u0db0\u0db1\u0db3\u0db4\u0db5\u0db6\u0db7\u0db8\u0db9\u0dba\u0dbb\u0dbd\u0dc0\u0dc1\u0dc2\u0dc3\u0dc4\u0dc5\u0dc6\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e32\u0e33\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94\u0e95\u0e96\u0e97\u0e99\u0e9a\u0e9b\u0e9c\u0e9d\u0e9e\u0e9f\u0ea1\u0ea2\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead\u0eae\u0eaf\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0\u0ec1\u0ec2\u0ec3\u0ec4\u0edc\u0edd\u0f00\u0f40\u0f41\u0f42\u0f43\u0f44\u0f45\u0f46\u0f47\u0f49\u0f4a\u0f4b\u0f4c\u0f4d\u0f4e\u0f4f\u0f50\u0f51\u0f52\u0f53\u0f54\u0f55\u0f56\u0f57\u0f58\u0f59\u0f5a\u0f5b\u0f5c\u0f5d\u0f5e\u0f5f\u0f60\u0f61\u0f62\u0f63\u0f64\u0f65\u0f66\u0f67\u0f68\u0f69\u0f6a\u0f88\u0f89\u0f8a\u0f8b\u1000\u1001\u1002\u1003\u1004\u1005\u1006\u1007\u1008\u1009\u100a\u100b\u100c\u100d\u100e\u100f\u1010\u1011\u1012\u1013\u1014\u1015\u1016\u1017\u1018\u1019\u101a\u101b\u101c\u101d\u101e\u101f\u1020\u1021\u1023\u1024\u1025\u1026\u1027\u1029\u102a\u1050\u1051\u1052\u1053\u1054\u1055\u10d0\u10d1\u10d2\u10d3\u10d4\u10d5\u10d6\u10d7\u10d8\u10d9\u10da\u10db\u10dc\u10dd\u10de\u10df\u10e0\u10e1\u10e2\u10e3\u10e4\u10e5\u10e6\u10e7\u10e8\u10e9\u10ea\u10eb\u10ec\u10ed\u10ee\u10ef\u10f0\u10f1\u10f2\u10f3\u10f4\u10f5\u10f6\u10f7\u10f8\u10f9\u10fa\u1100\u1101\u1102\u1103\u1104\u1105\u1106\u1107\u1108\u1109\u110a\u110b\u110c\u110d\u110e\u110f\u1110\u1111\u1112\u1113\u1114\u1115\u1116\u1117\u1118\u1119\u111a\u111b\u111c\u111d\u111e\u111f\u1120\u1121\u1122\u1123\u1124\u1125\u1126\u1127\u1128\u1129\u112a\u112b\u112c\u112d\u112e\u112f\u1130\u1131\u1132\u1133\u1134\u1135\u1136\u1137\u1138\u1139\u113a\u113b\u113c\u113d\u113e\u113f\u1140\u1141\u1142\u1143\u1144\u1145\u1146\u1147\u1148\u1149\u114a\u114b\u114c\u114d\u114e\u114f\u1150\u1151\u1152\u1153\u1154\u1155\u1156\u1157\u1158\u1159\u115f\u1160\u1161\u1162\u1163\u1164\u1165\u1166\u1167\u1168\u1169\u116a\u116b\u116c\u116d\u116e\u116f\u1170\u1171\u1172\u1173\u1174\u1175\u1176\u1177\u1178\u1179\u117a\u117b\u117c\u117d\u117e\u117f\u1180\u1181\u1182\u1183\u1184\u1185\u1186\u1187\u1188\u1189\u118a\u118b\u118c\u118d\u118e\u118f\u1190\u1191\u1192\u1193\u1194\u1195\u1196\u1197\u1198\u1199\u119a\u119b\u119c\u119d\u119e\u119f\u11a0\u11a1\u11a2\u11a8\u11a9\u11aa\u11ab\u11ac\u11ad\u11ae\u11af\u11b0\u11b1\u11b2\u11b3\u11b4\u11b5\u11b6\u11b7\u11b8\u11b9\u11ba\u11bb\u11bc\u11bd\u11be\u11bf\u11c0\u11c1\u11c2\u11c3\u11c4\u11c5\u11c6\u11c7\u11c8\u11c9\u11ca\u11cb\u11cc\u11cd\u11ce\u11cf\u11d0\u11d1\u11d2\u11d3\u11d4\u11d5\u11d6\u11d7\u11d8\u11d9\u11da\u11db\u11dc\u11dd\u11de\u11df\u11e0\u11e1\u11e2\u11e3\u11e4\u11e5\u11e6\u11e7\u11e8\u11e9\u11ea\u11eb\u11ec\u11ed\u11ee\u11ef\u11f0\u11f1\u11f2\u11f3\u11f4\u11f5\u11f6\u11f7\u11f8\u11f9\u1200\u1201\u1202\u1203\u1204\u1205\u1206\u1207\u1208\u1209\u120a\u120b\u120c\u120d\u120e\u120f\u1210\u1211\u1212\u1213\u1214\u1215\u1216\u1217\u1218\u1219\u121a\u121b\u121c\u121d\u121e\u121f\u1220\u1221\u1222\u1223\u1224\u1225\u1226\u1227\u1228\u1229\u122a\u122b\u122c\u122d\u122e\u122f\u1230\u1231\u1232\u1233\u1234\u1235\u1236\u1237\u1238\u1239\u123a\u123b\u123c\u123d\u123e\u123f\u1240\u1241\u1242\u1243\u1244\u1245\u1246\u1247\u1248\u124a\u124b\u124c\u124d\u1250\u1251\u1252\u1253\u1254\u1255\u1256\u1258\u125a\u125b\u125c\u125d\u1260\u1261\u1262\u1263\u1264\u1265\u1266\u1267\u1268\u1269\u126a\u126b\u126c\u126d\u126e\u126f\u1270\u1271\u1272\u1273\u1274\u1275\u1276\u1277\u1278\u1279\u127a\u127b\u127c\u127d\u127e\u127f\u1280\u1281\u1282\u1283\u1284\u1285\u1286\u1287\u1288\u128a\u128b\u128c\u128d\u1290\u1291\u1292\u1293\u1294\u1295\u1296\u1297\u1298\u1299\u129a\u129b\u129c\u129d\u129e\u129f\u12a0\u12a1\u12a2\u12a3\u12a4\u12a5\u12a6\u12a7\u12a8\u12a9\u12aa\u12ab\u12ac\u12ad\u12ae\u12af\u12b0\u12b2\u12b3\u12b4\u12b5\u12b8\u12b9\u12ba\u12bb\u12bc\u12bd\u12be\u12c0\u12c2\u12c3\u12c4\u12c5\u12c8\u12c9\u12ca\u12cb\u12cc\u12cd\u12ce\u12cf\u12d0\u12d1\u12d2\u12d3\u12d4\u12d5\u12d6\u12d8\u12d9\u12da\u12db\u12dc\u12dd\u12de\u12df\u12e0\u12e1\u12e2\u12e3\u12e4\u12e5\u12e6\u12e7\u12e8\u12e9\u12ea\u12eb\u12ec\u12ed\u12ee\u12ef\u12f0\u12f1\u12f2\u12f3\u12f4\u12f5\u12f6\u12f7\u12f8\u12f9\u12fa\u12fb\u12fc\u12fd\u12fe\u12ff\u1300\u1301\u1302\u1303\u1304\u1305\u1306\u1307\u1308\u1309\u130a\u130b\u130c\u130d\u130e\u130f\u1310\u1312\u1313\u1314\u1315\u1318\u1319\u131a\u131b\u131c\u131d\u131e\u131f\u1320\u1321\u1322\u1323\u1324\u1325\u1326\u1327\u1328\u1329\u132a\u132b\u132c\u132d\u132e\u132f\u1330\u1331\u1332\u1333\u1334\u1335\u1336\u1337\u1338\u1339\u133a\u133b\u133c\u133d\u133e\u133f\u1340\u1341\u1342\u1343\u1344\u1345\u1346\u1347\u1348\u1349\u134a\u134b\u134c\u134d\u134e\u134f\u1350\u1351\u1352\u1353\u1354\u1355\u1356\u1357\u1358\u1359\u135a\u1380\u1381\u1382\u1383\u1384\u1385\u1386\u1387\u1388\u1389\u138a\u138b\u138c\u138d\u138e\u138f\u13a0\u13a1\u13a2\u13a3\u13a4\u13a5\u13a6\u13a7\u13a8\u13a9\u13aa\u13ab\u13ac\u13ad\u13ae\u13af\u13b0\u13b1\u13b2\u13b3\u13b4\u13b5\u13b6\u13b7\u13b8\u13b9\u13ba\u13bb\u13bc\u13bd\u13be\u13bf\u13c0\u13c1\u13c2\u13c3\u13c4\u13c5\u13c6\u13c7\u13c8\u13c9\u13ca\u13cb\u13cc\u13cd\u13ce\u13cf\u13d0\u13d1\u13d2\u13d3\u13d4\u13d5\u13d6\u13d7\u13d8\u13d9\u13da\u13db\u13dc\u13dd\u13de\u13df\u13e0\u13e1\u13e2\u13e3\u13e4\u13e5\u13e6\u13e7\u13e8\u13e9\u13ea\u13eb\u13ec\u13ed\u13ee\u13ef\u13f0\u13f1\u13f2\u13f3\u13f4\u1401\u1402\u1403\u1404\u1405\u1406\u1407\u1408\u1409\u140a\u140b\u140c\u140d\u140e\u140f\u1410\u1411\u1412\u1413\u1414\u1415\u1416\u1417\u1418\u1419\u141a\u141b\u141c\u141d\u141e\u141f\u1420\u1421\u1422\u1423\u1424\u1425\u1426\u1427\u1428\u1429\u142a\u142b\u142c\u142d\u142e\u142f\u1430\u1431\u1432\u1433\u1434\u1435\u1436\u1437\u1438\u1439\u143a\u143b\u143c\u143d\u143e\u143f\u1440\u1441\u1442\u1443\u1444\u1445\u1446\u1447\u1448\u1449\u144a\u144b\u144c\u144d\u144e\u144f\u1450\u1451\u1452\u1453\u1454\u1455\u1456\u1457\u1458\u1459\u145a\u145b\u145c\u145d\u145e\u145f\u1460\u1461\u1462\u1463\u1464\u1465\u1466\u1467\u1468\u1469\u146a\u146b\u146c\u146d\u146e\u146f\u1470\u1471\u1472\u1473\u1474\u1475\u1476\u1477\u1478\u1479\u147a\u147b\u147c\u147d\u147e\u147f\u1480\u1481\u1482\u1483\u1484\u1485\u1486\u1487\u1488\u1489\u148a\u148b\u148c\u148d\u148e\u148f\u1490\u1491\u1492\u1493\u1494\u1495\u1496\u1497\u1498\u1499\u149a\u149b\u149c\u149d\u149e\u149f\u14a0\u14a1\u14a2\u14a3\u14a4\u14a5\u14a6\u14a7\u14a8\u14a9\u14aa\u14ab\u14ac\u14ad\u14ae\u14af\u14b0\u14b1\u14b2\u14b3\u14b4\u14b5\u14b6\u14b7\u14b8\u14b9\u14ba\u14bb\u14bc\u14bd\u14be\u14bf\u14c0\u14c1\u14c2\u14c3\u14c4\u14c5\u14c6\u14c7\u14c8\u14c9\u14ca\u14cb\u14cc\u14cd\u14ce\u14cf\u14d0\u14d1\u14d2\u14d3\u14d4\u14d5\u14d6\u14d7\u14d8\u14d9\u14da\u14db\u14dc\u14dd\u14de\u14df\u14e0\u14e1\u14e2\u14e3\u14e4\u14e5\u14e6\u14e7\u14e8\u14e9\u14ea\u14eb\u14ec\u14ed\u14ee\u14ef\u14f0\u14f1\u14f2\u14f3\u14f4\u14f5\u14f6\u14f7\u14f8\u14f9\u14fa\u14fb\u14fc\u14fd\u14fe\u14ff\u1500\u1501\u1502\u1503\u1504\u1505\u1506\u1507\u1508\u1509\u150a\u150b\u150c\u150d\u150e\u150f\u1510\u1511\u1512\u1513\u1514\u1515\u1516\u1517\u1518\u1519\u151a\u151b\u151c\u151d\u151e\u151f\u1520\u1521\u1522\u1523\u1524\u1525\u1526\u1527\u1528\u1529\u152a\u152b\u152c\u152d\u152e\u152f\u1530\u1531\u1532\u1533\u1534\u1535\u1536\u1537\u1538\u1539\u153a\u153b\u153c\u153d\u153e\u153f\u1540\u1541\u1542\u1543\u1544\u1545\u1546\u1547\u1548\u1549\u154a\u154b\u154c\u154d\u154e\u154f\u1550\u1551\u1552\u1553\u1554\u1555\u1556\u1557\u1558\u1559\u155a\u155b\u155c\u155d\u155e\u155f\u1560\u1561\u1562\u1563\u1564\u1565\u1566\u1567\u1568\u1569\u156a\u156b\u156c\u156d\u156e\u156f\u1570\u1571\u1572\u1573\u1574\u1575\u1576\u1577\u1578\u1579\u157a\u157b\u157c\u157d\u157e\u157f\u1580\u1581\u1582\u1583\u1584\u1585\u1586\u1587\u1588\u1589\u158a\u158b\u158c\u158d\u158e\u158f\u1590\u1591\u1592\u1593\u1594\u1595\u1596\u1597\u1598\u1599\u159a\u159b\u159c\u159d\u159e\u159f\u15a0\u15a1\u15a2\u15a3\u15a4\u15a5\u15a6\u15a7\u15a8\u15a9\u15aa\u15ab\u15ac\u15ad\u15ae\u15af\u15b0\u15b1\u15b2\u15b3\u15b4\u15b5\u15b6\u15b7\u15b8\u15b9\u15ba\u15bb\u15bc\u15bd\u15be\u15bf\u15c0\u15c1\u15c2\u15c3\u15c4\u15c5\u15c6\u15c7\u15c8\u15c9\u15ca\u15cb\u15cc\u15cd\u15ce\u15cf\u15d0\u15d1\u15d2\u15d3\u15d4\u15d5\u15d6\u15d7\u15d8\u15d9\u15da\u15db\u15dc\u15dd\u15de\u15df\u15e0\u15e1\u15e2\u15e3\u15e4\u15e5\u15e6\u15e7\u15e8\u15e9\u15ea\u15eb\u15ec\u15ed\u15ee\u15ef\u15f0\u15f1\u15f2\u15f3\u15f4\u15f5\u15f6\u15f7\u15f8\u15f9\u15fa\u15fb\u15fc\u15fd\u15fe\u15ff\u1600\u1601\u1602\u1603\u1604\u1605\u1606\u1607\u1608\u1609\u160a\u160b\u160c\u160d\u160e\u160f\u1610\u1611\u1612\u1613\u1614\u1615\u1616\u1617\u1618\u1619\u161a\u161b\u161c\u161d\u161e\u161f\u1620\u1621\u1622\u1623\u1624\u1625\u1626\u1627\u1628\u1629\u162a\u162b\u162c\u162d\u162e\u162f\u1630\u1631\u1632\u1633\u1634\u1635\u1636\u1637\u1638\u1639\u163a\u163b\u163c\u163d\u163e\u163f\u1640\u1641\u1642\u1643\u1644\u1645\u1646\u1647\u1648\u1649\u164a\u164b\u164c\u164d\u164e\u164f\u1650\u1651\u1652\u1653\u1654\u1655\u1656\u1657\u1658\u1659\u165a\u165b\u165c\u165d\u165e\u165f\u1660\u1661\u1662\u1663\u1664\u1665\u1666\u1667\u1668\u1669\u166a\u166b\u166c\u166f\u1670\u1671\u1672\u1673\u1674\u1675\u1676\u1681\u1682\u1683\u1684\u1685\u1686\u1687\u1688\u1689\u168a\u168b\u168c\u168d\u168e\u168f\u1690\u1691\u1692\u1693\u1694\u1695\u1696\u1697\u1698\u1699\u169a\u16a0\u16a1\u16a2\u16a3\u16a4\u16a5\u16a6\u16a7\u16a8\u16a9\u16aa\u16ab\u16ac\u16ad\u16ae\u16af\u16b0\u16b1\u16b2\u16b3\u16b4\u16b5\u16b6\u16b7\u16b8\u16b9\u16ba\u16bb\u16bc\u16bd\u16be\u16bf\u16c0\u16c1\u16c2\u16c3\u16c4\u16c5\u16c6\u16c7\u16c8\u16c9\u16ca\u16cb\u16cc\u16cd\u16ce\u16cf\u16d0\u16d1\u16d2\u16d3\u16d4\u16d5\u16d6\u16d7\u16d8\u16d9\u16da\u16db\u16dc\u16dd\u16de\u16df\u16e0\u16e1\u16e2\u16e3\u16e4\u16e5\u16e6\u16e7\u16e8\u16e9\u16ea\u1700\u1701\u1702\u1703\u1704\u1705\u1706\u1707\u1708\u1709\u170a\u170b\u170c\u170e\u170f\u1710\u1711\u1720\u1721\u1722\u1723\u1724\u1725\u1726\u1727\u1728\u1729\u172a\u172b\u172c\u172d\u172e\u172f\u1730\u1731\u1740\u1741\u1742\u1743\u1744\u1745\u1746\u1747\u1748\u1749\u174a\u174b\u174c\u174d\u174e\u174f\u1750\u1751\u1760\u1761\u1762\u1763\u1764\u1765\u1766\u1767\u1768\u1769\u176a\u176b\u176c\u176e\u176f\u1770\u1780\u1781\u1782\u1783\u1784\u1785\u1786\u1787\u1788\u1789\u178a\u178b\u178c\u178d\u178e\u178f\u1790\u1791\u1792\u1793\u1794\u1795\u1796\u1797\u1798\u1799\u179a\u179b\u179c\u179d\u179e\u179f\u17a0\u17a1\u17a2\u17a3\u17a4\u17a5\u17a6\u17a7\u17a8\u17a9\u17aa\u17ab\u17ac\u17ad\u17ae\u17af\u17b0\u17b1\u17b2\u17b3\u17dc\u1820\u1821\u1822\u1823\u1824\u1825\u1826\u1827\u1828\u1829\u182a\u182b\u182c\u182d\u182e\u182f\u1830\u1831\u1832\u1833\u1834\u1835\u1836\u1837\u1838\u1839\u183a\u183b\u183c\u183d\u183e\u183f\u1840\u1841\u1842\u1844\u1845\u1846\u1847\u1848\u1849\u184a\u184b\u184c\u184d\u184e\u184f\u1850\u1851\u1852\u1853\u1854\u1855\u1856\u1857\u1858\u1859\u185a\u185b\u185c\u185d\u185e\u185f\u1860\u1861\u1862\u1863\u1864\u1865\u1866\u1867\u1868\u1869\u186a\u186b\u186c\u186d\u186e\u186f\u1870\u1871\u1872\u1873\u1874\u1875\u1876\u1877\u1880\u1881\u1882\u1883\u1884\u1885\u1886\u1887\u1888\u1889\u188a\u188b\u188c\u188d\u188e\u188f\u1890\u1891\u1892\u1893\u1894\u1895\u1896\u1897\u1898\u1899\u189a\u189b\u189c\u189d\u189e\u189f\u18a0\u18a1\u18a2\u18a3\u18a4\u18a5\u18a6\u18a7\u18a8\u1900\u1901\u1902\u1903\u1904\u1905\u1906\u1907\u1908\u1909\u190a\u190b\u190c\u190d\u190e\u190f\u1910\u1911\u1912\u1913\u1914\u1915\u1916\u1917\u1918\u1919\u191a\u191b\u191c\u1950\u1951\u1952\u1953\u1954\u1955\u1956\u1957\u1958\u1959\u195a\u195b\u195c\u195d\u195e\u195f\u1960\u1961\u1962\u1963\u1964\u1965\u1966\u1967\u1968\u1969\u196a\u196b\u196c\u196d\u1970\u1971\u1972\u1973\u1974\u1980\u1981\u1982\u1983\u1984\u1985\u1986\u1987\u1988\u1989\u198a\u198b\u198c\u198d\u198e\u198f\u1990\u1991\u1992\u1993\u1994\u1995\u1996\u1997\u1998\u1999\u199a\u199b\u199c\u199d\u199e\u199f\u19a0\u19a1\u19a2\u19a3\u19a4\u19a5\u19a6\u19a7\u19a8\u19a9\u19c1\u19c2\u19c3\u19c4\u19c5\u19c6\u19c7\u1a00\u1a01\u1a02\u1a03\u1a04\u1a05\u1a06\u1a07\u1a08\u1a09\u1a0a\u1a0b\u1a0c\u1a0d\u1a0e\u1a0f\u1a10\u1a11\u1a12\u1a13\u1a14\u1a15\u1a16\u2135\u2136\u2137\u2138\u2d30\u2d31\u2d32\u2d33\u2d34\u2d35\u2d36\u2d37\u2d38\u2d39\u2d3a\u2d3b\u2d3c\u2d3d\u2d3e\u2d3f\u2d40\u2d41\u2d42\u2d43\u2d44\u2d45\u2d46\u2d47\u2d48\u2d49\u2d4a\u2d4b\u2d4c\u2d4d\u2d4e\u2d4f\u2d50\u2d51\u2d52\u2d53\u2d54\u2d55\u2d56\u2d57\u2d58\u2d59\u2d5a\u2d5b\u2d5c\u2d5d\u2d5e\u2d5f\u2d60\u2d61\u2d62\u2d63\u2d64\u2d65\u2d80\u2d81\u2d82\u2d83\u2d84\u2d85\u2d86\u2d87\u2d88\u2d89\u2d8a\u2d8b\u2d8c\u2d8d\u2d8e\u2d8f\u2d90\u2d91\u2d92\u2d93\u2d94\u2d95\u2d96\u2da0\u2da1\u2da2\u2da3\u2da4\u2da5\u2da6\u2da8\u2da9\u2daa\u2dab\u2dac\u2dad\u2dae\u2db0\u2db1\u2db2\u2db3\u2db4\u2db5\u2db6\u2db8\u2db9\u2dba\u2dbb\u2dbc\u2dbd\u2dbe\u2dc0\u2dc1\u2dc2\u2dc3\u2dc4\u2dc5\u2dc6\u2dc8\u2dc9\u2dca\u2dcb\u2dcc\u2dcd\u2dce\u2dd0\u2dd1\u2dd2\u2dd3\u2dd4\u2dd5\u2dd6\u2dd8\u2dd9\u2dda\u2ddb\u2ddc\u2ddd\u2dde\u3006\u303c\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304a\u304b\u304c\u304d\u304e\u304f\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305a\u305b\u305c\u305d\u305e\u305f\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306a\u306b\u306c\u306d\u306e\u306f\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307a\u307b\u307c\u307d\u307e\u307f\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308a\u308b\u308c\u308d\u308e\u308f\u3090\u3091\u3092\u3093\u3094\u3095\u3096\u309f\u30a1\u30a2\u30a3\u30a4\u30a5\u30a6\u30a7\u30a8\u30a9\u30aa\u30ab\u30ac\u30ad\u30ae\u30af\u30b0\u30b1\u30b2\u30b3\u30b4\u30b5\u30b6\u30b7\u30b8\u30b9\u30ba\u30bb\u30bc\u30bd\u30be\u30bf\u30c0\u30c1\u30c2\u30c3\u30c4\u30c5\u30c6\u30c7\u30c8\u30c9\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d0\u30d1\u30d2\u30d3\u30d4\u30d5\u30d6\u30d7\u30d8\u30d9\u30da\u30db\u30dc\u30dd\u30de\u30df\u30e0\u30e1\u30e2\u30e3\u30e4\u30e5\u30e6\u30e7\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ee\u30ef\u30f0\u30f1\u30f2\u30f3\u30f4\u30f5\u30f6\u30f7\u30f8\u30f9\u30fa\u30ff\u3105\u3106\u3107\u3108\u3109\u310a\u310b\u310c\u310d\u310e\u310f\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311a\u311b\u311c\u311d\u311e\u311f\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\u312a\u312b\u312c\u3131\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139\u313a\u313b\u313c\u313d\u313e\u313f\u3140\u3141\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149\u314a\u314b\u314c\u314d\u314e\u314f\u3150\u3151\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159\u315a\u315b\u315c\u315d\u315e\u315f\u3160\u3161\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169\u316a\u316b\u316c\u316d\u316e\u316f\u3170\u3171\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179\u317a\u317b\u317c\u317d\u317e\u317f\u3180\u3181\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189\u318a\u318b\u318c\u318d\u318e\u31a0\u31a1\u31a2\u31a3\u31a4\u31a5\u31a6\u31a7\u31a8\u31a9\u31aa\u31ab\u31ac\u31ad\u31ae\u31af\u31b0\u31b1\u31b2\u31b3\u31b4\u31b5\u31b6\u31b7\u31f0\u31f1\u31f2\u31f3\u31f4\u31f5\u31f6\u31f7\u31f8\u31f9\u31fa\u31fb\u31fc\u31fd\u31fe\u31ff\u3400\u3401\u3402\u3403\u3404\u3405\u3406\u3407\u3408\u3409\u340a\u340b\u340c\u340d\u340e\u340f\u3410\u3411\u3412\u3413\u3414\u3415\u3416\u3417\u3418\u3419\u341a\u341b\u341c\u341d\u341e\u341f\u3420\u3421\u3422\u3423\u3424\u3425\u3426\u3427\u3428\u3429\u342a\u342b\u342c\u342d\u342e\u342f\u3430\u3431\u3432\u3433\u3434\u3435\u3436\u3437\u3438\u3439\u343a\u343b\u343c\u343d\u343e\u343f\u3440\u3441\u3442\u3443\u3444\u3445\u3446\u3447\u3448\u3449\u344a\u344b\u344c\u344d\u344e\u344f\u3450\u3451\u3452\u3453\u3454\u3455\u3456\u3457\u3458\u3459\u345a\u345b\u345c\u345d\u345e\u345f\u3460\u3461\u3462\u3463\u3464\u3465\u3466\u3467\u3468\u3469\u346a\u346b\u346c\u346d\u346e\u346f\u3470\u3471\u3472\u3473\u3474\u3475\u3476\u3477\u3478\u3479\u347a\u347b\u347c\u347d\u347e\u347f\u3480\u3481\u3482\u3483\u3484\u3485\u3486\u3487\u3488\u3489\u348a\u348b\u348c\u348d\u348e\u348f\u3490\u3491\u3492\u3493\u3494\u3495\u3496\u3497\u3498\u3499\u349a\u349b\u349c\u349d\u349e\u349f\u34a0\u34a1\u34a2\u34a3\u34a4\u34a5\u34a6\u34a7\u34a8\u34a9\u34aa\u34ab\u34ac\u34ad\u34ae\u34af\u34b0\u34b1\u34b2\u34b3\u34b4\u34b5\u34b6\u34b7\u34b8\u34b9\u34ba\u34bb\u34bc\u34bd\u34be\u34bf\u34c0\u34c1\u34c2\u34c3\u34c4\u34c5\u34c6\u34c7\u34c8\u34c9\u34ca\u34cb\u34cc\u34cd\u34ce\u34cf\u34d0\u34d1\u34d2\u34d3\u34d4\u34d5\u34d6\u34d7\u34d8\u34d9\u34da\u34db\u34dc\u34dd\u34de\u34df\u34e0\u34e1\u34e2\u34e3\u34e4\u34e5\u34e6\u34e7\u34e8\u34e9\u34ea\u34eb\u34ec\u34ed\u34ee\u34ef\u34f0\u34f1\u34f2\u34f3\u34f4\u34f5\u34f6\u34f7\u34f8\u34f9\u34fa\u34fb\u34fc\u34fd\u34fe\u34ff\u3500\u3501\u3502\u3503\u3504\u3505\u3506\u3507\u3508\u3509\u350a\u350b\u350c\u350d\u350e\u350f\u3510\u3511\u3512\u3513\u3514\u3515\u3516\u3517\u3518\u3519\u351a\u351b\u351c\u351d\u351e\u351f\u3520\u3521\u3522\u3523\u3524\u3525\u3526\u3527\u3528\u3529\u352a\u352b\u352c\u352d\u352e\u352f\u3530\u3531\u3532\u3533\u3534\u3535\u3536\u3537\u3538\u3539\u353a\u353b\u353c\u353d\u353e\u353f\u3540\u3541\u3542\u3543\u3544\u3545\u3546\u3547\u3548\u3549\u354a\u354b\u354c\u354d\u354e\u354f\u3550\u3551\u3552\u3553\u3554\u3555\u3556\u3557\u3558\u3559\u355a\u355b\u355c\u355d\u355e\u355f\u3560\u3561\u3562\u3563\u3564\u3565\u3566\u3567\u3568\u3569\u356a\u356b\u356c\u356d\u356e\u356f\u3570\u3571\u3572\u3573\u3574\u3575\u3576\u3577\u3578\u3579\u357a\u357b\u357c\u357d\u357e\u357f\u3580\u3581\u3582\u3583\u3584\u3585\u3586\u3587\u3588\u3589\u358a\u358b\u358c\u358d\u358e\u358f\u3590\u3591\u3592\u3593\u3594\u3595\u3596\u3597\u3598\u3599\u359a\u359b\u359c\u359d\u359e\u359f\u35a0\u35a1\u35a2\u35a3\u35a4\u35a5\u35a6\u35a7\u35a8\u35a9\u35aa\u35ab\u35ac\u35ad\u35ae\u35af\u35b0\u35b1\u35b2\u35b3\u35b4\u35b5\u35b6\u35b7\u35b8\u35b9\u35ba\u35bb\u35bc\u35bd\u35be\u35bf\u35c0\u35c1\u35c2\u35c3\u35c4\u35c5\u35c6\u35c7\u35c8\u35c9\u35ca\u35cb\u35cc\u35cd\u35ce\u35cf\u35d0\u35d1\u35d2\u35d3\u35d4\u35d5\u35d6\u35d7\u35d8\u35d9\u35da\u35db\u35dc\u35dd\u35de\u35df\u35e0\u35e1\u35e2\u35e3\u35e4\u35e5\u35e6\u35e7\u35e8\u35e9\u35ea\u35eb\u35ec\u35ed\u35ee\u35ef\u35f0\u35f1\u35f2\u35f3\u35f4\u35f5\u35f6\u35f7\u35f8\u35f9\u35fa\u35fb\u35fc\u35fd\u35fe\u35ff\u3600\u3601\u3602\u3603\u3604\u3605\u3606\u3607\u3608\u3609\u360a\u360b\u360c\u360d\u360e\u360f\u3610\u3611\u3612\u3613\u3614\u3615\u3616\u3617\u3618\u3619\u361a\u361b\u361c\u361d\u361e\u361f\u3620\u3621\u3622\u3623\u3624\u3625\u3626\u3627\u3628\u3629\u362a\u362b\u362c\u362d\u362e\u362f\u3630\u3631\u3632\u3633\u3634\u3635\u3636\u3637\u3638\u3639\u363a\u363b\u363c\u363d\u363e\u363f\u3640\u3641\u3642\u3643\u3644\u3645\u3646\u3647\u3648\u3649\u364a\u364b\u364c\u364d\u364e\u364f\u3650\u3651\u3652\u3653\u3654\u3655\u3656\u3657\u3658\u3659\u365a\u365b\u365c\u365d\u365e\u365f\u3660\u3661\u3662\u3663\u3664\u3665\u3666\u3667\u3668\u3669\u366a\u366b\u366c\u366d\u366e\u366f\u3670\u3671\u3672\u3673\u3674\u3675\u3676\u3677\u3678\u3679\u367a\u367b\u367c\u367d\u367e\u367f\u3680\u3681\u3682\u3683\u3684\u3685\u3686\u3687\u3688\u3689\u368a\u368b\u368c\u368d\u368e\u368f\u3690\u3691\u3692\u3693\u3694\u3695\u3696\u3697\u3698\u3699\u369a\u369b\u369c\u369d\u369e\u369f\u36a0\u36a1\u36a2\u36a3\u36a4\u36a5\u36a6\u36a7\u36a8\u36a9\u36aa\u36ab\u36ac\u36ad\u36ae\u36af\u36b0\u36b1\u36b2\u36b3\u36b4\u36b5\u36b6\u36b7\u36b8\u36b9\u36ba\u36bb\u36bc\u36bd\u36be\u36bf\u36c0\u36c1\u36c2\u36c3\u36c4\u36c5\u36c6\u36c7\u36c8\u36c9\u36ca\u36cb\u36cc\u36cd\u36ce\u36cf\u36d0\u36d1\u36d2\u36d3\u36d4\u36d5\u36d6\u36d7\u36d8\u36d9\u36da\u36db\u36dc\u36dd\u36de\u36df\u36e0\u36e1\u36e2\u36e3\u36e4\u36e5\u36e6\u36e7\u36e8\u36e9\u36ea\u36eb\u36ec\u36ed\u36ee\u36ef\u36f0\u36f1\u36f2\u36f3\u36f4\u36f5\u36f6\u36f7\u36f8\u36f9\u36fa\u36fb\u36fc\u36fd\u36fe\u36ff\u3700\u3701\u3702\u3703\u3704\u3705\u3706\u3707\u3708\u3709\u370a\u370b\u370c\u370d\u370e\u370f\u3710\u3711\u3712\u3713\u3714\u3715\u3716\u3717\u3718\u3719\u371a\u371b\u371c\u371d\u371e\u371f\u3720\u3721\u3722\u3723\u3724\u3725\u3726\u3727\u3728\u3729\u372a\u372b\u372c\u372d\u372e\u372f\u3730\u3731\u3732\u3733\u3734\u3735\u3736\u3737\u3738\u3739\u373a\u373b\u373c\u373d\u373e\u373f\u3740\u3741\u3742\u3743\u3744\u3745\u3746\u3747\u3748\u3749\u374a\u374b\u374c\u374d\u374e\u374f\u3750\u3751\u3752\u3753\u3754\u3755\u3756\u3757\u3758\u3759\u375a\u375b\u375c\u375d\u375e\u375f\u3760\u3761\u3762\u3763\u3764\u3765\u3766\u3767\u3768\u3769\u376a\u376b\u376c\u376d\u376e\u376f\u3770\u3771\u3772\u3773\u3774\u3775\u3776\u3777\u3778\u3779\u377a\u377b\u377c\u377d\u377e\u377f\u3780\u3781\u3782\u3783\u3784\u3785\u3786\u3787\u3788\u3789\u378a\u378b\u378c\u378d\u378e\u378f\u3790\u3791\u3792\u3793\u3794\u3795\u3796\u3797\u3798\u3799\u379a\u379b\u379c\u379d\u379e\u379f\u37a0\u37a1\u37a2\u37a3\u37a4\u37a5\u37a6\u37a7\u37a8\u37a9\u37aa\u37ab\u37ac\u37ad\u37ae\u37af\u37b0\u37b1\u37b2\u37b3\u37b4\u37b5\u37b6\u37b7\u37b8\u37b9\u37ba\u37bb\u37bc\u37bd\u37be\u37bf\u37c0\u37c1\u37c2\u37c3\u37c4\u37c5\u37c6\u37c7\u37c8\u37c9\u37ca\u37cb\u37cc\u37cd\u37ce\u37cf\u37d0\u37d1\u37d2\u37d3\u37d4\u37d5\u37d6\u37d7\u37d8\u37d9\u37da\u37db\u37dc\u37dd\u37de\u37df\u37e0\u37e1\u37e2\u37e3\u37e4\u37e5\u37e6\u37e7\u37e8\u37e9\u37ea\u37eb\u37ec\u37ed\u37ee\u37ef\u37f0\u37f1\u37f2\u37f3\u37f4\u37f5\u37f6\u37f7\u37f8\u37f9\u37fa\u37fb\u37fc\u37fd\u37fe\u37ff\u3800\u3801\u3802\u3803\u3804\u3805\u3806\u3807\u3808\u3809\u380a\u380b\u380c\u380d\u380e\u380f\u3810\u3811\u3812\u3813\u3814\u3815\u3816\u3817\u3818\u3819\u381a\u381b\u381c\u381d\u381e\u381f\u3820\u3821\u3822\u3823\u3824\u3825\u3826\u3827\u3828\u3829\u382a\u382b\u382c\u382d\u382e\u382f\u3830\u3831\u3832\u3833\u3834\u3835\u3836\u3837\u3838\u3839\u383a\u383b\u383c\u383d\u383e\u383f\u3840\u3841\u3842\u3843\u3844\u3845\u3846\u3847\u3848\u3849\u384a\u384b\u384c\u384d\u384e\u384f\u3850\u3851\u3852\u3853\u3854\u3855\u3856\u3857\u3858\u3859\u385a\u385b\u385c\u385d\u385e\u385f\u3860\u3861\u3862\u3863\u3864\u3865\u3866\u3867\u3868\u3869\u386a\u386b\u386c\u386d\u386e\u386f\u3870\u3871\u3872\u3873\u3874\u3875\u3876\u3877\u3878\u3879\u387a\u387b\u387c\u387d\u387e\u387f\u3880\u3881\u3882\u3883\u3884\u3885\u3886\u3887\u3888\u3889\u388a\u388b\u388c\u388d\u388e\u388f\u3890\u3891\u3892\u3893\u3894\u3895\u3896\u3897\u3898\u3899\u389a\u389b\u389c\u389d\u389e\u389f\u38a0\u38a1\u38a2\u38a3\u38a4\u38a5\u38a6\u38a7\u38a8\u38a9\u38aa\u38ab\u38ac\u38ad\u38ae\u38af\u38b0\u38b1\u38b2\u38b3\u38b4\u38b5\u38b6\u38b7\u38b8\u38b9\u38ba\u38bb\u38bc\u38bd\u38be\u38bf\u38c0\u38c1\u38c2\u38c3\u38c4\u38c5\u38c6\u38c7\u38c8\u38c9\u38ca\u38cb\u38cc\u38cd\u38ce\u38cf\u38d0\u38d1\u38d2\u38d3\u38d4\u38d5\u38d6\u38d7\u38d8\u38d9\u38da\u38db\u38dc\u38dd\u38de\u38df\u38e0\u38e1\u38e2\u38e3\u38e4\u38e5\u38e6\u38e7\u38e8\u38e9\u38ea\u38eb\u38ec\u38ed\u38ee\u38ef\u38f0\u38f1\u38f2\u38f3\u38f4\u38f5\u38f6\u38f7\u38f8\u38f9\u38fa\u38fb\u38fc\u38fd\u38fe\u38ff\u3900\u3901\u3902\u3903\u3904\u3905\u3906\u3907\u3908\u3909\u390a\u390b\u390c\u390d\u390e\u390f\u3910\u3911\u3912\u3913\u3914\u3915\u3916\u3917\u3918\u3919\u391a\u391b\u391c\u391d\u391e\u391f\u3920\u3921\u3922\u3923\u3924\u3925\u3926\u3927\u3928\u3929\u392a\u392b\u392c\u392d\u392e\u392f\u3930\u3931\u3932\u3933\u3934\u3935\u3936\u3937\u3938\u3939\u393a\u393b\u393c\u393d\u393e\u393f\u3940\u3941\u3942\u3943\u3944\u3945\u3946\u3947\u3948\u3949\u394a\u394b\u394c\u394d\u394e\u394f\u3950\u3951\u3952\u3953\u3954\u3955\u3956\u3957\u3958\u3959\u395a\u395b\u395c\u395d\u395e\u395f\u3960\u3961\u3962\u3963\u3964\u3965\u3966\u3967\u3968\u3969\u396a\u396b\u396c\u396d\u396e\u396f\u3970\u3971\u3972\u3973\u3974\u3975\u3976\u3977\u3978\u3979\u397a\u397b\u397c\u397d\u397e\u397f\u3980\u3981\u3982\u3983\u3984\u3985\u3986\u3987\u3988\u3989\u398a\u398b\u398c\u398d\u398e\u398f\u3990\u3991\u3992\u3993\u3994\u3995\u3996\u3997\u3998\u3999\u399a\u399b\u399c\u399d\u399e\u399f\u39a0\u39a1\u39a2\u39a3\u39a4\u39a5\u39a6\u39a7\u39a8\u39a9\u39aa\u39ab\u39ac\u39ad\u39ae\u39af\u39b0\u39b1\u39b2\u39b3\u39b4\u39b5\u39b6\u39b7\u39b8\u39b9\u39ba\u39bb\u39bc\u39bd\u39be\u39bf\u39c0\u39c1\u39c2\u39c3\u39c4\u39c5\u39c6\u39c7\u39c8\u39c9\u39ca\u39cb\u39cc\u39cd\u39ce\u39cf\u39d0\u39d1\u39d2\u39d3\u39d4\u39d5\u39d6\u39d7\u39d8\u39d9\u39da\u39db\u39dc\u39dd\u39de\u39df\u39e0\u39e1\u39e2\u39e3\u39e4\u39e5\u39e6\u39e7\u39e8\u39e9\u39ea\u39eb\u39ec\u39ed\u39ee\u39ef\u39f0\u39f1\u39f2\u39f3\u39f4\u39f5\u39f6\u39f7\u39f8\u39f9\u39fa\u39fb\u39fc\u39fd\u39fe\u39ff\u3a00\u3a01\u3a02\u3a03\u3a04\u3a05\u3a06\u3a07\u3a08\u3a09\u3a0a\u3a0b\u3a0c\u3a0d\u3a0e\u3a0f\u3a10\u3a11\u3a12\u3a13\u3a14\u3a15\u3a16\u3a17\u3a18\u3a19\u3a1a\u3a1b\u3a1c\u3a1d\u3a1e\u3a1f\u3a20\u3a21\u3a22\u3a23\u3a24\u3a25\u3a26\u3a27\u3a28\u3a29\u3a2a\u3a2b\u3a2c\u3a2d\u3a2e\u3a2f\u3a30\u3a31\u3a32\u3a33\u3a34\u3a35\u3a36\u3a37\u3a38\u3a39\u3a3a\u3a3b\u3a3c\u3a3d\u3a3e\u3a3f\u3a40\u3a41\u3a42\u3a43\u3a44\u3a45\u3a46\u3a47\u3a48\u3a49\u3a4a\u3a4b\u3a4c\u3a4d\u3a4e\u3a4f\u3a50\u3a51\u3a52\u3a53\u3a54\u3a55\u3a56\u3a57\u3a58\u3a59\u3a5a\u3a5b\u3a5c\u3a5d\u3a5e\u3a5f\u3a60\u3a61\u3a62\u3a63\u3a64\u3a65\u3a66\u3a67\u3a68\u3a69\u3a6a\u3a6b\u3a6c\u3a6d\u3a6e\u3a6f\u3a70\u3a71\u3a72\u3a73\u3a74\u3a75\u3a76\u3a77\u3a78\u3a79\u3a7a\u3a7b\u3a7c\u3a7d\u3a7e\u3a7f\u3a80\u3a81\u3a82\u3a83\u3a84\u3a85\u3a86\u3a87\u3a88\u3a89\u3a8a\u3a8b\u3a8c\u3a8d\u3a8e\u3a8f\u3a90\u3a91\u3a92\u3a93\u3a94\u3a95\u3a96\u3a97\u3a98\u3a99\u3a9a\u3a9b\u3a9c\u3a9d\u3a9e\u3a9f\u3aa0\u3aa1\u3aa2\u3aa3\u3aa4\u3aa5\u3aa6\u3aa7\u3aa8\u3aa9\u3aaa\u3aab\u3aac\u3aad\u3aae\u3aaf\u3ab0\u3ab1\u3ab2\u3ab3\u3ab4\u3ab5\u3ab6\u3ab7\u3ab8\u3ab9\u3aba\u3abb\u3abc\u3abd\u3abe\u3abf\u3ac0\u3ac1\u3ac2\u3ac3\u3ac4\u3ac5\u3ac6\u3ac7\u3ac8\u3ac9\u3aca\u3acb\u3acc\u3acd\u3ace\u3acf\u3ad0\u3ad1\u3ad2\u3ad3\u3ad4\u3ad5\u3ad6\u3ad7\u3ad8\u3ad9\u3ada\u3adb\u3adc\u3add\u3ade\u3adf\u3ae0\u3ae1\u3ae2\u3ae3\u3ae4\u3ae5\u3ae6\u3ae7\u3ae8\u3ae9\u3aea\u3aeb\u3aec\u3aed\u3aee\u3aef\u3af0\u3af1\u3af2\u3af3\u3af4\u3af5\u3af6\u3af7\u3af8\u3af9\u3afa\u3afb\u3afc\u3afd\u3afe\u3aff\u3b00\u3b01\u3b02\u3b03\u3b04\u3b05\u3b06\u3b07\u3b08\u3b09\u3b0a\u3b0b\u3b0c\u3b0d\u3b0e\u3b0f\u3b10\u3b11\u3b12\u3b13\u3b14\u3b15\u3b16\u3b17\u3b18\u3b19\u3b1a\u3b1b\u3b1c\u3b1d\u3b1e\u3b1f\u3b20\u3b21\u3b22\u3b23\u3b24\u3b25\u3b26\u3b27\u3b28\u3b29\u3b2a\u3b2b\u3b2c\u3b2d\u3b2e\u3b2f\u3b30\u3b31\u3b32\u3b33\u3b34\u3b35\u3b36\u3b37\u3b38\u3b39\u3b3a\u3b3b\u3b3c\u3b3d\u3b3e\u3b3f\u3b40\u3b41\u3b42\u3b43\u3b44\u3b45\u3b46\u3b47\u3b48\u3b49\u3b4a\u3b4b\u3b4c\u3b4d\u3b4e\u3b4f\u3b50\u3b51\u3b52\u3b53\u3b54\u3b55\u3b56\u3b57\u3b58\u3b59\u3b5a\u3b5b\u3b5c\u3b5d\u3b5e\u3b5f\u3b60\u3b61\u3b62\u3b63\u3b64\u3b65\u3b66\u3b67\u3b68\u3b69\u3b6a\u3b6b\u3b6c\u3b6d\u3b6e\u3b6f\u3b70\u3b71\u3b72\u3b73\u3b74\u3b75\u3b76\u3b77\u3b78\u3b79\u3b7a\u3b7b\u3b7c\u3b7d\u3b7e\u3b7f\u3b80\u3b81\u3b82\u3b83\u3b84\u3b85\u3b86\u3b87\u3b88\u3b89\u3b8a\u3b8b\u3b8c\u3b8d\u3b8e\u3b8f\u3b90\u3b91\u3b92\u3b93\u3b94\u3b95\u3b96\u3b97\u3b98\u3b99\u3b9a\u3b9b\u3b9c\u3b9d\u3b9e\u3b9f\u3ba0\u3ba1\u3ba2\u3ba3\u3ba4\u3ba5\u3ba6\u3ba7\u3ba8\u3ba9\u3baa\u3bab\u3bac\u3bad\u3bae\u3baf\u3bb0\u3bb1\u3bb2\u3bb3\u3bb4\u3bb5\u3bb6\u3bb7\u3bb8\u3bb9\u3bba\u3bbb\u3bbc\u3bbd\u3bbe\u3bbf\u3bc0\u3bc1\u3bc2\u3bc3\u3bc4\u3bc5\u3bc6\u3bc7\u3bc8\u3bc9\u3bca\u3bcb\u3bcc\u3bcd\u3bce\u3bcf\u3bd0\u3bd1\u3bd2\u3bd3\u3bd4\u3bd5\u3bd6\u3bd7\u3bd8\u3bd9\u3bda\u3bdb\u3bdc\u3bdd\u3bde\u3bdf\u3be0\u3be1\u3be2\u3be3\u3be4\u3be5\u3be6\u3be7\u3be8\u3be9\u3bea\u3beb\u3bec\u3bed\u3bee\u3bef\u3bf0\u3bf1\u3bf2\u3bf3\u3bf4\u3bf5\u3bf6\u3bf7\u3bf8\u3bf9\u3bfa\u3bfb\u3bfc\u3bfd\u3bfe\u3bff\u3c00\u3c01\u3c02\u3c03\u3c04\u3c05\u3c06\u3c07\u3c08\u3c09\u3c0a\u3c0b\u3c0c\u3c0d\u3c0e\u3c0f\u3c10\u3c11\u3c12\u3c13\u3c14\u3c15\u3c16\u3c17\u3c18\u3c19\u3c1a\u3c1b\u3c1c\u3c1d\u3c1e\u3c1f\u3c20\u3c21\u3c22\u3c23\u3c24\u3c25\u3c26\u3c27\u3c28\u3c29\u3c2a\u3c2b\u3c2c\u3c2d\u3c2e\u3c2f\u3c30\u3c31\u3c32\u3c33\u3c34\u3c35\u3c36\u3c37\u3c38\u3c39\u3c3a\u3c3b\u3c3c\u3c3d\u3c3e\u3c3f\u3c40\u3c41\u3c42\u3c43\u3c44\u3c45\u3c46\u3c47\u3c48\u3c49\u3c4a\u3c4b\u3c4c\u3c4d\u3c4e\u3c4f\u3c50\u3c51\u3c52\u3c53\u3c54\u3c55\u3c56\u3c57\u3c58\u3c59\u3c5a\u3c5b\u3c5c\u3c5d\u3c5e\u3c5f\u3c60\u3c61\u3c62\u3c63\u3c64\u3c65\u3c66\u3c67\u3c68\u3c69\u3c6a\u3c6b\u3c6c\u3c6d\u3c6e\u3c6f\u3c70\u3c71\u3c72\u3c73\u3c74\u3c75\u3c76\u3c77\u3c78\u3c79\u3c7a\u3c7b\u3c7c\u3c7d\u3c7e\u3c7f\u3c80\u3c81\u3c82\u3c83\u3c84\u3c85\u3c86\u3c87\u3c88\u3c89\u3c8a\u3c8b\u3c8c\u3c8d\u3c8e\u3c8f\u3c90\u3c91\u3c92\u3c93\u3c94\u3c95\u3c96\u3c97\u3c98\u3c99\u3c9a\u3c9b\u3c9c\u3c9d\u3c9e\u3c9f\u3ca0\u3ca1\u3ca2\u3ca3\u3ca4\u3ca5\u3ca6\u3ca7\u3ca8\u3ca9\u3caa\u3cab\u3cac\u3cad\u3cae\u3caf\u3cb0\u3cb1\u3cb2\u3cb3\u3cb4\u3cb5\u3cb6\u3cb7\u3cb8\u3cb9\u3cba\u3cbb\u3cbc\u3cbd\u3cbe\u3cbf\u3cc0\u3cc1\u3cc2\u3cc3\u3cc4\u3cc5\u3cc6\u3cc7\u3cc8\u3cc9\u3cca\u3ccb\u3ccc\u3ccd\u3cce\u3ccf\u3cd0\u3cd1\u3cd2\u3cd3\u3cd4\u3cd5\u3cd6\u3cd7\u3cd8\u3cd9\u3cda\u3cdb\u3cdc\u3cdd\u3cde\u3cdf\u3ce0\u3ce1\u3ce2\u3ce3\u3ce4\u3ce5\u3ce6\u3ce7\u3ce8\u3ce9\u3cea\u3ceb\u3cec\u3ced\u3cee\u3cef\u3cf0\u3cf1\u3cf2\u3cf3\u3cf4\u3cf5\u3cf6\u3cf7\u3cf8\u3cf9\u3cfa\u3cfb\u3cfc\u3cfd\u3cfe\u3cff\u3d00\u3d01\u3d02\u3d03\u3d04\u3d05\u3d06\u3d07\u3d08\u3d09\u3d0a\u3d0b\u3d0c\u3d0d\u3d0e\u3d0f\u3d10\u3d11\u3d12\u3d13\u3d14\u3d15\u3d16\u3d17\u3d18\u3d19\u3d1a\u3d1b\u3d1c\u3d1d\u3d1e\u3d1f\u3d20\u3d21\u3d22\u3d23\u3d24\u3d25\u3d26\u3d27\u3d28\u3d29\u3d2a\u3d2b\u3d2c\u3d2d\u3d2e\u3d2f\u3d30\u3d31\u3d32\u3d33\u3d34\u3d35\u3d36\u3d37\u3d38\u3d39\u3d3a\u3d3b\u3d3c\u3d3d\u3d3e\u3d3f\u3d40\u3d41\u3d42\u3d43\u3d44\u3d45\u3d46\u3d47\u3d48\u3d49\u3d4a\u3d4b\u3d4c\u3d4d\u3d4e\u3d4f\u3d50\u3d51\u3d52\u3d53\u3d54\u3d55\u3d56\u3d57\u3d58\u3d59\u3d5a\u3d5b\u3d5c\u3d5d\u3d5e\u3d5f\u3d60\u3d61\u3d62\u3d63\u3d64\u3d65\u3d66\u3d67\u3d68\u3d69\u3d6a\u3d6b\u3d6c\u3d6d\u3d6e\u3d6f\u3d70\u3d71\u3d72\u3d73\u3d74\u3d75\u3d76\u3d77\u3d78\u3d79\u3d7a\u3d7b\u3d7c\u3d7d\u3d7e\u3d7f\u3d80\u3d81\u3d82\u3d83\u3d84\u3d85\u3d86\u3d87\u3d88\u3d89\u3d8a\u3d8b\u3d8c\u3d8d\u3d8e\u3d8f\u3d90\u3d91\u3d92\u3d93\u3d94\u3d95\u3d96\u3d97\u3d98\u3d99\u3d9a\u3d9b\u3d9c\u3d9d\u3d9e\u3d9f\u3da0\u3da1\u3da2\u3da3\u3da4\u3da5\u3da6\u3da7\u3da8\u3da9\u3daa\u3dab\u3dac\u3dad\u3dae\u3daf\u3db0\u3db1\u3db2\u3db3\u3db4\u3db5\u3db6\u3db7\u3db8\u3db9\u3dba\u3dbb\u3dbc\u3dbd\u3dbe\u3dbf\u3dc0\u3dc1\u3dc2\u3dc3\u3dc4\u3dc5\u3dc6\u3dc7\u3dc8\u3dc9\u3dca\u3dcb\u3dcc\u3dcd\u3dce\u3dcf\u3dd0\u3dd1\u3dd2\u3dd3\u3dd4\u3dd5\u3dd6\u3dd7\u3dd8\u3dd9\u3dda\u3ddb\u3ddc\u3ddd\u3dde\u3ddf\u3de0\u3de1\u3de2\u3de3\u3de4\u3de5\u3de6\u3de7\u3de8\u3de9\u3dea\u3deb\u3dec\u3ded\u3dee\u3def\u3df0\u3df1\u3df2\u3df3\u3df4\u3df5\u3df6\u3df7\u3df8\u3df9\u3dfa\u3dfb\u3dfc\u3dfd\u3dfe\u3dff\u3e00\u3e01\u3e02\u3e03\u3e04\u3e05\u3e06\u3e07\u3e08\u3e09\u3e0a\u3e0b\u3e0c\u3e0d\u3e0e\u3e0f\u3e10\u3e11\u3e12\u3e13\u3e14\u3e15\u3e16\u3e17\u3e18\u3e19\u3e1a\u3e1b\u3e1c\u3e1d\u3e1e\u3e1f\u3e20\u3e21\u3e22\u3e23\u3e24\u3e25\u3e26\u3e27\u3e28\u3e29\u3e2a\u3e2b\u3e2c\u3e2d\u3e2e\u3e2f\u3e30\u3e31\u3e32\u3e33\u3e34\u3e35\u3e36\u3e37\u3e38\u3e39\u3e3a\u3e3b\u3e3c\u3e3d\u3e3e\u3e3f\u3e40\u3e41\u3e42\u3e43\u3e44\u3e45\u3e46\u3e47\u3e48\u3e49\u3e4a\u3e4b\u3e4c\u3e4d\u3e4e\u3e4f\u3e50\u3e51\u3e52\u3e53\u3e54\u3e55\u3e56\u3e57\u3e58\u3e59\u3e5a\u3e5b\u3e5c\u3e5d\u3e5e\u3e5f\u3e60\u3e61\u3e62\u3e63\u3e64\u3e65\u3e66\u3e67\u3e68\u3e69\u3e6a\u3e6b\u3e6c\u3e6d\u3e6e\u3e6f\u3e70\u3e71\u3e72\u3e73\u3e74\u3e75\u3e76\u3e77\u3e78\u3e79\u3e7a\u3e7b\u3e7c\u3e7d\u3e7e\u3e7f\u3e80\u3e81\u3e82\u3e83\u3e84\u3e85\u3e86\u3e87\u3e88\u3e89\u3e8a\u3e8b\u3e8c\u3e8d\u3e8e\u3e8f\u3e90\u3e91\u3e92\u3e93\u3e94\u3e95\u3e96\u3e97\u3e98\u3e99\u3e9a\u3e9b\u3e9c\u3e9d\u3e9e\u3e9f\u3ea0\u3ea1\u3ea2\u3ea3\u3ea4\u3ea5\u3ea6\u3ea7\u3ea8\u3ea9\u3eaa\u3eab\u3eac\u3ead\u3eae\u3eaf\u3eb0\u3eb1\u3eb2\u3eb3\u3eb4\u3eb5\u3eb6\u3eb7\u3eb8\u3eb9\u3eba\u3ebb\u3ebc\u3ebd\u3ebe\u3ebf\u3ec0\u3ec1\u3ec2\u3ec3\u3ec4\u3ec5\u3ec6\u3ec7\u3ec8\u3ec9\u3eca\u3ecb\u3ecc\u3ecd\u3ece\u3ecf\u3ed0\u3ed1\u3ed2\u3ed3\u3ed4\u3ed5\u3ed6\u3ed7\u3ed8\u3ed9\u3eda\u3edb\u3edc\u3edd\u3ede\u3edf\u3ee0\u3ee1\u3ee2\u3ee3\u3ee4\u3ee5\u3ee6\u3ee7\u3ee8\u3ee9\u3eea\u3eeb\u3eec\u3eed\u3eee\u3eef\u3ef0\u3ef1\u3ef2\u3ef3\u3ef4\u3ef5\u3ef6\u3ef7\u3ef8\u3ef9\u3efa\u3efb\u3efc\u3efd\u3efe\u3eff\u3f00\u3f01\u3f02\u3f03\u3f04\u3f05\u3f06\u3f07\u3f08\u3f09\u3f0a\u3f0b\u3f0c\u3f0d\u3f0e\u3f0f\u3f10\u3f11\u3f12\u3f13\u3f14\u3f15\u3f16\u3f17\u3f18\u3f19\u3f1a\u3f1b\u3f1c\u3f1d\u3f1e\u3f1f\u3f20\u3f21\u3f22\u3f23\u3f24\u3f25\u3f26\u3f27\u3f28\u3f29\u3f2a\u3f2b\u3f2c\u3f2d\u3f2e\u3f2f\u3f30\u3f31\u3f32\u3f33\u3f34\u3f35\u3f36\u3f37\u3f38\u3f39\u3f3a\u3f3b\u3f3c\u3f3d\u3f3e\u3f3f\u3f40\u3f41\u3f42\u3f43\u3f44\u3f45\u3f46\u3f47\u3f48\u3f49\u3f4a\u3f4b\u3f4c\u3f4d\u3f4e\u3f4f\u3f50\u3f51\u3f52\u3f53\u3f54\u3f55\u3f56\u3f57\u3f58\u3f59\u3f5a\u3f5b\u3f5c\u3f5d\u3f5e\u3f5f\u3f60\u3f61\u3f62\u3f63\u3f64\u3f65\u3f66\u3f67\u3f68\u3f69\u3f6a\u3f6b\u3f6c\u3f6d\u3f6e\u3f6f\u3f70\u3f71\u3f72\u3f73\u3f74\u3f75\u3f76\u3f77\u3f78\u3f79\u3f7a\u3f7b\u3f7c\u3f7d\u3f7e\u3f7f\u3f80\u3f81\u3f82\u3f83\u3f84\u3f85\u3f86\u3f87\u3f88\u3f89\u3f8a\u3f8b\u3f8c\u3f8d\u3f8e\u3f8f\u3f90\u3f91\u3f92\u3f93\u3f94\u3f95\u3f96\u3f97\u3f98\u3f99\u3f9a\u3f9b\u3f9c\u3f9d\u3f9e\u3f9f\u3fa0\u3fa1\u3fa2\u3fa3\u3fa4\u3fa5\u3fa6\u3fa7\u3fa8\u3fa9\u3faa\u3fab\u3fac\u3fad\u3fae\u3faf\u3fb0\u3fb1\u3fb2\u3fb3\u3fb4\u3fb5\u3fb6\u3fb7\u3fb8\u3fb9\u3fba\u3fbb\u3fbc\u3fbd\u3fbe\u3fbf\u3fc0\u3fc1\u3fc2\u3fc3\u3fc4\u3fc5\u3fc6\u3fc7\u3fc8\u3fc9\u3fca\u3fcb\u3fcc\u3fcd\u3fce\u3fcf\u3fd0\u3fd1\u3fd2\u3fd3\u3fd4\u3fd5\u3fd6\u3fd7\u3fd8\u3fd9\u3fda\u3fdb\u3fdc\u3fdd\u3fde\u3fdf\u3fe0\u3fe1\u3fe2\u3fe3\u3fe4\u3fe5\u3fe6\u3fe7\u3fe8\u3fe9\u3fea\u3feb\u3fec\u3fed\u3fee\u3fef\u3ff0\u3ff1\u3ff2\u3ff3\u3ff4\u3ff5\u3ff6\u3ff7\u3ff8\u3ff9\u3ffa\u3ffb\u3ffc\u3ffd\u3ffe\u3fff\u4000\u4001\u4002\u4003\u4004\u4005\u4006\u4007\u4008\u4009\u400a\u400b\u400c\u400d\u400e\u400f\u4010\u4011\u4012\u4013\u4014\u4015\u4016\u4017\u4018\u4019\u401a\u401b\u401c\u401d\u401e\u401f\u4020\u4021\u4022\u4023\u4024\u4025\u4026\u4027\u4028\u4029\u402a\u402b\u402c\u402d\u402e\u402f\u4030\u4031\u4032\u4033\u4034\u4035\u4036\u4037\u4038\u4039\u403a\u403b\u403c\u403d\u403e\u403f\u4040\u4041\u4042\u4043\u4044\u4045\u4046\u4047\u4048\u4049\u404a\u404b\u404c\u404d\u404e\u404f\u4050\u4051\u4052\u4053\u4054\u4055\u4056\u4057\u4058\u4059\u405a\u405b\u405c\u405d\u405e\u405f\u4060\u4061\u4062\u4063\u4064\u4065\u4066\u4067\u4068\u4069\u406a\u406b\u406c\u406d\u406e\u406f\u4070\u4071\u4072\u4073\u4074\u4075\u4076\u4077\u4078\u4079\u407a\u407b\u407c\u407d\u407e\u407f\u4080\u4081\u4082\u4083\u4084\u4085\u4086\u4087\u4088\u4089\u408a\u408b\u408c\u408d\u408e\u408f\u4090\u4091\u4092\u4093\u4094\u4095\u4096\u4097\u4098\u4099\u409a\u409b\u409c\u409d\u409e\u409f\u40a0\u40a1\u40a2\u40a3\u40a4\u40a5\u40a6\u40a7\u40a8\u40a9\u40aa\u40ab\u40ac\u40ad\u40ae\u40af\u40b0\u40b1\u40b2\u40b3\u40b4\u40b5\u40b6\u40b7\u40b8\u40b9\u40ba\u40bb\u40bc\u40bd\u40be\u40bf\u40c0\u40c1\u40c2\u40c3\u40c4\u40c5\u40c6\u40c7\u40c8\u40c9\u40ca\u40cb\u40cc\u40cd\u40ce\u40cf\u40d0\u40d1\u40d2\u40d3\u40d4\u40d5\u40d6\u40d7\u40d8\u40d9\u40da\u40db\u40dc\u40dd\u40de\u40df\u40e0\u40e1\u40e2\u40e3\u40e4\u40e5\u40e6\u40e7\u40e8\u40e9\u40ea\u40eb\u40ec\u40ed\u40ee\u40ef\u40f0\u40f1\u40f2\u40f3\u40f4\u40f5\u40f6\u40f7\u40f8\u40f9\u40fa\u40fb\u40fc\u40fd\u40fe\u40ff\u4100\u4101\u4102\u4103\u4104\u4105\u4106\u4107\u4108\u4109\u410a\u410b\u410c\u410d\u410e\u410f\u4110\u4111\u4112\u4113\u4114\u4115\u4116\u4117\u4118\u4119\u411a\u411b\u411c\u411d\u411e\u411f\u4120\u4121\u4122\u4123\u4124\u4125\u4126\u4127\u4128\u4129\u412a\u412b\u412c\u412d\u412e\u412f\u4130\u4131\u4132\u4133\u4134\u4135\u4136\u4137\u4138\u4139\u413a\u413b\u413c\u413d\u413e\u413f\u4140\u4141\u4142\u4143\u4144\u4145\u4146\u4147\u4148\u4149\u414a\u414b\u414c\u414d\u414e\u414f\u4150\u4151\u4152\u4153\u4154\u4155\u4156\u4157\u4158\u4159\u415a\u415b\u415c\u415d\u415e\u415f\u4160\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168\u4169\u416a\u416b\u416c\u416d\u416e\u416f\u4170\u4171\u4172\u4173\u4174\u4175\u4176\u4177\u4178\u4179\u417a\u417b\u417c\u417d\u417e\u417f\u4180\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u4188\u4189\u418a\u418b\u418c\u418d\u418e\u418f\u4190\u4191\u4192\u4193\u4194\u4195\u4196\u4197\u4198\u4199\u419a\u419b\u419c\u419d\u419e\u419f\u41a0\u41a1\u41a2\u41a3\u41a4\u41a5\u41a6\u41a7\u41a8\u41a9\u41aa\u41ab\u41ac\u41ad\u41ae\u41af\u41b0\u41b1\u41b2\u41b3\u41b4\u41b5\u41b6\u41b7\u41b8\u41b9\u41ba\u41bb\u41bc\u41bd\u41be\u41bf\u41c0\u41c1\u41c2\u41c3\u41c4\u41c5\u41c6\u41c7\u41c8\u41c9\u41ca\u41cb\u41cc\u41cd\u41ce\u41cf\u41d0\u41d1\u41d2\u41d3\u41d4\u41d5\u41d6\u41d7\u41d8\u41d9\u41da\u41db\u41dc\u41dd\u41de\u41df\u41e0\u41e1\u41e2\u41e3\u41e4\u41e5\u41e6\u41e7\u41e8\u41e9\u41ea\u41eb\u41ec\u41ed\u41ee\u41ef\u41f0\u41f1\u41f2\u41f3\u41f4\u41f5\u41f6\u41f7\u41f8\u41f9\u41fa\u41fb\u41fc\u41fd\u41fe\u41ff\u4200\u4201\u4202\u4203\u4204\u4205\u4206\u4207\u4208\u4209\u420a\u420b\u420c\u420d\u420e\u420f\u4210\u4211\u4212\u4213\u4214\u4215\u4216\u4217\u4218\u4219\u421a\u421b\u421c\u421d\u421e\u421f\u4220\u4221\u4222\u4223\u4224\u4225\u4226\u4227\u4228\u4229\u422a\u422b\u422c\u422d\u422e\u422f\u4230\u4231\u4232\u4233\u4234\u4235\u4236\u4237\u4238\u4239\u423a\u423b\u423c\u423d\u423e\u423f\u4240\u4241\u4242\u4243\u4244\u4245\u4246\u4247\u4248\u4249\u424a\u424b\u424c\u424d\u424e\u424f\u4250\u4251\u4252\u4253\u4254\u4255\u4256\u4257\u4258\u4259\u425a\u425b\u425c\u425d\u425e\u425f\u4260\u4261\u4262\u4263\u4264\u4265\u4266\u4267\u4268\u4269\u426a\u426b\u426c\u426d\u426e\u426f\u4270\u4271\u4272\u4273\u4274\u4275\u4276\u4277\u4278\u4279\u427a\u427b\u427c\u427d\u427e\u427f\u4280\u4281\u4282\u4283\u4284\u4285\u4286\u4287\u4288\u4289\u428a\u428b\u428c\u428d\u428e\u428f\u4290\u4291\u4292\u4293\u4294\u4295\u4296\u4297\u4298\u4299\u429a\u429b\u429c\u429d\u429e\u429f\u42a0\u42a1\u42a2\u42a3\u42a4\u42a5\u42a6\u42a7\u42a8\u42a9\u42aa\u42ab\u42ac\u42ad\u42ae\u42af\u42b0\u42b1\u42b2\u42b3\u42b4\u42b5\u42b6\u42b7\u42b8\u42b9\u42ba\u42bb\u42bc\u42bd\u42be\u42bf\u42c0\u42c1\u42c2\u42c3\u42c4\u42c5\u42c6\u42c7\u42c8\u42c9\u42ca\u42cb\u42cc\u42cd\u42ce\u42cf\u42d0\u42d1\u42d2\u42d3\u42d4\u42d5\u42d6\u42d7\u42d8\u42d9\u42da\u42db\u42dc\u42dd\u42de\u42df\u42e0\u42e1\u42e2\u42e3\u42e4\u42e5\u42e6\u42e7\u42e8\u42e9\u42ea\u42eb\u42ec\u42ed\u42ee\u42ef\u42f0\u42f1\u42f2\u42f3\u42f4\u42f5\u42f6\u42f7\u42f8\u42f9\u42fa\u42fb\u42fc\u42fd\u42fe\u42ff\u4300\u4301\u4302\u4303\u4304\u4305\u4306\u4307\u4308\u4309\u430a\u430b\u430c\u430d\u430e\u430f\u4310\u4311\u4312\u4313\u4314\u4315\u4316\u4317\u4318\u4319\u431a\u431b\u431c\u431d\u431e\u431f\u4320\u4321\u4322\u4323\u4324\u4325\u4326\u4327\u4328\u4329\u432a\u432b\u432c\u432d\u432e\u432f\u4330\u4331\u4332\u4333\u4334\u4335\u4336\u4337\u4338\u4339\u433a\u433b\u433c\u433d\u433e\u433f\u4340\u4341\u4342\u4343\u4344\u4345\u4346\u4347\u4348\u4349\u434a\u434b\u434c\u434d\u434e\u434f\u4350\u4351\u4352\u4353\u4354\u4355\u4356\u4357\u4358\u4359\u435a\u435b\u435c\u435d\u435e\u435f\u4360\u4361\u4362\u4363\u4364\u4365\u4366\u4367\u4368\u4369\u436a\u436b\u436c\u436d\u436e\u436f\u4370\u4371\u4372\u4373\u4374\u4375\u4376\u4377\u4378\u4379\u437a\u437b\u437c\u437d\u437e\u437f\u4380\u4381\u4382\u4383\u4384\u4385\u4386\u4387\u4388\u4389\u438a\u438b\u438c\u438d\u438e\u438f\u4390\u4391\u4392\u4393\u4394\u4395\u4396\u4397\u4398\u4399\u439a\u439b\u439c\u439d\u439e\u439f\u43a0\u43a1\u43a2\u43a3\u43a4\u43a5\u43a6\u43a7\u43a8\u43a9\u43aa\u43ab\u43ac\u43ad\u43ae\u43af\u43b0\u43b1\u43b2\u43b3\u43b4\u43b5\u43b6\u43b7\u43b8\u43b9\u43ba\u43bb\u43bc\u43bd\u43be\u43bf\u43c0\u43c1\u43c2\u43c3\u43c4\u43c5\u43c6\u43c7\u43c8\u43c9\u43ca\u43cb\u43cc\u43cd\u43ce\u43cf\u43d0\u43d1\u43d2\u43d3\u43d4\u43d5\u43d6\u43d7\u43d8\u43d9\u43da\u43db\u43dc\u43dd\u43de\u43df\u43e0\u43e1\u43e2\u43e3\u43e4\u43e5\u43e6\u43e7\u43e8\u43e9\u43ea\u43eb\u43ec\u43ed\u43ee\u43ef\u43f0\u43f1\u43f2\u43f3\u43f4\u43f5\u43f6\u43f7\u43f8\u43f9\u43fa\u43fb\u43fc\u43fd\u43fe\u43ff\u4400\u4401\u4402\u4403\u4404\u4405\u4406\u4407\u4408\u4409\u440a\u440b\u440c\u440d\u440e\u440f\u4410\u4411\u4412\u4413\u4414\u4415\u4416\u4417\u4418\u4419\u441a\u441b\u441c\u441d\u441e\u441f\u4420\u4421\u4422\u4423\u4424\u4425\u4426\u4427\u4428\u4429\u442a\u442b\u442c\u442d\u442e\u442f\u4430\u4431\u4432\u4433\u4434\u4435\u4436\u4437\u4438\u4439\u443a\u443b\u443c\u443d\u443e\u443f\u4440\u4441\u4442\u4443\u4444\u4445\u4446\u4447\u4448\u4449\u444a\u444b\u444c\u444d\u444e\u444f\u4450\u4451\u4452\u4453\u4454\u4455\u4456\u4457\u4458\u4459\u445a\u445b\u445c\u445d\u445e\u445f\u4460\u4461\u4462\u4463\u4464\u4465\u4466\u4467\u4468\u4469\u446a\u446b\u446c\u446d\u446e\u446f\u4470\u4471\u4472\u4473\u4474\u4475\u4476\u4477\u4478\u4479\u447a\u447b\u447c\u447d\u447e\u447f\u4480\u4481\u4482\u4483\u4484\u4485\u4486\u4487\u4488\u4489\u448a\u448b\u448c\u448d\u448e\u448f\u4490\u4491\u4492\u4493\u4494\u4495\u4496\u4497\u4498\u4499\u449a\u449b\u449c\u449d\u449e\u449f\u44a0\u44a1\u44a2\u44a3\u44a4\u44a5\u44a6\u44a7\u44a8\u44a9\u44aa\u44ab\u44ac\u44ad\u44ae\u44af\u44b0\u44b1\u44b2\u44b3\u44b4\u44b5\u44b6\u44b7\u44b8\u44b9\u44ba\u44bb\u44bc\u44bd\u44be\u44bf\u44c0\u44c1\u44c2\u44c3\u44c4\u44c5\u44c6\u44c7\u44c8\u44c9\u44ca\u44cb\u44cc\u44cd\u44ce\u44cf\u44d0\u44d1\u44d2\u44d3\u44d4\u44d5\u44d6\u44d7\u44d8\u44d9\u44da\u44db\u44dc\u44dd\u44de\u44df\u44e0\u44e1\u44e2\u44e3\u44e4\u44e5\u44e6\u44e7\u44e8\u44e9\u44ea\u44eb\u44ec\u44ed\u44ee\u44ef\u44f0\u44f1\u44f2\u44f3\u44f4\u44f5\u44f6\u44f7\u44f8\u44f9\u44fa\u44fb\u44fc\u44fd\u44fe\u44ff\u4500\u4501\u4502\u4503\u4504\u4505\u4506\u4507\u4508\u4509\u450a\u450b\u450c\u450d\u450e\u450f\u4510\u4511\u4512\u4513\u4514\u4515\u4516\u4517\u4518\u4519\u451a\u451b\u451c\u451d\u451e\u451f\u4520\u4521\u4522\u4523\u4524\u4525\u4526\u4527\u4528\u4529\u452a\u452b\u452c\u452d\u452e\u452f\u4530\u4531\u4532\u4533\u4534\u4535\u4536\u4537\u4538\u4539\u453a\u453b\u453c\u453d\u453e\u453f\u4540\u4541\u4542\u4543\u4544\u4545\u4546\u4547\u4548\u4549\u454a\u454b\u454c\u454d\u454e\u454f\u4550\u4551\u4552\u4553\u4554\u4555\u4556\u4557\u4558\u4559\u455a\u455b\u455c\u455d\u455e\u455f\u4560\u4561\u4562\u4563\u4564\u4565\u4566\u4567\u4568\u4569\u456a\u456b\u456c\u456d\u456e\u456f\u4570\u4571\u4572\u4573\u4574\u4575\u4576\u4577\u4578\u4579\u457a\u457b\u457c\u457d\u457e\u457f\u4580\u4581\u4582\u4583\u4584\u4585\u4586\u4587\u4588\u4589\u458a\u458b\u458c\u458d\u458e\u458f\u4590\u4591\u4592\u4593\u4594\u4595\u4596\u4597\u4598\u4599\u459a\u459b\u459c\u459d\u459e\u459f\u45a0\u45a1\u45a2\u45a3\u45a4\u45a5\u45a6\u45a7\u45a8\u45a9\u45aa\u45ab\u45ac\u45ad\u45ae\u45af\u45b0\u45b1\u45b2\u45b3\u45b4\u45b5\u45b6\u45b7\u45b8\u45b9\u45ba\u45bb\u45bc\u45bd\u45be\u45bf\u45c0\u45c1\u45c2\u45c3\u45c4\u45c5\u45c6\u45c7\u45c8\u45c9\u45ca\u45cb\u45cc\u45cd\u45ce\u45cf\u45d0\u45d1\u45d2\u45d3\u45d4\u45d5\u45d6\u45d7\u45d8\u45d9\u45da\u45db\u45dc\u45dd\u45de\u45df\u45e0\u45e1\u45e2\u45e3\u45e4\u45e5\u45e6\u45e7\u45e8\u45e9\u45ea\u45eb\u45ec\u45ed\u45ee\u45ef\u45f0\u45f1\u45f2\u45f3\u45f4\u45f5\u45f6\u45f7\u45f8\u45f9\u45fa\u45fb\u45fc\u45fd\u45fe\u45ff\u4600\u4601\u4602\u4603\u4604\u4605\u4606\u4607\u4608\u4609\u460a\u460b\u460c\u460d\u460e\u460f\u4610\u4611\u4612\u4613\u4614\u4615\u4616\u4617\u4618\u4619\u461a\u461b\u461c\u461d\u461e\u461f\u4620\u4621\u4622\u4623\u4624\u4625\u4626\u4627\u4628\u4629\u462a\u462b\u462c\u462d\u462e\u462f\u4630\u4631\u4632\u4633\u4634\u4635\u4636\u4637\u4638\u4639\u463a\u463b\u463c\u463d\u463e\u463f\u4640\u4641\u4642\u4643\u4644\u4645\u4646\u4647\u4648\u4649\u464a\u464b\u464c\u464d\u464e\u464f\u4650\u4651\u4652\u4653\u4654\u4655\u4656\u4657\u4658\u4659\u465a\u465b\u465c\u465d\u465e\u465f\u4660\u4661\u4662\u4663\u4664\u4665\u4666\u4667\u4668\u4669\u466a\u466b\u466c\u466d\u466e\u466f\u4670\u4671\u4672\u4673\u4674\u4675\u4676\u4677\u4678\u4679\u467a\u467b\u467c\u467d\u467e\u467f\u4680\u4681\u4682\u4683\u4684\u4685\u4686\u4687\u4688\u4689\u468a\u468b\u468c\u468d\u468e\u468f\u4690\u4691\u4692\u4693\u4694\u4695\u4696\u4697\u4698\u4699\u469a\u469b\u469c\u469d\u469e\u469f\u46a0\u46a1\u46a2\u46a3\u46a4\u46a5\u46a6\u46a7\u46a8\u46a9\u46aa\u46ab\u46ac\u46ad\u46ae\u46af\u46b0\u46b1\u46b2\u46b3\u46b4\u46b5\u46b6\u46b7\u46b8\u46b9\u46ba\u46bb\u46bc\u46bd\u46be\u46bf\u46c0\u46c1\u46c2\u46c3\u46c4\u46c5\u46c6\u46c7\u46c8\u46c9\u46ca\u46cb\u46cc\u46cd\u46ce\u46cf\u46d0\u46d1\u46d2\u46d3\u46d4\u46d5\u46d6\u46d7\u46d8\u46d9\u46da\u46db\u46dc\u46dd\u46de\u46df\u46e0\u46e1\u46e2\u46e3\u46e4\u46e5\u46e6\u46e7\u46e8\u46e9\u46ea\u46eb\u46ec\u46ed\u46ee\u46ef\u46f0\u46f1\u46f2\u46f3\u46f4\u46f5\u46f6\u46f7\u46f8\u46f9\u46fa\u46fb\u46fc\u46fd\u46fe\u46ff\u4700\u4701\u4702\u4703\u4704\u4705\u4706\u4707\u4708\u4709\u470a\u470b\u470c\u470d\u470e\u470f\u4710\u4711\u4712\u4713\u4714\u4715\u4716\u4717\u4718\u4719\u471a\u471b\u471c\u471d\u471e\u471f\u4720\u4721\u4722\u4723\u4724\u4725\u4726\u4727\u4728\u4729\u472a\u472b\u472c\u472d\u472e\u472f\u4730\u4731\u4732\u4733\u4734\u4735\u4736\u4737\u4738\u4739\u473a\u473b\u473c\u473d\u473e\u473f\u4740\u4741\u4742\u4743\u4744\u4745\u4746\u4747\u4748\u4749\u474a\u474b\u474c\u474d\u474e\u474f\u4750\u4751\u4752\u4753\u4754\u4755\u4756\u4757\u4758\u4759\u475a\u475b\u475c\u475d\u475e\u475f\u4760\u4761\u4762\u4763\u4764\u4765\u4766\u4767\u4768\u4769\u476a\u476b\u476c\u476d\u476e\u476f\u4770\u4771\u4772\u4773\u4774\u4775\u4776\u4777\u4778\u4779\u477a\u477b\u477c\u477d\u477e\u477f\u4780\u4781\u4782\u4783\u4784\u4785\u4786\u4787\u4788\u4789\u478a\u478b\u478c\u478d\u478e\u478f\u4790\u4791\u4792\u4793\u4794\u4795\u4796\u4797\u4798\u4799\u479a\u479b\u479c\u479d\u479e\u479f\u47a0\u47a1\u47a2\u47a3\u47a4\u47a5\u47a6\u47a7\u47a8\u47a9\u47aa\u47ab\u47ac\u47ad\u47ae\u47af\u47b0\u47b1\u47b2\u47b3\u47b4\u47b5\u47b6\u47b7\u47b8\u47b9\u47ba\u47bb\u47bc\u47bd\u47be\u47bf\u47c0\u47c1\u47c2\u47c3\u47c4\u47c5\u47c6\u47c7\u47c8\u47c9\u47ca\u47cb\u47cc\u47cd\u47ce\u47cf\u47d0\u47d1\u47d2\u47d3\u47d4\u47d5\u47d6\u47d7\u47d8\u47d9\u47da\u47db\u47dc\u47dd\u47de\u47df\u47e0\u47e1\u47e2\u47e3\u47e4\u47e5\u47e6\u47e7\u47e8\u47e9\u47ea\u47eb\u47ec\u47ed\u47ee\u47ef\u47f0\u47f1\u47f2\u47f3\u47f4\u47f5\u47f6\u47f7\u47f8\u47f9\u47fa\u47fb\u47fc\u47fd\u47fe\u47ff\u4800\u4801\u4802\u4803\u4804\u4805\u4806\u4807\u4808\u4809\u480a\u480b\u480c\u480d\u480e\u480f\u4810\u4811\u4812\u4813\u4814\u4815\u4816\u4817\u4818\u4819\u481a\u481b\u481c\u481d\u481e\u481f\u4820\u4821\u4822\u4823\u4824\u4825\u4826\u4827\u4828\u4829\u482a\u482b\u482c\u482d\u482e\u482f\u4830\u4831\u4832\u4833\u4834\u4835\u4836\u4837\u4838\u4839\u483a\u483b\u483c\u483d\u483e\u483f\u4840\u4841\u4842\u4843\u4844\u4845\u4846\u4847\u4848\u4849\u484a\u484b\u484c\u484d\u484e\u484f\u4850\u4851\u4852\u4853\u4854\u4855\u4856\u4857\u4858\u4859\u485a\u485b\u485c\u485d\u485e\u485f\u4860\u4861\u4862\u4863\u4864\u4865\u4866\u4867\u4868\u4869\u486a\u486b\u486c\u486d\u486e\u486f\u4870\u4871\u4872\u4873\u4874\u4875\u4876\u4877\u4878\u4879\u487a\u487b\u487c\u487d\u487e\u487f\u4880\u4881\u4882\u4883\u4884\u4885\u4886\u4887\u4888\u4889\u488a\u488b\u488c\u488d\u488e\u488f\u4890\u4891\u4892\u4893\u4894\u4895\u4896\u4897\u4898\u4899\u489a\u489b\u489c\u489d\u489e\u489f\u48a0\u48a1\u48a2\u48a3\u48a4\u48a5\u48a6\u48a7\u48a8\u48a9\u48aa\u48ab\u48ac\u48ad\u48ae\u48af\u48b0\u48b1\u48b2\u48b3\u48b4\u48b5\u48b6\u48b7\u48b8\u48b9\u48ba\u48bb\u48bc\u48bd\u48be\u48bf\u48c0\u48c1\u48c2\u48c3\u48c4\u48c5\u48c6\u48c7\u48c8\u48c9\u48ca\u48cb\u48cc\u48cd\u48ce\u48cf\u48d0\u48d1\u48d2\u48d3\u48d4\u48d5\u48d6\u48d7\u48d8\u48d9\u48da\u48db\u48dc\u48dd\u48de\u48df\u48e0\u48e1\u48e2\u48e3\u48e4\u48e5\u48e6\u48e7\u48e8\u48e9\u48ea\u48eb\u48ec\u48ed\u48ee\u48ef\u48f0\u48f1\u48f2\u48f3\u48f4\u48f5\u48f6\u48f7\u48f8\u48f9\u48fa\u48fb\u48fc\u48fd\u48fe\u48ff\u4900\u4901\u4902\u4903\u4904\u4905\u4906\u4907\u4908\u4909\u490a\u490b\u490c\u490d\u490e\u490f\u4910\u4911\u4912\u4913\u4914\u4915\u4916\u4917\u4918\u4919\u491a\u491b\u491c\u491d\u491e\u491f\u4920\u4921\u4922\u4923\u4924\u4925\u4926\u4927\u4928\u4929\u492a\u492b\u492c\u492d\u492e\u492f\u4930\u4931\u4932\u4933\u4934\u4935\u4936\u4937\u4938\u4939\u493a\u493b\u493c\u493d\u493e\u493f\u4940\u4941\u4942\u4943\u4944\u4945\u4946\u4947\u4948\u4949\u494a\u494b\u494c\u494d\u494e\u494f\u4950\u4951\u4952\u4953\u4954\u4955\u4956\u4957\u4958\u4959\u495a\u495b\u495c\u495d\u495e\u495f\u4960\u4961\u4962\u4963\u4964\u4965\u4966\u4967\u4968\u4969\u496a\u496b\u496c\u496d\u496e\u496f\u4970\u4971\u4972\u4973\u4974\u4975\u4976\u4977\u4978\u4979\u497a\u497b\u497c\u497d\u497e\u497f\u4980\u4981\u4982\u4983\u4984\u4985\u4986\u4987\u4988\u4989\u498a\u498b\u498c\u498d\u498e\u498f\u4990\u4991\u4992\u4993\u4994\u4995\u4996\u4997\u4998\u4999\u499a\u499b\u499c\u499d\u499e\u499f\u49a0\u49a1\u49a2\u49a3\u49a4\u49a5\u49a6\u49a7\u49a8\u49a9\u49aa\u49ab\u49ac\u49ad\u49ae\u49af\u49b0\u49b1\u49b2\u49b3\u49b4\u49b5\u49b6\u49b7\u49b8\u49b9\u49ba\u49bb\u49bc\u49bd\u49be\u49bf\u49c0\u49c1\u49c2\u49c3\u49c4\u49c5\u49c6\u49c7\u49c8\u49c9\u49ca\u49cb\u49cc\u49cd\u49ce\u49cf\u49d0\u49d1\u49d2\u49d3\u49d4\u49d5\u49d6\u49d7\u49d8\u49d9\u49da\u49db\u49dc\u49dd\u49de\u49df\u49e0\u49e1\u49e2\u49e3\u49e4\u49e5\u49e6\u49e7\u49e8\u49e9\u49ea\u49eb\u49ec\u49ed\u49ee\u49ef\u49f0\u49f1\u49f2\u49f3\u49f4\u49f5\u49f6\u49f7\u49f8\u49f9\u49fa\u49fb\u49fc\u49fd\u49fe\u49ff\u4a00\u4a01\u4a02\u4a03\u4a04\u4a05\u4a06\u4a07\u4a08\u4a09\u4a0a\u4a0b\u4a0c\u4a0d\u4a0e\u4a0f\u4a10\u4a11\u4a12\u4a13\u4a14\u4a15\u4a16\u4a17\u4a18\u4a19\u4a1a\u4a1b\u4a1c\u4a1d\u4a1e\u4a1f\u4a20\u4a21\u4a22\u4a23\u4a24\u4a25\u4a26\u4a27\u4a28\u4a29\u4a2a\u4a2b\u4a2c\u4a2d\u4a2e\u4a2f\u4a30\u4a31\u4a32\u4a33\u4a34\u4a35\u4a36\u4a37\u4a38\u4a39\u4a3a\u4a3b\u4a3c\u4a3d\u4a3e\u4a3f\u4a40\u4a41\u4a42\u4a43\u4a44\u4a45\u4a46\u4a47\u4a48\u4a49\u4a4a\u4a4b\u4a4c\u4a4d\u4a4e\u4a4f\u4a50\u4a51\u4a52\u4a53\u4a54\u4a55\u4a56\u4a57\u4a58\u4a59\u4a5a\u4a5b\u4a5c\u4a5d\u4a5e\u4a5f\u4a60\u4a61\u4a62\u4a63\u4a64\u4a65\u4a66\u4a67\u4a68\u4a69\u4a6a\u4a6b\u4a6c\u4a6d\u4a6e\u4a6f\u4a70\u4a71\u4a72\u4a73\u4a74\u4a75\u4a76\u4a77\u4a78\u4a79\u4a7a\u4a7b\u4a7c\u4a7d\u4a7e\u4a7f\u4a80\u4a81\u4a82\u4a83\u4a84\u4a85\u4a86\u4a87\u4a88\u4a89\u4a8a\u4a8b\u4a8c\u4a8d\u4a8e\u4a8f\u4a90\u4a91\u4a92\u4a93\u4a94\u4a95\u4a96\u4a97\u4a98\u4a99\u4a9a\u4a9b\u4a9c\u4a9d\u4a9e\u4a9f\u4aa0\u4aa1\u4aa2\u4aa3\u4aa4\u4aa5\u4aa6\u4aa7\u4aa8\u4aa9\u4aaa\u4aab\u4aac\u4aad\u4aae\u4aaf\u4ab0\u4ab1\u4ab2\u4ab3\u4ab4\u4ab5\u4ab6\u4ab7\u4ab8\u4ab9\u4aba\u4abb\u4abc\u4abd\u4abe\u4abf\u4ac0\u4ac1\u4ac2\u4ac3\u4ac4\u4ac5\u4ac6\u4ac7\u4ac8\u4ac9\u4aca\u4acb\u4acc\u4acd\u4ace\u4acf\u4ad0\u4ad1\u4ad2\u4ad3\u4ad4\u4ad5\u4ad6\u4ad7\u4ad8\u4ad9\u4ada\u4adb\u4adc\u4add\u4ade\u4adf\u4ae0\u4ae1\u4ae2\u4ae3\u4ae4\u4ae5\u4ae6\u4ae7\u4ae8\u4ae9\u4aea\u4aeb\u4aec\u4aed\u4aee\u4aef\u4af0\u4af1\u4af2\u4af3\u4af4\u4af5\u4af6\u4af7\u4af8\u4af9\u4afa\u4afb\u4afc\u4afd\u4afe\u4aff\u4b00\u4b01\u4b02\u4b03\u4b04\u4b05\u4b06\u4b07\u4b08\u4b09\u4b0a\u4b0b\u4b0c\u4b0d\u4b0e\u4b0f\u4b10\u4b11\u4b12\u4b13\u4b14\u4b15\u4b16\u4b17\u4b18\u4b19\u4b1a\u4b1b\u4b1c\u4b1d\u4b1e\u4b1f\u4b20\u4b21\u4b22\u4b23\u4b24\u4b25\u4b26\u4b27\u4b28\u4b29\u4b2a\u4b2b\u4b2c\u4b2d\u4b2e\u4b2f\u4b30\u4b31\u4b32\u4b33\u4b34\u4b35\u4b36\u4b37\u4b38\u4b39\u4b3a\u4b3b\u4b3c\u4b3d\u4b3e\u4b3f\u4b40\u4b41\u4b42\u4b43\u4b44\u4b45\u4b46\u4b47\u4b48\u4b49\u4b4a\u4b4b\u4b4c\u4b4d\u4b4e\u4b4f\u4b50\u4b51\u4b52\u4b53\u4b54\u4b55\u4b56\u4b57\u4b58\u4b59\u4b5a\u4b5b\u4b5c\u4b5d\u4b5e\u4b5f\u4b60\u4b61\u4b62\u4b63\u4b64\u4b65\u4b66\u4b67\u4b68\u4b69\u4b6a\u4b6b\u4b6c\u4b6d\u4b6e\u4b6f\u4b70\u4b71\u4b72\u4b73\u4b74\u4b75\u4b76\u4b77\u4b78\u4b79\u4b7a\u4b7b\u4b7c\u4b7d\u4b7e\u4b7f\u4b80\u4b81\u4b82\u4b83\u4b84\u4b85\u4b86\u4b87\u4b88\u4b89\u4b8a\u4b8b\u4b8c\u4b8d\u4b8e\u4b8f\u4b90\u4b91\u4b92\u4b93\u4b94\u4b95\u4b96\u4b97\u4b98\u4b99\u4b9a\u4b9b\u4b9c\u4b9d\u4b9e\u4b9f\u4ba0\u4ba1\u4ba2\u4ba3\u4ba4\u4ba5\u4ba6\u4ba7\u4ba8\u4ba9\u4baa\u4bab\u4bac\u4bad\u4bae\u4baf\u4bb0\u4bb1\u4bb2\u4bb3\u4bb4\u4bb5\u4bb6\u4bb7\u4bb8\u4bb9\u4bba\u4bbb\u4bbc\u4bbd\u4bbe\u4bbf\u4bc0\u4bc1\u4bc2\u4bc3\u4bc4\u4bc5\u4bc6\u4bc7\u4bc8\u4bc9\u4bca\u4bcb\u4bcc\u4bcd\u4bce\u4bcf\u4bd0\u4bd1\u4bd2\u4bd3\u4bd4\u4bd5\u4bd6\u4bd7\u4bd8\u4bd9\u4bda\u4bdb\u4bdc\u4bdd\u4bde\u4bdf\u4be0\u4be1\u4be2\u4be3\u4be4\u4be5\u4be6\u4be7\u4be8\u4be9\u4bea\u4beb\u4bec\u4bed\u4bee\u4bef\u4bf0\u4bf1\u4bf2\u4bf3\u4bf4\u4bf5\u4bf6\u4bf7\u4bf8\u4bf9\u4bfa\u4bfb\u4bfc\u4bfd\u4bfe\u4bff\u4c00\u4c01\u4c02\u4c03\u4c04\u4c05\u4c06\u4c07\u4c08\u4c09\u4c0a\u4c0b\u4c0c\u4c0d\u4c0e\u4c0f\u4c10\u4c11\u4c12\u4c13\u4c14\u4c15\u4c16\u4c17\u4c18\u4c19\u4c1a\u4c1b\u4c1c\u4c1d\u4c1e\u4c1f\u4c20\u4c21\u4c22\u4c23\u4c24\u4c25\u4c26\u4c27\u4c28\u4c29\u4c2a\u4c2b\u4c2c\u4c2d\u4c2e\u4c2f\u4c30\u4c31\u4c32\u4c33\u4c34\u4c35\u4c36\u4c37\u4c38\u4c39\u4c3a\u4c3b\u4c3c\u4c3d\u4c3e\u4c3f\u4c40\u4c41\u4c42\u4c43\u4c44\u4c45\u4c46\u4c47\u4c48\u4c49\u4c4a\u4c4b\u4c4c\u4c4d\u4c4e\u4c4f\u4c50\u4c51\u4c52\u4c53\u4c54\u4c55\u4c56\u4c57\u4c58\u4c59\u4c5a\u4c5b\u4c5c\u4c5d\u4c5e\u4c5f\u4c60\u4c61\u4c62\u4c63\u4c64\u4c65\u4c66\u4c67\u4c68\u4c69\u4c6a\u4c6b\u4c6c\u4c6d\u4c6e\u4c6f\u4c70\u4c71\u4c72\u4c73\u4c74\u4c75\u4c76\u4c77\u4c78\u4c79\u4c7a\u4c7b\u4c7c\u4c7d\u4c7e\u4c7f\u4c80\u4c81\u4c82\u4c83\u4c84\u4c85\u4c86\u4c87\u4c88\u4c89\u4c8a\u4c8b\u4c8c\u4c8d\u4c8e\u4c8f\u4c90\u4c91\u4c92\u4c93\u4c94\u4c95\u4c96\u4c97\u4c98\u4c99\u4c9a\u4c9b\u4c9c\u4c9d\u4c9e\u4c9f\u4ca0\u4ca1\u4ca2\u4ca3\u4ca4\u4ca5\u4ca6\u4ca7\u4ca8\u4ca9\u4caa\u4cab\u4cac\u4cad\u4cae\u4caf\u4cb0\u4cb1\u4cb2\u4cb3\u4cb4\u4cb5\u4cb6\u4cb7\u4cb8\u4cb9\u4cba\u4cbb\u4cbc\u4cbd\u4cbe\u4cbf\u4cc0\u4cc1\u4cc2\u4cc3\u4cc4\u4cc5\u4cc6\u4cc7\u4cc8\u4cc9\u4cca\u4ccb\u4ccc\u4ccd\u4cce\u4ccf\u4cd0\u4cd1\u4cd2\u4cd3\u4cd4\u4cd5\u4cd6\u4cd7\u4cd8\u4cd9\u4cda\u4cdb\u4cdc\u4cdd\u4cde\u4cdf\u4ce0\u4ce1\u4ce2\u4ce3\u4ce4\u4ce5\u4ce6\u4ce7\u4ce8\u4ce9\u4cea\u4ceb\u4cec\u4ced\u4cee\u4cef\u4cf0\u4cf1\u4cf2\u4cf3\u4cf4\u4cf5\u4cf6\u4cf7\u4cf8\u4cf9\u4cfa\u4cfb\u4cfc\u4cfd\u4cfe\u4cff\u4d00\u4d01\u4d02\u4d03\u4d04\u4d05\u4d06\u4d07\u4d08\u4d09\u4d0a\u4d0b\u4d0c\u4d0d\u4d0e\u4d0f\u4d10\u4d11\u4d12\u4d13\u4d14\u4d15\u4d16\u4d17\u4d18\u4d19\u4d1a\u4d1b\u4d1c\u4d1d\u4d1e\u4d1f\u4d20\u4d21\u4d22\u4d23\u4d24\u4d25\u4d26\u4d27\u4d28\u4d29\u4d2a\u4d2b\u4d2c\u4d2d\u4d2e\u4d2f\u4d30\u4d31\u4d32\u4d33\u4d34\u4d35\u4d36\u4d37\u4d38\u4d39\u4d3a\u4d3b\u4d3c\u4d3d\u4d3e\u4d3f\u4d40\u4d41\u4d42\u4d43\u4d44\u4d45\u4d46\u4d47\u4d48\u4d49\u4d4a\u4d4b\u4d4c\u4d4d\u4d4e\u4d4f\u4d50\u4d51\u4d52\u4d53\u4d54\u4d55\u4d56\u4d57\u4d58\u4d59\u4d5a\u4d5b\u4d5c\u4d5d\u4d5e\u4d5f\u4d60\u4d61\u4d62\u4d63\u4d64\u4d65\u4d66\u4d67\u4d68\u4d69\u4d6a\u4d6b\u4d6c\u4d6d\u4d6e\u4d6f\u4d70\u4d71\u4d72\u4d73\u4d74\u4d75\u4d76\u4d77\u4d78\u4d79\u4d7a\u4d7b\u4d7c\u4d7d\u4d7e\u4d7f\u4d80\u4d81\u4d82\u4d83\u4d84\u4d85\u4d86\u4d87\u4d88\u4d89\u4d8a\u4d8b\u4d8c\u4d8d\u4d8e\u4d8f\u4d90\u4d91\u4d92\u4d93\u4d94\u4d95\u4d96\u4d97\u4d98\u4d99\u4d9a\u4d9b\u4d9c\u4d9d\u4d9e\u4d9f\u4da0\u4da1\u4da2\u4da3\u4da4\u4da5\u4da6\u4da7\u4da8\u4da9\u4daa\u4dab\u4dac\u4dad\u4dae\u4daf\u4db0\u4db1\u4db2\u4db3\u4db4\u4db5\u4e00\u4e01\u4e02\u4e03\u4e04\u4e05\u4e06\u4e07\u4e08\u4e09\u4e0a\u4e0b\u4e0c\u4e0d\u4e0e\u4e0f\u4e10\u4e11\u4e12\u4e13\u4e14\u4e15\u4e16\u4e17\u4e18\u4e19\u4e1a\u4e1b\u4e1c\u4e1d\u4e1e\u4e1f\u4e20\u4e21\u4e22\u4e23\u4e24\u4e25\u4e26\u4e27\u4e28\u4e29\u4e2a\u4e2b\u4e2c\u4e2d\u4e2e\u4e2f\u4e30\u4e31\u4e32\u4e33\u4e34\u4e35\u4e36\u4e37\u4e38\u4e39\u4e3a\u4e3b\u4e3c\u4e3d\u4e3e\u4e3f\u4e40\u4e41\u4e42\u4e43\u4e44\u4e45\u4e46\u4e47\u4e48\u4e49\u4e4a\u4e4b\u4e4c\u4e4d\u4e4e\u4e4f\u4e50\u4e51\u4e52\u4e53\u4e54\u4e55\u4e56\u4e57\u4e58\u4e59\u4e5a\u4e5b\u4e5c\u4e5d\u4e5e\u4e5f\u4e60\u4e61\u4e62\u4e63\u4e64\u4e65\u4e66\u4e67\u4e68\u4e69\u4e6a\u4e6b\u4e6c\u4e6d\u4e6e\u4e6f\u4e70\u4e71\u4e72\u4e73\u4e74\u4e75\u4e76\u4e77\u4e78\u4e79\u4e7a\u4e7b\u4e7c\u4e7d\u4e7e\u4e7f\u4e80\u4e81\u4e82\u4e83\u4e84\u4e85\u4e86\u4e87\u4e88\u4e89\u4e8a\u4e8b\u4e8c\u4e8d\u4e8e\u4e8f\u4e90\u4e91\u4e92\u4e93\u4e94\u4e95\u4e96\u4e97\u4e98\u4e99\u4e9a\u4e9b\u4e9c\u4e9d\u4e9e\u4e9f\u4ea0\u4ea1\u4ea2\u4ea3\u4ea4\u4ea5\u4ea6\u4ea7\u4ea8\u4ea9\u4eaa\u4eab\u4eac\u4ead\u4eae\u4eaf\u4eb0\u4eb1\u4eb2\u4eb3\u4eb4\u4eb5\u4eb6\u4eb7\u4eb8\u4eb9\u4eba\u4ebb\u4ebc\u4ebd\u4ebe\u4ebf\u4ec0\u4ec1\u4ec2\u4ec3\u4ec4\u4ec5\u4ec6\u4ec7\u4ec8\u4ec9\u4eca\u4ecb\u4ecc\u4ecd\u4ece\u4ecf\u4ed0\u4ed1\u4ed2\u4ed3\u4ed4\u4ed5\u4ed6\u4ed7\u4ed8\u4ed9\u4eda\u4edb\u4edc\u4edd\u4ede\u4edf\u4ee0\u4ee1\u4ee2\u4ee3\u4ee4\u4ee5\u4ee6\u4ee7\u4ee8\u4ee9\u4eea\u4eeb\u4eec\u4eed\u4eee\u4eef\u4ef0\u4ef1\u4ef2\u4ef3\u4ef4\u4ef5\u4ef6\u4ef7\u4ef8\u4ef9\u4efa\u4efb\u4efc\u4efd\u4efe\u4eff\u4f00\u4f01\u4f02\u4f03\u4f04\u4f05\u4f06\u4f07\u4f08\u4f09\u4f0a\u4f0b\u4f0c\u4f0d\u4f0e\u4f0f\u4f10\u4f11\u4f12\u4f13\u4f14\u4f15\u4f16\u4f17\u4f18\u4f19\u4f1a\u4f1b\u4f1c\u4f1d\u4f1e\u4f1f\u4f20\u4f21\u4f22\u4f23\u4f24\u4f25\u4f26\u4f27\u4f28\u4f29\u4f2a\u4f2b\u4f2c\u4f2d\u4f2e\u4f2f\u4f30\u4f31\u4f32\u4f33\u4f34\u4f35\u4f36\u4f37\u4f38\u4f39\u4f3a\u4f3b\u4f3c\u4f3d\u4f3e\u4f3f\u4f40\u4f41\u4f42\u4f43\u4f44\u4f45\u4f46\u4f47\u4f48\u4f49\u4f4a\u4f4b\u4f4c\u4f4d\u4f4e\u4f4f\u4f50\u4f51\u4f52\u4f53\u4f54\u4f55\u4f56\u4f57\u4f58\u4f59\u4f5a\u4f5b\u4f5c\u4f5d\u4f5e\u4f5f\u4f60\u4f61\u4f62\u4f63\u4f64\u4f65\u4f66\u4f67\u4f68\u4f69\u4f6a\u4f6b\u4f6c\u4f6d\u4f6e\u4f6f\u4f70\u4f71\u4f72\u4f73\u4f74\u4f75\u4f76\u4f77\u4f78\u4f79\u4f7a\u4f7b\u4f7c\u4f7d\u4f7e\u4f7f\u4f80\u4f81\u4f82\u4f83\u4f84\u4f85\u4f86\u4f87\u4f88\u4f89\u4f8a\u4f8b\u4f8c\u4f8d\u4f8e\u4f8f\u4f90\u4f91\u4f92\u4f93\u4f94\u4f95\u4f96\u4f97\u4f98\u4f99\u4f9a\u4f9b\u4f9c\u4f9d\u4f9e\u4f9f\u4fa0\u4fa1\u4fa2\u4fa3\u4fa4\u4fa5\u4fa6\u4fa7\u4fa8\u4fa9\u4faa\u4fab\u4fac\u4fad\u4fae\u4faf\u4fb0\u4fb1\u4fb2\u4fb3\u4fb4\u4fb5\u4fb6\u4fb7\u4fb8\u4fb9\u4fba\u4fbb\u4fbc\u4fbd\u4fbe\u4fbf\u4fc0\u4fc1\u4fc2\u4fc3\u4fc4\u4fc5\u4fc6\u4fc7\u4fc8\u4fc9\u4fca\u4fcb\u4fcc\u4fcd\u4fce\u4fcf\u4fd0\u4fd1\u4fd2\u4fd3\u4fd4\u4fd5\u4fd6\u4fd7\u4fd8\u4fd9\u4fda\u4fdb\u4fdc\u4fdd\u4fde\u4fdf\u4fe0\u4fe1\u4fe2\u4fe3\u4fe4\u4fe5\u4fe6\u4fe7\u4fe8\u4fe9\u4fea\u4feb\u4fec\u4fed\u4fee\u4fef\u4ff0\u4ff1\u4ff2\u4ff3\u4ff4\u4ff5\u4ff6\u4ff7\u4ff8\u4ff9\u4ffa\u4ffb\u4ffc\u4ffd\u4ffe\u4fff\u5000\u5001\u5002\u5003\u5004\u5005\u5006\u5007\u5008\u5009\u500a\u500b\u500c\u500d\u500e\u500f\u5010\u5011\u5012\u5013\u5014\u5015\u5016\u5017\u5018\u5019\u501a\u501b\u501c\u501d\u501e\u501f\u5020\u5021\u5022\u5023\u5024\u5025\u5026\u5027\u5028\u5029\u502a\u502b\u502c\u502d\u502e\u502f\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037\u5038\u5039\u503a\u503b\u503c\u503d\u503e\u503f\u5040\u5041\u5042\u5043\u5044\u5045\u5046\u5047\u5048\u5049\u504a\u504b\u504c\u504d\u504e\u504f\u5050\u5051\u5052\u5053\u5054\u5055\u5056\u5057\u5058\u5059\u505a\u505b\u505c\u505d\u505e\u505f\u5060\u5061\u5062\u5063\u5064\u5065\u5066\u5067\u5068\u5069\u506a\u506b\u506c\u506d\u506e\u506f\u5070\u5071\u5072\u5073\u5074\u5075\u5076\u5077\u5078\u5079\u507a\u507b\u507c\u507d\u507e\u507f\u5080\u5081\u5082\u5083\u5084\u5085\u5086\u5087\u5088\u5089\u508a\u508b\u508c\u508d\u508e\u508f\u5090\u5091\u5092\u5093\u5094\u5095\u5096\u5097\u5098\u5099\u509a\u509b\u509c\u509d\u509e\u509f\u50a0\u50a1\u50a2\u50a3\u50a4\u50a5\u50a6\u50a7\u50a8\u50a9\u50aa\u50ab\u50ac\u50ad\u50ae\u50af\u50b0\u50b1\u50b2\u50b3\u50b4\u50b5\u50b6\u50b7\u50b8\u50b9\u50ba\u50bb\u50bc\u50bd\u50be\u50bf\u50c0\u50c1\u50c2\u50c3\u50c4\u50c5\u50c6\u50c7\u50c8\u50c9\u50ca\u50cb\u50cc\u50cd\u50ce\u50cf\u50d0\u50d1\u50d2\u50d3\u50d4\u50d5\u50d6\u50d7\u50d8\u50d9\u50da\u50db\u50dc\u50dd\u50de\u50df\u50e0\u50e1\u50e2\u50e3\u50e4\u50e5\u50e6\u50e7\u50e8\u50e9\u50ea\u50eb\u50ec\u50ed\u50ee\u50ef\u50f0\u50f1\u50f2\u50f3\u50f4\u50f5\u50f6\u50f7\u50f8\u50f9\u50fa\u50fb\u50fc\u50fd\u50fe\u50ff\u5100\u5101\u5102\u5103\u5104\u5105\u5106\u5107\u5108\u5109\u510a\u510b\u510c\u510d\u510e\u510f\u5110\u5111\u5112\u5113\u5114\u5115\u5116\u5117\u5118\u5119\u511a\u511b\u511c\u511d\u511e\u511f\u5120\u5121\u5122\u5123\u5124\u5125\u5126\u5127\u5128\u5129\u512a\u512b\u512c\u512d\u512e\u512f\u5130\u5131\u5132\u5133\u5134\u5135\u5136\u5137\u5138\u5139\u513a\u513b\u513c\u513d\u513e\u513f\u5140\u5141\u5142\u5143\u5144\u5145\u5146\u5147\u5148\u5149\u514a\u514b\u514c\u514d\u514e\u514f\u5150\u5151\u5152\u5153\u5154\u5155\u5156\u5157\u5158\u5159\u515a\u515b\u515c\u515d\u515e\u515f\u5160\u5161\u5162\u5163\u5164\u5165\u5166\u5167\u5168\u5169\u516a\u516b\u516c\u516d\u516e\u516f\u5170\u5171\u5172\u5173\u5174\u5175\u5176\u5177\u5178\u5179\u517a\u517b\u517c\u517d\u517e\u517f\u5180\u5181\u5182\u5183\u5184\u5185\u5186\u5187\u5188\u5189\u518a\u518b\u518c\u518d\u518e\u518f\u5190\u5191\u5192\u5193\u5194\u5195\u5196\u5197\u5198\u5199\u519a\u519b\u519c\u519d\u519e\u519f\u51a0\u51a1\u51a2\u51a3\u51a4\u51a5\u51a6\u51a7\u51a8\u51a9\u51aa\u51ab\u51ac\u51ad\u51ae\u51af\u51b0\u51b1\u51b2\u51b3\u51b4\u51b5\u51b6\u51b7\u51b8\u51b9\u51ba\u51bb\u51bc\u51bd\u51be\u51bf\u51c0\u51c1\u51c2\u51c3\u51c4\u51c5\u51c6\u51c7\u51c8\u51c9\u51ca\u51cb\u51cc\u51cd\u51ce\u51cf\u51d0\u51d1\u51d2\u51d3\u51d4\u51d5\u51d6\u51d7\u51d8\u51d9\u51da\u51db\u51dc\u51dd\u51de\u51df\u51e0\u51e1\u51e2\u51e3\u51e4\u51e5\u51e6\u51e7\u51e8\u51e9\u51ea\u51eb\u51ec\u51ed\u51ee\u51ef\u51f0\u51f1\u51f2\u51f3\u51f4\u51f5\u51f6\u51f7\u51f8\u51f9\u51fa\u51fb\u51fc\u51fd\u51fe\u51ff\u5200\u5201\u5202\u5203\u5204\u5205\u5206\u5207\u5208\u5209\u520a\u520b\u520c\u520d\u520e\u520f\u5210\u5211\u5212\u5213\u5214\u5215\u5216\u5217\u5218\u5219\u521a\u521b\u521c\u521d\u521e\u521f\u5220\u5221\u5222\u5223\u5224\u5225\u5226\u5227\u5228\u5229\u522a\u522b\u522c\u522d\u522e\u522f\u5230\u5231\u5232\u5233\u5234\u5235\u5236\u5237\u5238\u5239\u523a\u523b\u523c\u523d\u523e\u523f\u5240\u5241\u5242\u5243\u5244\u5245\u5246\u5247\u5248\u5249\u524a\u524b\u524c\u524d\u524e\u524f\u5250\u5251\u5252\u5253\u5254\u5255\u5256\u5257\u5258\u5259\u525a\u525b\u525c\u525d\u525e\u525f\u5260\u5261\u5262\u5263\u5264\u5265\u5266\u5267\u5268\u5269\u526a\u526b\u526c\u526d\u526e\u526f\u5270\u5271\u5272\u5273\u5274\u5275\u5276\u5277\u5278\u5279\u527a\u527b\u527c\u527d\u527e\u527f\u5280\u5281\u5282\u5283\u5284\u5285\u5286\u5287\u5288\u5289\u528a\u528b\u528c\u528d\u528e\u528f\u5290\u5291\u5292\u5293\u5294\u5295\u5296\u5297\u5298\u5299\u529a\u529b\u529c\u529d\u529e\u529f\u52a0\u52a1\u52a2\u52a3\u52a4\u52a5\u52a6\u52a7\u52a8\u52a9\u52aa\u52ab\u52ac\u52ad\u52ae\u52af\u52b0\u52b1\u52b2\u52b3\u52b4\u52b5\u52b6\u52b7\u52b8\u52b9\u52ba\u52bb\u52bc\u52bd\u52be\u52bf\u52c0\u52c1\u52c2\u52c3\u52c4\u52c5\u52c6\u52c7\u52c8\u52c9\u52ca\u52cb\u52cc\u52cd\u52ce\u52cf\u52d0\u52d1\u52d2\u52d3\u52d4\u52d5\u52d6\u52d7\u52d8\u52d9\u52da\u52db\u52dc\u52dd\u52de\u52df\u52e0\u52e1\u52e2\u52e3\u52e4\u52e5\u52e6\u52e7\u52e8\u52e9\u52ea\u52eb\u52ec\u52ed\u52ee\u52ef\u52f0\u52f1\u52f2\u52f3\u52f4\u52f5\u52f6\u52f7\u52f8\u52f9\u52fa\u52fb\u52fc\u52fd\u52fe\u52ff\u5300\u5301\u5302\u5303\u5304\u5305\u5306\u5307\u5308\u5309\u530a\u530b\u530c\u530d\u530e\u530f\u5310\u5311\u5312\u5313\u5314\u5315\u5316\u5317\u5318\u5319\u531a\u531b\u531c\u531d\u531e\u531f\u5320\u5321\u5322\u5323\u5324\u5325\u5326\u5327\u5328\u5329\u532a\u532b\u532c\u532d\u532e\u532f\u5330\u5331\u5332\u5333\u5334\u5335\u5336\u5337\u5338\u5339\u533a\u533b\u533c\u533d\u533e\u533f\u5340\u5341\u5342\u5343\u5344\u5345\u5346\u5347\u5348\u5349\u534a\u534b\u534c\u534d\u534e\u534f\u5350\u5351\u5352\u5353\u5354\u5355\u5356\u5357\u5358\u5359\u535a\u535b\u535c\u535d\u535e\u535f\u5360\u5361\u5362\u5363\u5364\u5365\u5366\u5367\u5368\u5369\u536a\u536b\u536c\u536d\u536e\u536f\u5370\u5371\u5372\u5373\u5374\u5375\u5376\u5377\u5378\u5379\u537a\u537b\u537c\u537d\u537e\u537f\u5380\u5381\u5382\u5383\u5384\u5385\u5386\u5387\u5388\u5389\u538a\u538b\u538c\u538d\u538e\u538f\u5390\u5391\u5392\u5393\u5394\u5395\u5396\u5397\u5398\u5399\u539a\u539b\u539c\u539d\u539e\u539f\u53a0\u53a1\u53a2\u53a3\u53a4\u53a5\u53a6\u53a7\u53a8\u53a9\u53aa\u53ab\u53ac\u53ad\u53ae\u53af\u53b0\u53b1\u53b2\u53b3\u53b4\u53b5\u53b6\u53b7\u53b8\u53b9\u53ba\u53bb\u53bc\u53bd\u53be\u53bf\u53c0\u53c1\u53c2\u53c3\u53c4\u53c5\u53c6\u53c7\u53c8\u53c9\u53ca\u53cb\u53cc\u53cd\u53ce\u53cf\u53d0\u53d1\u53d2\u53d3\u53d4\u53d5\u53d6\u53d7\u53d8\u53d9\u53da\u53db\u53dc\u53dd\u53de\u53df\u53e0\u53e1\u53e2\u53e3\u53e4\u53e5\u53e6\u53e7\u53e8\u53e9\u53ea\u53eb\u53ec\u53ed\u53ee\u53ef\u53f0\u53f1\u53f2\u53f3\u53f4\u53f5\u53f6\u53f7\u53f8\u53f9\u53fa\u53fb\u53fc\u53fd\u53fe\u53ff\u5400\u5401\u5402\u5403\u5404\u5405\u5406\u5407\u5408\u5409\u540a\u540b\u540c\u540d\u540e\u540f\u5410\u5411\u5412\u5413\u5414\u5415\u5416\u5417\u5418\u5419\u541a\u541b\u541c\u541d\u541e\u541f\u5420\u5421\u5422\u5423\u5424\u5425\u5426\u5427\u5428\u5429\u542a\u542b\u542c\u542d\u542e\u542f\u5430\u5431\u5432\u5433\u5434\u5435\u5436\u5437\u5438\u5439\u543a\u543b\u543c\u543d\u543e\u543f\u5440\u5441\u5442\u5443\u5444\u5445\u5446\u5447\u5448\u5449\u544a\u544b\u544c\u544d\u544e\u544f\u5450\u5451\u5452\u5453\u5454\u5455\u5456\u5457\u5458\u5459\u545a\u545b\u545c\u545d\u545e\u545f\u5460\u5461\u5462\u5463\u5464\u5465\u5466\u5467\u5468\u5469\u546a\u546b\u546c\u546d\u546e\u546f\u5470\u5471\u5472\u5473\u5474\u5475\u5476\u5477\u5478\u5479\u547a\u547b\u547c\u547d\u547e\u547f\u5480\u5481\u5482\u5483\u5484\u5485\u5486\u5487\u5488\u5489\u548a\u548b\u548c\u548d\u548e\u548f\u5490\u5491\u5492\u5493\u5494\u5495\u5496\u5497\u5498\u5499\u549a\u549b\u549c\u549d\u549e\u549f\u54a0\u54a1\u54a2\u54a3\u54a4\u54a5\u54a6\u54a7\u54a8\u54a9\u54aa\u54ab\u54ac\u54ad\u54ae\u54af\u54b0\u54b1\u54b2\u54b3\u54b4\u54b5\u54b6\u54b7\u54b8\u54b9\u54ba\u54bb\u54bc\u54bd\u54be\u54bf\u54c0\u54c1\u54c2\u54c3\u54c4\u54c5\u54c6\u54c7\u54c8\u54c9\u54ca\u54cb\u54cc\u54cd\u54ce\u54cf\u54d0\u54d1\u54d2\u54d3\u54d4\u54d5\u54d6\u54d7\u54d8\u54d9\u54da\u54db\u54dc\u54dd\u54de\u54df\u54e0\u54e1\u54e2\u54e3\u54e4\u54e5\u54e6\u54e7\u54e8\u54e9\u54ea\u54eb\u54ec\u54ed\u54ee\u54ef\u54f0\u54f1\u54f2\u54f3\u54f4\u54f5\u54f6\u54f7\u54f8\u54f9\u54fa\u54fb\u54fc\u54fd\u54fe\u54ff\u5500\u5501\u5502\u5503\u5504\u5505\u5506\u5507\u5508\u5509\u550a\u550b\u550c\u550d\u550e\u550f\u5510\u5511\u5512\u5513\u5514\u5515\u5516\u5517\u5518\u5519\u551a\u551b\u551c\u551d\u551e\u551f\u5520\u5521\u5522\u5523\u5524\u5525\u5526\u5527\u5528\u5529\u552a\u552b\u552c\u552d\u552e\u552f\u5530\u5531\u5532\u5533\u5534\u5535\u5536\u5537\u5538\u5539\u553a\u553b\u553c\u553d\u553e\u553f\u5540\u5541\u5542\u5543\u5544\u5545\u5546\u5547\u5548\u5549\u554a\u554b\u554c\u554d\u554e\u554f\u5550\u5551\u5552\u5553\u5554\u5555\u5556\u5557\u5558\u5559\u555a\u555b\u555c\u555d\u555e\u555f\u5560\u5561\u5562\u5563\u5564\u5565\u5566\u5567\u5568\u5569\u556a\u556b\u556c\u556d\u556e\u556f\u5570\u5571\u5572\u5573\u5574\u5575\u5576\u5577\u5578\u5579\u557a\u557b\u557c\u557d\u557e\u557f\u5580\u5581\u5582\u5583\u5584\u5585\u5586\u5587\u5588\u5589\u558a\u558b\u558c\u558d\u558e\u558f\u5590\u5591\u5592\u5593\u5594\u5595\u5596\u5597\u5598\u5599\u559a\u559b\u559c\u559d\u559e\u559f\u55a0\u55a1\u55a2\u55a3\u55a4\u55a5\u55a6\u55a7\u55a8\u55a9\u55aa\u55ab\u55ac\u55ad\u55ae\u55af\u55b0\u55b1\u55b2\u55b3\u55b4\u55b5\u55b6\u55b7\u55b8\u55b9\u55ba\u55bb\u55bc\u55bd\u55be\u55bf\u55c0\u55c1\u55c2\u55c3\u55c4\u55c5\u55c6\u55c7\u55c8\u55c9\u55ca\u55cb\u55cc\u55cd\u55ce\u55cf\u55d0\u55d1\u55d2\u55d3\u55d4\u55d5\u55d6\u55d7\u55d8\u55d9\u55da\u55db\u55dc\u55dd\u55de\u55df\u55e0\u55e1\u55e2\u55e3\u55e4\u55e5\u55e6\u55e7\u55e8\u55e9\u55ea\u55eb\u55ec\u55ed\u55ee\u55ef\u55f0\u55f1\u55f2\u55f3\u55f4\u55f5\u55f6\u55f7\u55f8\u55f9\u55fa\u55fb\u55fc\u55fd\u55fe\u55ff\u5600\u5601\u5602\u5603\u5604\u5605\u5606\u5607\u5608\u5609\u560a\u560b\u560c\u560d\u560e\u560f\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617\u5618\u5619\u561a\u561b\u561c\u561d\u561e\u561f\u5620\u5621\u5622\u5623\u5624\u5625\u5626\u5627\u5628\u5629\u562a\u562b\u562c\u562d\u562e\u562f\u5630\u5631\u5632\u5633\u5634\u5635\u5636\u5637\u5638\u5639\u563a\u563b\u563c\u563d\u563e\u563f\u5640\u5641\u5642\u5643\u5644\u5645\u5646\u5647\u5648\u5649\u564a\u564b\u564c\u564d\u564e\u564f\u5650\u5651\u5652\u5653\u5654\u5655\u5656\u5657\u5658\u5659\u565a\u565b\u565c\u565d\u565e\u565f\u5660\u5661\u5662\u5663\u5664\u5665\u5666\u5667\u5668\u5669\u566a\u566b\u566c\u566d\u566e\u566f\u5670\u5671\u5672\u5673\u5674\u5675\u5676\u5677\u5678\u5679\u567a\u567b\u567c\u567d\u567e\u567f\u5680\u5681\u5682\u5683\u5684\u5685\u5686\u5687\u5688\u5689\u568a\u568b\u568c\u568d\u568e\u568f\u5690\u5691\u5692\u5693\u5694\u5695\u5696\u5697\u5698\u5699\u569a\u569b\u569c\u569d\u569e\u569f\u56a0\u56a1\u56a2\u56a3\u56a4\u56a5\u56a6\u56a7\u56a8\u56a9\u56aa\u56ab\u56ac\u56ad\u56ae\u56af\u56b0\u56b1\u56b2\u56b3\u56b4\u56b5\u56b6\u56b7\u56b8\u56b9\u56ba\u56bb\u56bc\u56bd\u56be\u56bf\u56c0\u56c1\u56c2\u56c3\u56c4\u56c5\u56c6\u56c7\u56c8\u56c9\u56ca\u56cb\u56cc\u56cd\u56ce\u56cf\u56d0\u56d1\u56d2\u56d3\u56d4\u56d5\u56d6\u56d7\u56d8\u56d9\u56da\u56db\u56dc\u56dd\u56de\u56df\u56e0\u56e1\u56e2\u56e3\u56e4\u56e5\u56e6\u56e7\u56e8\u56e9\u56ea\u56eb\u56ec\u56ed\u56ee\u56ef\u56f0\u56f1\u56f2\u56f3\u56f4\u56f5\u56f6\u56f7\u56f8\u56f9\u56fa\u56fb\u56fc\u56fd\u56fe\u56ff\u5700\u5701\u5702\u5703\u5704\u5705\u5706\u5707\u5708\u5709\u570a\u570b\u570c\u570d\u570e\u570f\u5710\u5711\u5712\u5713\u5714\u5715\u5716\u5717\u5718\u5719\u571a\u571b\u571c\u571d\u571e\u571f\u5720\u5721\u5722\u5723\u5724\u5725\u5726\u5727\u5728\u5729\u572a\u572b\u572c\u572d\u572e\u572f\u5730\u5731\u5732\u5733\u5734\u5735\u5736\u5737\u5738\u5739\u573a\u573b\u573c\u573d\u573e\u573f\u5740\u5741\u5742\u5743\u5744\u5745\u5746\u5747\u5748\u5749\u574a\u574b\u574c\u574d\u574e\u574f\u5750\u5751\u5752\u5753\u5754\u5755\u5756\u5757\u5758\u5759\u575a\u575b\u575c\u575d\u575e\u575f\u5760\u5761\u5762\u5763\u5764\u5765\u5766\u5767\u5768\u5769\u576a\u576b\u576c\u576d\u576e\u576f\u5770\u5771\u5772\u5773\u5774\u5775\u5776\u5777\u5778\u5779\u577a\u577b\u577c\u577d\u577e\u577f\u5780\u5781\u5782\u5783\u5784\u5785\u5786\u5787\u5788\u5789\u578a\u578b\u578c\u578d\u578e\u578f\u5790\u5791\u5792\u5793\u5794\u5795\u5796\u5797\u5798\u5799\u579a\u579b\u579c\u579d\u579e\u579f\u57a0\u57a1\u57a2\u57a3\u57a4\u57a5\u57a6\u57a7\u57a8\u57a9\u57aa\u57ab\u57ac\u57ad\u57ae\u57af\u57b0\u57b1\u57b2\u57b3\u57b4\u57b5\u57b6\u57b7\u57b8\u57b9\u57ba\u57bb\u57bc\u57bd\u57be\u57bf\u57c0\u57c1\u57c2\u57c3\u57c4\u57c5\u57c6\u57c7\u57c8\u57c9\u57ca\u57cb\u57cc\u57cd\u57ce\u57cf\u57d0\u57d1\u57d2\u57d3\u57d4\u57d5\u57d6\u57d7\u57d8\u57d9\u57da\u57db\u57dc\u57dd\u57de\u57df\u57e0\u57e1\u57e2\u57e3\u57e4\u57e5\u57e6\u57e7\u57e8\u57e9\u57ea\u57eb\u57ec\u57ed\u57ee\u57ef\u57f0\u57f1\u57f2\u57f3\u57f4\u57f5\u57f6\u57f7\u57f8\u57f9\u57fa\u57fb\u57fc\u57fd\u57fe\u57ff\u5800\u5801\u5802\u5803\u5804\u5805\u5806\u5807\u5808\u5809\u580a\u580b\u580c\u580d\u580e\u580f\u5810\u5811\u5812\u5813\u5814\u5815\u5816\u5817\u5818\u5819\u581a\u581b\u581c\u581d\u581e\u581f\u5820\u5821\u5822\u5823\u5824\u5825\u5826\u5827\u5828\u5829\u582a\u582b\u582c\u582d\u582e\u582f\u5830\u5831\u5832\u5833\u5834\u5835\u5836\u5837\u5838\u5839\u583a\u583b\u583c\u583d\u583e\u583f\u5840\u5841\u5842\u5843\u5844\u5845\u5846\u5847\u5848\u5849\u584a\u584b\u584c\u584d\u584e\u584f\u5850\u5851\u5852\u5853\u5854\u5855\u5856\u5857\u5858\u5859\u585a\u585b\u585c\u585d\u585e\u585f\u5860\u5861\u5862\u5863\u5864\u5865\u5866\u5867\u5868\u5869\u586a\u586b\u586c\u586d\u586e\u586f\u5870\u5871\u5872\u5873\u5874\u5875\u5876\u5877\u5878\u5879\u587a\u587b\u587c\u587d\u587e\u587f\u5880\u5881\u5882\u5883\u5884\u5885\u5886\u5887\u5888\u5889\u588a\u588b\u588c\u588d\u588e\u588f\u5890\u5891\u5892\u5893\u5894\u5895\u5896\u5897\u5898\u5899\u589a\u589b\u589c\u589d\u589e\u589f\u58a0\u58a1\u58a2\u58a3\u58a4\u58a5\u58a6\u58a7\u58a8\u58a9\u58aa\u58ab\u58ac\u58ad\u58ae\u58af\u58b0\u58b1\u58b2\u58b3\u58b4\u58b5\u58b6\u58b7\u58b8\u58b9\u58ba\u58bb\u58bc\u58bd\u58be\u58bf\u58c0\u58c1\u58c2\u58c3\u58c4\u58c5\u58c6\u58c7\u58c8\u58c9\u58ca\u58cb\u58cc\u58cd\u58ce\u58cf\u58d0\u58d1\u58d2\u58d3\u58d4\u58d5\u58d6\u58d7\u58d8\u58d9\u58da\u58db\u58dc\u58dd\u58de\u58df\u58e0\u58e1\u58e2\u58e3\u58e4\u58e5\u58e6\u58e7\u58e8\u58e9\u58ea\u58eb\u58ec\u58ed\u58ee\u58ef\u58f0\u58f1\u58f2\u58f3\u58f4\u58f5\u58f6\u58f7\u58f8\u58f9\u58fa\u58fb\u58fc\u58fd\u58fe\u58ff\u5900\u5901\u5902\u5903\u5904\u5905\u5906\u5907\u5908\u5909\u590a\u590b\u590c\u590d\u590e\u590f\u5910\u5911\u5912\u5913\u5914\u5915\u5916\u5917\u5918\u5919\u591a\u591b\u591c\u591d\u591e\u591f\u5920\u5921\u5922\u5923\u5924\u5925\u5926\u5927\u5928\u5929\u592a\u592b\u592c\u592d\u592e\u592f\u5930\u5931\u5932\u5933\u5934\u5935\u5936\u5937\u5938\u5939\u593a\u593b\u593c\u593d\u593e\u593f\u5940\u5941\u5942\u5943\u5944\u5945\u5946\u5947\u5948\u5949\u594a\u594b\u594c\u594d\u594e\u594f\u5950\u5951\u5952\u5953\u5954\u5955\u5956\u5957\u5958\u5959\u595a\u595b\u595c\u595d\u595e\u595f\u5960\u5961\u5962\u5963\u5964\u5965\u5966\u5967\u5968\u5969\u596a\u596b\u596c\u596d\u596e\u596f\u5970\u5971\u5972\u5973\u5974\u5975\u5976\u5977\u5978\u5979\u597a\u597b\u597c\u597d\u597e\u597f\u5980\u5981\u5982\u5983\u5984\u5985\u5986\u5987\u5988\u5989\u598a\u598b\u598c\u598d\u598e\u598f\u5990\u5991\u5992\u5993\u5994\u5995\u5996\u5997\u5998\u5999\u599a\u599b\u599c\u599d\u599e\u599f\u59a0\u59a1\u59a2\u59a3\u59a4\u59a5\u59a6\u59a7\u59a8\u59a9\u59aa\u59ab\u59ac\u59ad\u59ae\u59af\u59b0\u59b1\u59b2\u59b3\u59b4\u59b5\u59b6\u59b7\u59b8\u59b9\u59ba\u59bb\u59bc\u59bd\u59be\u59bf\u59c0\u59c1\u59c2\u59c3\u59c4\u59c5\u59c6\u59c7\u59c8\u59c9\u59ca\u59cb\u59cc\u59cd\u59ce\u59cf\u59d0\u59d1\u59d2\u59d3\u59d4\u59d5\u59d6\u59d7\u59d8\u59d9\u59da\u59db\u59dc\u59dd\u59de\u59df\u59e0\u59e1\u59e2\u59e3\u59e4\u59e5\u59e6\u59e7\u59e8\u59e9\u59ea\u59eb\u59ec\u59ed\u59ee\u59ef\u59f0\u59f1\u59f2\u59f3\u59f4\u59f5\u59f6\u59f7\u59f8\u59f9\u59fa\u59fb\u59fc\u59fd\u59fe\u59ff\u5a00\u5a01\u5a02\u5a03\u5a04\u5a05\u5a06\u5a07\u5a08\u5a09\u5a0a\u5a0b\u5a0c\u5a0d\u5a0e\u5a0f\u5a10\u5a11\u5a12\u5a13\u5a14\u5a15\u5a16\u5a17\u5a18\u5a19\u5a1a\u5a1b\u5a1c\u5a1d\u5a1e\u5a1f\u5a20\u5a21\u5a22\u5a23\u5a24\u5a25\u5a26\u5a27\u5a28\u5a29\u5a2a\u5a2b\u5a2c\u5a2d\u5a2e\u5a2f\u5a30\u5a31\u5a32\u5a33\u5a34\u5a35\u5a36\u5a37\u5a38\u5a39\u5a3a\u5a3b\u5a3c\u5a3d\u5a3e\u5a3f\u5a40\u5a41\u5a42\u5a43\u5a44\u5a45\u5a46\u5a47\u5a48\u5a49\u5a4a\u5a4b\u5a4c\u5a4d\u5a4e\u5a4f\u5a50\u5a51\u5a52\u5a53\u5a54\u5a55\u5a56\u5a57\u5a58\u5a59\u5a5a\u5a5b\u5a5c\u5a5d\u5a5e\u5a5f\u5a60\u5a61\u5a62\u5a63\u5a64\u5a65\u5a66\u5a67\u5a68\u5a69\u5a6a\u5a6b\u5a6c\u5a6d\u5a6e\u5a6f\u5a70\u5a71\u5a72\u5a73\u5a74\u5a75\u5a76\u5a77\u5a78\u5a79\u5a7a\u5a7b\u5a7c\u5a7d\u5a7e\u5a7f\u5a80\u5a81\u5a82\u5a83\u5a84\u5a85\u5a86\u5a87\u5a88\u5a89\u5a8a\u5a8b\u5a8c\u5a8d\u5a8e\u5a8f\u5a90\u5a91\u5a92\u5a93\u5a94\u5a95\u5a96\u5a97\u5a98\u5a99\u5a9a\u5a9b\u5a9c\u5a9d\u5a9e\u5a9f\u5aa0\u5aa1\u5aa2\u5aa3\u5aa4\u5aa5\u5aa6\u5aa7\u5aa8\u5aa9\u5aaa\u5aab\u5aac\u5aad\u5aae\u5aaf\u5ab0\u5ab1\u5ab2\u5ab3\u5ab4\u5ab5\u5ab6\u5ab7\u5ab8\u5ab9\u5aba\u5abb\u5abc\u5abd\u5abe\u5abf\u5ac0\u5ac1\u5ac2\u5ac3\u5ac4\u5ac5\u5ac6\u5ac7\u5ac8\u5ac9\u5aca\u5acb\u5acc\u5acd\u5ace\u5acf\u5ad0\u5ad1\u5ad2\u5ad3\u5ad4\u5ad5\u5ad6\u5ad7\u5ad8\u5ad9\u5ada\u5adb\u5adc\u5add\u5ade\u5adf\u5ae0\u5ae1\u5ae2\u5ae3\u5ae4\u5ae5\u5ae6\u5ae7\u5ae8\u5ae9\u5aea\u5aeb\u5aec\u5aed\u5aee\u5aef\u5af0\u5af1\u5af2\u5af3\u5af4\u5af5\u5af6\u5af7\u5af8\u5af9\u5afa\u5afb\u5afc\u5afd\u5afe\u5aff\u5b00\u5b01\u5b02\u5b03\u5b04\u5b05\u5b06\u5b07\u5b08\u5b09\u5b0a\u5b0b\u5b0c\u5b0d\u5b0e\u5b0f\u5b10\u5b11\u5b12\u5b13\u5b14\u5b15\u5b16\u5b17\u5b18\u5b19\u5b1a\u5b1b\u5b1c\u5b1d\u5b1e\u5b1f\u5b20\u5b21\u5b22\u5b23\u5b24\u5b25\u5b26\u5b27\u5b28\u5b29\u5b2a\u5b2b\u5b2c\u5b2d\u5b2e\u5b2f\u5b30\u5b31\u5b32\u5b33\u5b34\u5b35\u5b36\u5b37\u5b38\u5b39\u5b3a\u5b3b\u5b3c\u5b3d\u5b3e\u5b3f\u5b40\u5b41\u5b42\u5b43\u5b44\u5b45\u5b46\u5b47\u5b48\u5b49\u5b4a\u5b4b\u5b4c\u5b4d\u5b4e\u5b4f\u5b50\u5b51\u5b52\u5b53\u5b54\u5b55\u5b56\u5b57\u5b58\u5b59\u5b5a\u5b5b\u5b5c\u5b5d\u5b5e\u5b5f\u5b60\u5b61\u5b62\u5b63\u5b64\u5b65\u5b66\u5b67\u5b68\u5b69\u5b6a\u5b6b\u5b6c\u5b6d\u5b6e\u5b6f\u5b70\u5b71\u5b72\u5b73\u5b74\u5b75\u5b76\u5b77\u5b78\u5b79\u5b7a\u5b7b\u5b7c\u5b7d\u5b7e\u5b7f\u5b80\u5b81\u5b82\u5b83\u5b84\u5b85\u5b86\u5b87\u5b88\u5b89\u5b8a\u5b8b\u5b8c\u5b8d\u5b8e\u5b8f\u5b90\u5b91\u5b92\u5b93\u5b94\u5b95\u5b96\u5b97\u5b98\u5b99\u5b9a\u5b9b\u5b9c\u5b9d\u5b9e\u5b9f\u5ba0\u5ba1\u5ba2\u5ba3\u5ba4\u5ba5\u5ba6\u5ba7\u5ba8\u5ba9\u5baa\u5bab\u5bac\u5bad\u5bae\u5baf\u5bb0\u5bb1\u5bb2\u5bb3\u5bb4\u5bb5\u5bb6\u5bb7\u5bb8\u5bb9\u5bba\u5bbb\u5bbc\u5bbd\u5bbe\u5bbf\u5bc0\u5bc1\u5bc2\u5bc3\u5bc4\u5bc5\u5bc6\u5bc7\u5bc8\u5bc9\u5bca\u5bcb\u5bcc\u5bcd\u5bce\u5bcf\u5bd0\u5bd1\u5bd2\u5bd3\u5bd4\u5bd5\u5bd6\u5bd7\u5bd8\u5bd9\u5bda\u5bdb\u5bdc\u5bdd\u5bde\u5bdf\u5be0\u5be1\u5be2\u5be3\u5be4\u5be5\u5be6\u5be7\u5be8\u5be9\u5bea\u5beb\u5bec\u5bed\u5bee\u5bef\u5bf0\u5bf1\u5bf2\u5bf3\u5bf4\u5bf5\u5bf6\u5bf7\u5bf8\u5bf9\u5bfa\u5bfb\u5bfc\u5bfd\u5bfe\u5bff\u5c00\u5c01\u5c02\u5c03\u5c04\u5c05\u5c06\u5c07\u5c08\u5c09\u5c0a\u5c0b\u5c0c\u5c0d\u5c0e\u5c0f\u5c10\u5c11\u5c12\u5c13\u5c14\u5c15\u5c16\u5c17\u5c18\u5c19\u5c1a\u5c1b\u5c1c\u5c1d\u5c1e\u5c1f\u5c20\u5c21\u5c22\u5c23\u5c24\u5c25\u5c26\u5c27\u5c28\u5c29\u5c2a\u5c2b\u5c2c\u5c2d\u5c2e\u5c2f\u5c30\u5c31\u5c32\u5c33\u5c34\u5c35\u5c36\u5c37\u5c38\u5c39\u5c3a\u5c3b\u5c3c\u5c3d\u5c3e\u5c3f\u5c40\u5c41\u5c42\u5c43\u5c44\u5c45\u5c46\u5c47\u5c48\u5c49\u5c4a\u5c4b\u5c4c\u5c4d\u5c4e\u5c4f\u5c50\u5c51\u5c52\u5c53\u5c54\u5c55\u5c56\u5c57\u5c58\u5c59\u5c5a\u5c5b\u5c5c\u5c5d\u5c5e\u5c5f\u5c60\u5c61\u5c62\u5c63\u5c64\u5c65\u5c66\u5c67\u5c68\u5c69\u5c6a\u5c6b\u5c6c\u5c6d\u5c6e\u5c6f\u5c70\u5c71\u5c72\u5c73\u5c74\u5c75\u5c76\u5c77\u5c78\u5c79\u5c7a\u5c7b\u5c7c\u5c7d\u5c7e\u5c7f\u5c80\u5c81\u5c82\u5c83\u5c84\u5c85\u5c86\u5c87\u5c88\u5c89\u5c8a\u5c8b\u5c8c\u5c8d\u5c8e\u5c8f\u5c90\u5c91\u5c92\u5c93\u5c94\u5c95\u5c96\u5c97\u5c98\u5c99\u5c9a\u5c9b\u5c9c\u5c9d\u5c9e\u5c9f\u5ca0\u5ca1\u5ca2\u5ca3\u5ca4\u5ca5\u5ca6\u5ca7\u5ca8\u5ca9\u5caa\u5cab\u5cac\u5cad\u5cae\u5caf\u5cb0\u5cb1\u5cb2\u5cb3\u5cb4\u5cb5\u5cb6\u5cb7\u5cb8\u5cb9\u5cba\u5cbb\u5cbc\u5cbd\u5cbe\u5cbf\u5cc0\u5cc1\u5cc2\u5cc3\u5cc4\u5cc5\u5cc6\u5cc7\u5cc8\u5cc9\u5cca\u5ccb\u5ccc\u5ccd\u5cce\u5ccf\u5cd0\u5cd1\u5cd2\u5cd3\u5cd4\u5cd5\u5cd6\u5cd7\u5cd8\u5cd9\u5cda\u5cdb\u5cdc\u5cdd\u5cde\u5cdf\u5ce0\u5ce1\u5ce2\u5ce3\u5ce4\u5ce5\u5ce6\u5ce7\u5ce8\u5ce9\u5cea\u5ceb\u5cec\u5ced\u5cee\u5cef\u5cf0\u5cf1\u5cf2\u5cf3\u5cf4\u5cf5\u5cf6\u5cf7\u5cf8\u5cf9\u5cfa\u5cfb\u5cfc\u5cfd\u5cfe\u5cff\u5d00\u5d01\u5d02\u5d03\u5d04\u5d05\u5d06\u5d07\u5d08\u5d09\u5d0a\u5d0b\u5d0c\u5d0d\u5d0e\u5d0f\u5d10\u5d11\u5d12\u5d13\u5d14\u5d15\u5d16\u5d17\u5d18\u5d19\u5d1a\u5d1b\u5d1c\u5d1d\u5d1e\u5d1f\u5d20\u5d21\u5d22\u5d23\u5d24\u5d25\u5d26\u5d27\u5d28\u5d29\u5d2a\u5d2b\u5d2c\u5d2d\u5d2e\u5d2f\u5d30\u5d31\u5d32\u5d33\u5d34\u5d35\u5d36\u5d37\u5d38\u5d39\u5d3a\u5d3b\u5d3c\u5d3d\u5d3e\u5d3f\u5d40\u5d41\u5d42\u5d43\u5d44\u5d45\u5d46\u5d47\u5d48\u5d49\u5d4a\u5d4b\u5d4c\u5d4d\u5d4e\u5d4f\u5d50\u5d51\u5d52\u5d53\u5d54\u5d55\u5d56\u5d57\u5d58\u5d59\u5d5a\u5d5b\u5d5c\u5d5d\u5d5e\u5d5f\u5d60\u5d61\u5d62\u5d63\u5d64\u5d65\u5d66\u5d67\u5d68\u5d69\u5d6a\u5d6b\u5d6c\u5d6d\u5d6e\u5d6f\u5d70\u5d71\u5d72\u5d73\u5d74\u5d75\u5d76\u5d77\u5d78\u5d79\u5d7a\u5d7b\u5d7c\u5d7d\u5d7e\u5d7f\u5d80\u5d81\u5d82\u5d83\u5d84\u5d85\u5d86\u5d87\u5d88\u5d89\u5d8a\u5d8b\u5d8c\u5d8d\u5d8e\u5d8f\u5d90\u5d91\u5d92\u5d93\u5d94\u5d95\u5d96\u5d97\u5d98\u5d99\u5d9a\u5d9b\u5d9c\u5d9d\u5d9e\u5d9f\u5da0\u5da1\u5da2\u5da3\u5da4\u5da5\u5da6\u5da7\u5da8\u5da9\u5daa\u5dab\u5dac\u5dad\u5dae\u5daf\u5db0\u5db1\u5db2\u5db3\u5db4\u5db5\u5db6\u5db7\u5db8\u5db9\u5dba\u5dbb\u5dbc\u5dbd\u5dbe\u5dbf\u5dc0\u5dc1\u5dc2\u5dc3\u5dc4\u5dc5\u5dc6\u5dc7\u5dc8\u5dc9\u5dca\u5dcb\u5dcc\u5dcd\u5dce\u5dcf\u5dd0\u5dd1\u5dd2\u5dd3\u5dd4\u5dd5\u5dd6\u5dd7\u5dd8\u5dd9\u5dda\u5ddb\u5ddc\u5ddd\u5dde\u5ddf\u5de0\u5de1\u5de2\u5de3\u5de4\u5de5\u5de6\u5de7\u5de8\u5de9\u5dea\u5deb\u5dec\u5ded\u5dee\u5def\u5df0\u5df1\u5df2\u5df3\u5df4\u5df5\u5df6\u5df7\u5df8\u5df9\u5dfa\u5dfb\u5dfc\u5dfd\u5dfe\u5dff\u5e00\u5e01\u5e02\u5e03\u5e04\u5e05\u5e06\u5e07\u5e08\u5e09\u5e0a\u5e0b\u5e0c\u5e0d\u5e0e\u5e0f\u5e10\u5e11\u5e12\u5e13\u5e14\u5e15\u5e16\u5e17\u5e18\u5e19\u5e1a\u5e1b\u5e1c\u5e1d\u5e1e\u5e1f\u5e20\u5e21\u5e22\u5e23\u5e24\u5e25\u5e26\u5e27\u5e28\u5e29\u5e2a\u5e2b\u5e2c\u5e2d\u5e2e\u5e2f\u5e30\u5e31\u5e32\u5e33\u5e34\u5e35\u5e36\u5e37\u5e38\u5e39\u5e3a\u5e3b\u5e3c\u5e3d\u5e3e\u5e3f\u5e40\u5e41\u5e42\u5e43\u5e44\u5e45\u5e46\u5e47\u5e48\u5e49\u5e4a\u5e4b\u5e4c\u5e4d\u5e4e\u5e4f\u5e50\u5e51\u5e52\u5e53\u5e54\u5e55\u5e56\u5e57\u5e58\u5e59\u5e5a\u5e5b\u5e5c\u5e5d\u5e5e\u5e5f\u5e60\u5e61\u5e62\u5e63\u5e64\u5e65\u5e66\u5e67\u5e68\u5e69\u5e6a\u5e6b\u5e6c\u5e6d\u5e6e\u5e6f\u5e70\u5e71\u5e72\u5e73\u5e74\u5e75\u5e76\u5e77\u5e78\u5e79\u5e7a\u5e7b\u5e7c\u5e7d\u5e7e\u5e7f\u5e80\u5e81\u5e82\u5e83\u5e84\u5e85\u5e86\u5e87\u5e88\u5e89\u5e8a\u5e8b\u5e8c\u5e8d\u5e8e\u5e8f\u5e90\u5e91\u5e92\u5e93\u5e94\u5e95\u5e96\u5e97\u5e98\u5e99\u5e9a\u5e9b\u5e9c\u5e9d\u5e9e\u5e9f\u5ea0\u5ea1\u5ea2\u5ea3\u5ea4\u5ea5\u5ea6\u5ea7\u5ea8\u5ea9\u5eaa\u5eab\u5eac\u5ead\u5eae\u5eaf\u5eb0\u5eb1\u5eb2\u5eb3\u5eb4\u5eb5\u5eb6\u5eb7\u5eb8\u5eb9\u5eba\u5ebb\u5ebc\u5ebd\u5ebe\u5ebf\u5ec0\u5ec1\u5ec2\u5ec3\u5ec4\u5ec5\u5ec6\u5ec7\u5ec8\u5ec9\u5eca\u5ecb\u5ecc\u5ecd\u5ece\u5ecf\u5ed0\u5ed1\u5ed2\u5ed3\u5ed4\u5ed5\u5ed6\u5ed7\u5ed8\u5ed9\u5eda\u5edb\u5edc\u5edd\u5ede\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee4\u5ee5\u5ee6\u5ee7\u5ee8\u5ee9\u5eea\u5eeb\u5eec\u5eed\u5eee\u5eef\u5ef0\u5ef1\u5ef2\u5ef3\u5ef4\u5ef5\u5ef6\u5ef7\u5ef8\u5ef9\u5efa\u5efb\u5efc\u5efd\u5efe\u5eff\u5f00\u5f01\u5f02\u5f03\u5f04\u5f05\u5f06\u5f07\u5f08\u5f09\u5f0a\u5f0b\u5f0c\u5f0d\u5f0e\u5f0f\u5f10\u5f11\u5f12\u5f13\u5f14\u5f15\u5f16\u5f17\u5f18\u5f19\u5f1a\u5f1b\u5f1c\u5f1d\u5f1e\u5f1f\u5f20\u5f21\u5f22\u5f23\u5f24\u5f25\u5f26\u5f27\u5f28\u5f29\u5f2a\u5f2b\u5f2c\u5f2d\u5f2e\u5f2f\u5f30\u5f31\u5f32\u5f33\u5f34\u5f35\u5f36\u5f37\u5f38\u5f39\u5f3a\u5f3b\u5f3c\u5f3d\u5f3e\u5f3f\u5f40\u5f41\u5f42\u5f43\u5f44\u5f45\u5f46\u5f47\u5f48\u5f49\u5f4a\u5f4b\u5f4c\u5f4d\u5f4e\u5f4f\u5f50\u5f51\u5f52\u5f53\u5f54\u5f55\u5f56\u5f57\u5f58\u5f59\u5f5a\u5f5b\u5f5c\u5f5d\u5f5e\u5f5f\u5f60\u5f61\u5f62\u5f63\u5f64\u5f65\u5f66\u5f67\u5f68\u5f69\u5f6a\u5f6b\u5f6c\u5f6d\u5f6e\u5f6f\u5f70\u5f71\u5f72\u5f73\u5f74\u5f75\u5f76\u5f77\u5f78\u5f79\u5f7a\u5f7b\u5f7c\u5f7d\u5f7e\u5f7f\u5f80\u5f81\u5f82\u5f83\u5f84\u5f85\u5f86\u5f87\u5f88\u5f89\u5f8a\u5f8b\u5f8c\u5f8d\u5f8e\u5f8f\u5f90\u5f91\u5f92\u5f93\u5f94\u5f95\u5f96\u5f97\u5f98\u5f99\u5f9a\u5f9b\u5f9c\u5f9d\u5f9e\u5f9f\u5fa0\u5fa1\u5fa2\u5fa3\u5fa4\u5fa5\u5fa6\u5fa7\u5fa8\u5fa9\u5faa\u5fab\u5fac\u5fad\u5fae\u5faf\u5fb0\u5fb1\u5fb2\u5fb3\u5fb4\u5fb5\u5fb6\u5fb7\u5fb8\u5fb9\u5fba\u5fbb\u5fbc\u5fbd\u5fbe\u5fbf\u5fc0\u5fc1\u5fc2\u5fc3\u5fc4\u5fc5\u5fc6\u5fc7\u5fc8\u5fc9\u5fca\u5fcb\u5fcc\u5fcd\u5fce\u5fcf\u5fd0\u5fd1\u5fd2\u5fd3\u5fd4\u5fd5\u5fd6\u5fd7\u5fd8\u5fd9\u5fda\u5fdb\u5fdc\u5fdd\u5fde\u5fdf\u5fe0\u5fe1\u5fe2\u5fe3\u5fe4\u5fe5\u5fe6\u5fe7\u5fe8\u5fe9\u5fea\u5feb\u5fec\u5fed\u5fee\u5fef\u5ff0\u5ff1\u5ff2\u5ff3\u5ff4\u5ff5\u5ff6\u5ff7\u5ff8\u5ff9\u5ffa\u5ffb\u5ffc\u5ffd\u5ffe\u5fff\u6000\u6001\u6002\u6003\u6004\u6005\u6006\u6007\u6008\u6009\u600a\u600b\u600c\u600d\u600e\u600f\u6010\u6011\u6012\u6013\u6014\u6015\u6016\u6017\u6018\u6019\u601a\u601b\u601c\u601d\u601e\u601f\u6020\u6021\u6022\u6023\u6024\u6025\u6026\u6027\u6028\u6029\u602a\u602b\u602c\u602d\u602e\u602f\u6030\u6031\u6032\u6033\u6034\u6035\u6036\u6037\u6038\u6039\u603a\u603b\u603c\u603d\u603e\u603f\u6040\u6041\u6042\u6043\u6044\u6045\u6046\u6047\u6048\u6049\u604a\u604b\u604c\u604d\u604e\u604f\u6050\u6051\u6052\u6053\u6054\u6055\u6056\u6057\u6058\u6059\u605a\u605b\u605c\u605d\u605e\u605f\u6060\u6061\u6062\u6063\u6064\u6065\u6066\u6067\u6068\u6069\u606a\u606b\u606c\u606d\u606e\u606f\u6070\u6071\u6072\u6073\u6074\u6075\u6076\u6077\u6078\u6079\u607a\u607b\u607c\u607d\u607e\u607f\u6080\u6081\u6082\u6083\u6084\u6085\u6086\u6087\u6088\u6089\u608a\u608b\u608c\u608d\u608e\u608f\u6090\u6091\u6092\u6093\u6094\u6095\u6096\u6097\u6098\u6099\u609a\u609b\u609c\u609d\u609e\u609f\u60a0\u60a1\u60a2\u60a3\u60a4\u60a5\u60a6\u60a7\u60a8\u60a9\u60aa\u60ab\u60ac\u60ad\u60ae\u60af\u60b0\u60b1\u60b2\u60b3\u60b4\u60b5\u60b6\u60b7\u60b8\u60b9\u60ba\u60bb\u60bc\u60bd\u60be\u60bf\u60c0\u60c1\u60c2\u60c3\u60c4\u60c5\u60c6\u60c7\u60c8\u60c9\u60ca\u60cb\u60cc\u60cd\u60ce\u60cf\u60d0\u60d1\u60d2\u60d3\u60d4\u60d5\u60d6\u60d7\u60d8\u60d9\u60da\u60db\u60dc\u60dd\u60de\u60df\u60e0\u60e1\u60e2\u60e3\u60e4\u60e5\u60e6\u60e7\u60e8\u60e9\u60ea\u60eb\u60ec\u60ed\u60ee\u60ef\u60f0\u60f1\u60f2\u60f3\u60f4\u60f5\u60f6\u60f7\u60f8\u60f9\u60fa\u60fb\u60fc\u60fd\u60fe\u60ff\u6100\u6101\u6102\u6103\u6104\u6105\u6106\u6107\u6108\u6109\u610a\u610b\u610c\u610d\u610e\u610f\u6110\u6111\u6112\u6113\u6114\u6115\u6116\u6117\u6118\u6119\u611a\u611b\u611c\u611d\u611e\u611f\u6120\u6121\u6122\u6123\u6124\u6125\u6126\u6127\u6128\u6129\u612a\u612b\u612c\u612d\u612e\u612f\u6130\u6131\u6132\u6133\u6134\u6135\u6136\u6137\u6138\u6139\u613a\u613b\u613c\u613d\u613e\u613f\u6140\u6141\u6142\u6143\u6144\u6145\u6146\u6147\u6148\u6149\u614a\u614b\u614c\u614d\u614e\u614f\u6150\u6151\u6152\u6153\u6154\u6155\u6156\u6157\u6158\u6159\u615a\u615b\u615c\u615d\u615e\u615f\u6160\u6161\u6162\u6163\u6164\u6165\u6166\u6167\u6168\u6169\u616a\u616b\u616c\u616d\u616e\u616f\u6170\u6171\u6172\u6173\u6174\u6175\u6176\u6177\u6178\u6179\u617a\u617b\u617c\u617d\u617e\u617f\u6180\u6181\u6182\u6183\u6184\u6185\u6186\u6187\u6188\u6189\u618a\u618b\u618c\u618d\u618e\u618f\u6190\u6191\u6192\u6193\u6194\u6195\u6196\u6197\u6198\u6199\u619a\u619b\u619c\u619d\u619e\u619f\u61a0\u61a1\u61a2\u61a3\u61a4\u61a5\u61a6\u61a7\u61a8\u61a9\u61aa\u61ab\u61ac\u61ad\u61ae\u61af\u61b0\u61b1\u61b2\u61b3\u61b4\u61b5\u61b6\u61b7\u61b8\u61b9\u61ba\u61bb\u61bc\u61bd\u61be\u61bf\u61c0\u61c1\u61c2\u61c3\u61c4\u61c5\u61c6\u61c7\u61c8\u61c9\u61ca\u61cb\u61cc\u61cd\u61ce\u61cf\u61d0\u61d1\u61d2\u61d3\u61d4\u61d5\u61d6\u61d7\u61d8\u61d9\u61da\u61db\u61dc\u61dd\u61de\u61df\u61e0\u61e1\u61e2\u61e3\u61e4\u61e5\u61e6\u61e7\u61e8\u61e9\u61ea\u61eb\u61ec\u61ed\u61ee\u61ef\u61f0\u61f1\u61f2\u61f3\u61f4\u61f5\u61f6\u61f7\u61f8\u61f9\u61fa\u61fb\u61fc\u61fd\u61fe\u61ff\u6200\u6201\u6202\u6203\u6204\u6205\u6206\u6207\u6208\u6209\u620a\u620b\u620c\u620d\u620e\u620f\u6210\u6211\u6212\u6213\u6214\u6215\u6216\u6217\u6218\u6219\u621a\u621b\u621c\u621d\u621e\u621f\u6220\u6221\u6222\u6223\u6224\u6225\u6226\u6227\u6228\u6229\u622a\u622b\u622c\u622d\u622e\u622f\u6230\u6231\u6232\u6233\u6234\u6235\u6236\u6237\u6238\u6239\u623a\u623b\u623c\u623d\u623e\u623f\u6240\u6241\u6242\u6243\u6244\u6245\u6246\u6247\u6248\u6249\u624a\u624b\u624c\u624d\u624e\u624f\u6250\u6251\u6252\u6253\u6254\u6255\u6256\u6257\u6258\u6259\u625a\u625b\u625c\u625d\u625e\u625f\u6260\u6261\u6262\u6263\u6264\u6265\u6266\u6267\u6268\u6269\u626a\u626b\u626c\u626d\u626e\u626f\u6270\u6271\u6272\u6273\u6274\u6275\u6276\u6277\u6278\u6279\u627a\u627b\u627c\u627d\u627e\u627f\u6280\u6281\u6282\u6283\u6284\u6285\u6286\u6287\u6288\u6289\u628a\u628b\u628c\u628d\u628e\u628f\u6290\u6291\u6292\u6293\u6294\u6295\u6296\u6297\u6298\u6299\u629a\u629b\u629c\u629d\u629e\u629f\u62a0\u62a1\u62a2\u62a3\u62a4\u62a5\u62a6\u62a7\u62a8\u62a9\u62aa\u62ab\u62ac\u62ad\u62ae\u62af\u62b0\u62b1\u62b2\u62b3\u62b4\u62b5\u62b6\u62b7\u62b8\u62b9\u62ba\u62bb\u62bc\u62bd\u62be\u62bf\u62c0\u62c1\u62c2\u62c3\u62c4\u62c5\u62c6\u62c7\u62c8\u62c9\u62ca\u62cb\u62cc\u62cd\u62ce\u62cf\u62d0\u62d1\u62d2\u62d3\u62d4\u62d5\u62d6\u62d7\u62d8\u62d9\u62da\u62db\u62dc\u62dd\u62de\u62df\u62e0\u62e1\u62e2\u62e3\u62e4\u62e5\u62e6\u62e7\u62e8\u62e9\u62ea\u62eb\u62ec\u62ed\u62ee\u62ef\u62f0\u62f1\u62f2\u62f3\u62f4\u62f5\u62f6\u62f7\u62f8\u62f9\u62fa\u62fb\u62fc\u62fd\u62fe\u62ff\u6300\u6301\u6302\u6303\u6304\u6305\u6306\u6307\u6308\u6309\u630a\u630b\u630c\u630d\u630e\u630f\u6310\u6311\u6312\u6313\u6314\u6315\u6316\u6317\u6318\u6319\u631a\u631b\u631c\u631d\u631e\u631f\u6320\u6321\u6322\u6323\u6324\u6325\u6326\u6327\u6328\u6329\u632a\u632b\u632c\u632d\u632e\u632f\u6330\u6331\u6332\u6333\u6334\u6335\u6336\u6337\u6338\u6339\u633a\u633b\u633c\u633d\u633e\u633f\u6340\u6341\u6342\u6343\u6344\u6345\u6346\u6347\u6348\u6349\u634a\u634b\u634c\u634d\u634e\u634f\u6350\u6351\u6352\u6353\u6354\u6355\u6356\u6357\u6358\u6359\u635a\u635b\u635c\u635d\u635e\u635f\u6360\u6361\u6362\u6363\u6364\u6365\u6366\u6367\u6368\u6369\u636a\u636b\u636c\u636d\u636e\u636f\u6370\u6371\u6372\u6373\u6374\u6375\u6376\u6377\u6378\u6379\u637a\u637b\u637c\u637d\u637e\u637f\u6380\u6381\u6382\u6383\u6384\u6385\u6386\u6387\u6388\u6389\u638a\u638b\u638c\u638d\u638e\u638f\u6390\u6391\u6392\u6393\u6394\u6395\u6396\u6397\u6398\u6399\u639a\u639b\u639c\u639d\u639e\u639f\u63a0\u63a1\u63a2\u63a3\u63a4\u63a5\u63a6\u63a7\u63a8\u63a9\u63aa\u63ab\u63ac\u63ad\u63ae\u63af\u63b0\u63b1\u63b2\u63b3\u63b4\u63b5\u63b6\u63b7\u63b8\u63b9\u63ba\u63bb\u63bc\u63bd\u63be\u63bf\u63c0\u63c1\u63c2\u63c3\u63c4\u63c5\u63c6\u63c7\u63c8\u63c9\u63ca\u63cb\u63cc\u63cd\u63ce\u63cf\u63d0\u63d1\u63d2\u63d3\u63d4\u63d5\u63d6\u63d7\u63d8\u63d9\u63da\u63db\u63dc\u63dd\u63de\u63df\u63e0\u63e1\u63e2\u63e3\u63e4\u63e5\u63e6\u63e7\u63e8\u63e9\u63ea\u63eb\u63ec\u63ed\u63ee\u63ef\u63f0\u63f1\u63f2\u63f3\u63f4\u63f5\u63f6\u63f7\u63f8\u63f9\u63fa\u63fb\u63fc\u63fd\u63fe\u63ff\u6400\u6401\u6402\u6403\u6404\u6405\u6406\u6407\u6408\u6409\u640a\u640b\u640c\u640d\u640e\u640f\u6410\u6411\u6412\u6413\u6414\u6415\u6416\u6417\u6418\u6419\u641a\u641b\u641c\u641d\u641e\u641f\u6420\u6421\u6422\u6423\u6424\u6425\u6426\u6427\u6428\u6429\u642a\u642b\u642c\u642d\u642e\u642f\u6430\u6431\u6432\u6433\u6434\u6435\u6436\u6437\u6438\u6439\u643a\u643b\u643c\u643d\u643e\u643f\u6440\u6441\u6442\u6443\u6444\u6445\u6446\u6447\u6448\u6449\u644a\u644b\u644c\u644d\u644e\u644f\u6450\u6451\u6452\u6453\u6454\u6455\u6456\u6457\u6458\u6459\u645a\u645b\u645c\u645d\u645e\u645f\u6460\u6461\u6462\u6463\u6464\u6465\u6466\u6467\u6468\u6469\u646a\u646b\u646c\u646d\u646e\u646f\u6470\u6471\u6472\u6473\u6474\u6475\u6476\u6477\u6478\u6479\u647a\u647b\u647c\u647d\u647e\u647f\u6480\u6481\u6482\u6483\u6484\u6485\u6486\u6487\u6488\u6489\u648a\u648b\u648c\u648d\u648e\u648f\u6490\u6491\u6492\u6493\u6494\u6495\u6496\u6497\u6498\u6499\u649a\u649b\u649c\u649d\u649e\u649f\u64a0\u64a1\u64a2\u64a3\u64a4\u64a5\u64a6\u64a7\u64a8\u64a9\u64aa\u64ab\u64ac\u64ad\u64ae\u64af\u64b0\u64b1\u64b2\u64b3\u64b4\u64b5\u64b6\u64b7\u64b8\u64b9\u64ba\u64bb\u64bc\u64bd\u64be\u64bf\u64c0\u64c1\u64c2\u64c3\u64c4\u64c5\u64c6\u64c7\u64c8\u64c9\u64ca\u64cb\u64cc\u64cd\u64ce\u64cf\u64d0\u64d1\u64d2\u64d3\u64d4\u64d5\u64d6\u64d7\u64d8\u64d9\u64da\u64db\u64dc\u64dd\u64de\u64df\u64e0\u64e1\u64e2\u64e3\u64e4\u64e5\u64e6\u64e7\u64e8\u64e9\u64ea\u64eb\u64ec\u64ed\u64ee\u64ef\u64f0\u64f1\u64f2\u64f3\u64f4\u64f5\u64f6\u64f7\u64f8\u64f9\u64fa\u64fb\u64fc\u64fd\u64fe\u64ff\u6500\u6501\u6502\u6503\u6504\u6505\u6506\u6507\u6508\u6509\u650a\u650b\u650c\u650d\u650e\u650f\u6510\u6511\u6512\u6513\u6514\u6515\u6516\u6517\u6518\u6519\u651a\u651b\u651c\u651d\u651e\u651f\u6520\u6521\u6522\u6523\u6524\u6525\u6526\u6527\u6528\u6529\u652a\u652b\u652c\u652d\u652e\u652f\u6530\u6531\u6532\u6533\u6534\u6535\u6536\u6537\u6538\u6539\u653a\u653b\u653c\u653d\u653e\u653f\u6540\u6541\u6542\u6543\u6544\u6545\u6546\u6547\u6548\u6549\u654a\u654b\u654c\u654d\u654e\u654f\u6550\u6551\u6552\u6553\u6554\u6555\u6556\u6557\u6558\u6559\u655a\u655b\u655c\u655d\u655e\u655f\u6560\u6561\u6562\u6563\u6564\u6565\u6566\u6567\u6568\u6569\u656a\u656b\u656c\u656d\u656e\u656f\u6570\u6571\u6572\u6573\u6574\u6575\u6576\u6577\u6578\u6579\u657a\u657b\u657c\u657d\u657e\u657f\u6580\u6581\u6582\u6583\u6584\u6585\u6586\u6587\u6588\u6589\u658a\u658b\u658c\u658d\u658e\u658f\u6590\u6591\u6592\u6593\u6594\u6595\u6596\u6597\u6598\u6599\u659a\u659b\u659c\u659d\u659e\u659f\u65a0\u65a1\u65a2\u65a3\u65a4\u65a5\u65a6\u65a7\u65a8\u65a9\u65aa\u65ab\u65ac\u65ad\u65ae\u65af\u65b0\u65b1\u65b2\u65b3\u65b4\u65b5\u65b6\u65b7\u65b8\u65b9\u65ba\u65bb\u65bc\u65bd\u65be\u65bf\u65c0\u65c1\u65c2\u65c3\u65c4\u65c5\u65c6\u65c7\u65c8\u65c9\u65ca\u65cb\u65cc\u65cd\u65ce\u65cf\u65d0\u65d1\u65d2\u65d3\u65d4\u65d5\u65d6\u65d7\u65d8\u65d9\u65da\u65db\u65dc\u65dd\u65de\u65df\u65e0\u65e1\u65e2\u65e3\u65e4\u65e5\u65e6\u65e7\u65e8\u65e9\u65ea\u65eb\u65ec\u65ed\u65ee\u65ef\u65f0\u65f1\u65f2\u65f3\u65f4\u65f5\u65f6\u65f7\u65f8\u65f9\u65fa\u65fb\u65fc\u65fd\u65fe\u65ff\u6600\u6601\u6602\u6603\u6604\u6605\u6606\u6607\u6608\u6609\u660a\u660b\u660c\u660d\u660e\u660f\u6610\u6611\u6612\u6613\u6614\u6615\u6616\u6617\u6618\u6619\u661a\u661b\u661c\u661d\u661e\u661f\u6620\u6621\u6622\u6623\u6624\u6625\u6626\u6627\u6628\u6629\u662a\u662b\u662c\u662d\u662e\u662f\u6630\u6631\u6632\u6633\u6634\u6635\u6636\u6637\u6638\u6639\u663a\u663b\u663c\u663d\u663e\u663f\u6640\u6641\u6642\u6643\u6644\u6645\u6646\u6647\u6648\u6649\u664a\u664b\u664c\u664d\u664e\u664f\u6650\u6651\u6652\u6653\u6654\u6655\u6656\u6657\u6658\u6659\u665a\u665b\u665c\u665d\u665e\u665f\u6660\u6661\u6662\u6663\u6664\u6665\u6666\u6667\u6668\u6669\u666a\u666b\u666c\u666d\u666e\u666f\u6670\u6671\u6672\u6673\u6674\u6675\u6676\u6677\u6678\u6679\u667a\u667b\u667c\u667d\u667e\u667f\u6680\u6681\u6682\u6683\u6684\u6685\u6686\u6687\u6688\u6689\u668a\u668b\u668c\u668d\u668e\u668f\u6690\u6691\u6692\u6693\u6694\u6695\u6696\u6697\u6698\u6699\u669a\u669b\u669c\u669d\u669e\u669f\u66a0\u66a1\u66a2\u66a3\u66a4\u66a5\u66a6\u66a7\u66a8\u66a9\u66aa\u66ab\u66ac\u66ad\u66ae\u66af\u66b0\u66b1\u66b2\u66b3\u66b4\u66b5\u66b6\u66b7\u66b8\u66b9\u66ba\u66bb\u66bc\u66bd\u66be\u66bf\u66c0\u66c1\u66c2\u66c3\u66c4\u66c5\u66c6\u66c7\u66c8\u66c9\u66ca\u66cb\u66cc\u66cd\u66ce\u66cf\u66d0\u66d1\u66d2\u66d3\u66d4\u66d5\u66d6\u66d7\u66d8\u66d9\u66da\u66db\u66dc\u66dd\u66de\u66df\u66e0\u66e1\u66e2\u66e3\u66e4\u66e5\u66e6\u66e7\u66e8\u66e9\u66ea\u66eb\u66ec\u66ed\u66ee\u66ef\u66f0\u66f1\u66f2\u66f3\u66f4\u66f5\u66f6\u66f7\u66f8\u66f9\u66fa\u66fb\u66fc\u66fd\u66fe\u66ff\u6700\u6701\u6702\u6703\u6704\u6705\u6706\u6707\u6708\u6709\u670a\u670b\u670c\u670d\u670e\u670f\u6710\u6711\u6712\u6713\u6714\u6715\u6716\u6717\u6718\u6719\u671a\u671b\u671c\u671d\u671e\u671f\u6720\u6721\u6722\u6723\u6724\u6725\u6726\u6727\u6728\u6729\u672a\u672b\u672c\u672d\u672e\u672f\u6730\u6731\u6732\u6733\u6734\u6735\u6736\u6737\u6738\u6739\u673a\u673b\u673c\u673d\u673e\u673f\u6740\u6741\u6742\u6743\u6744\u6745\u6746\u6747\u6748\u6749\u674a\u674b\u674c\u674d\u674e\u674f\u6750\u6751\u6752\u6753\u6754\u6755\u6756\u6757\u6758\u6759\u675a\u675b\u675c\u675d\u675e\u675f\u6760\u6761\u6762\u6763\u6764\u6765\u6766\u6767\u6768\u6769\u676a\u676b\u676c\u676d\u676e\u676f\u6770\u6771\u6772\u6773\u6774\u6775\u6776\u6777\u6778\u6779\u677a\u677b\u677c\u677d\u677e\u677f\u6780\u6781\u6782\u6783\u6784\u6785\u6786\u6787\u6788\u6789\u678a\u678b\u678c\u678d\u678e\u678f\u6790\u6791\u6792\u6793\u6794\u6795\u6796\u6797\u6798\u6799\u679a\u679b\u679c\u679d\u679e\u679f\u67a0\u67a1\u67a2\u67a3\u67a4\u67a5\u67a6\u67a7\u67a8\u67a9\u67aa\u67ab\u67ac\u67ad\u67ae\u67af\u67b0\u67b1\u67b2\u67b3\u67b4\u67b5\u67b6\u67b7\u67b8\u67b9\u67ba\u67bb\u67bc\u67bd\u67be\u67bf\u67c0\u67c1\u67c2\u67c3\u67c4\u67c5\u67c6\u67c7\u67c8\u67c9\u67ca\u67cb\u67cc\u67cd\u67ce\u67cf\u67d0\u67d1\u67d2\u67d3\u67d4\u67d5\u67d6\u67d7\u67d8\u67d9\u67da\u67db\u67dc\u67dd\u67de\u67df\u67e0\u67e1\u67e2\u67e3\u67e4\u67e5\u67e6\u67e7\u67e8\u67e9\u67ea\u67eb\u67ec\u67ed\u67ee\u67ef\u67f0\u67f1\u67f2\u67f3\u67f4\u67f5\u67f6\u67f7\u67f8\u67f9\u67fa\u67fb\u67fc\u67fd\u67fe\u67ff\u6800\u6801\u6802\u6803\u6804\u6805\u6806\u6807\u6808\u6809\u680a\u680b\u680c\u680d\u680e\u680f\u6810\u6811\u6812\u6813\u6814\u6815\u6816\u6817\u6818\u6819\u681a\u681b\u681c\u681d\u681e\u681f\u6820\u6821\u6822\u6823\u6824\u6825\u6826\u6827\u6828\u6829\u682a\u682b\u682c\u682d\u682e\u682f\u6830\u6831\u6832\u6833\u6834\u6835\u6836\u6837\u6838\u6839\u683a\u683b\u683c\u683d\u683e\u683f\u6840\u6841\u6842\u6843\u6844\u6845\u6846\u6847\u6848\u6849\u684a\u684b\u684c\u684d\u684e\u684f\u6850\u6851\u6852\u6853\u6854\u6855\u6856\u6857\u6858\u6859\u685a\u685b\u685c\u685d\u685e\u685f\u6860\u6861\u6862\u6863\u6864\u6865\u6866\u6867\u6868\u6869\u686a\u686b\u686c\u686d\u686e\u686f\u6870\u6871\u6872\u6873\u6874\u6875\u6876\u6877\u6878\u6879\u687a\u687b\u687c\u687d\u687e\u687f\u6880\u6881\u6882\u6883\u6884\u6885\u6886\u6887\u6888\u6889\u688a\u688b\u688c\u688d\u688e\u688f\u6890\u6891\u6892\u6893\u6894\u6895\u6896\u6897\u6898\u6899\u689a\u689b\u689c\u689d\u689e\u689f\u68a0\u68a1\u68a2\u68a3\u68a4\u68a5\u68a6\u68a7\u68a8\u68a9\u68aa\u68ab\u68ac\u68ad\u68ae\u68af\u68b0\u68b1\u68b2\u68b3\u68b4\u68b5\u68b6\u68b7\u68b8\u68b9\u68ba\u68bb\u68bc\u68bd\u68be\u68bf\u68c0\u68c1\u68c2\u68c3\u68c4\u68c5\u68c6\u68c7\u68c8\u68c9\u68ca\u68cb\u68cc\u68cd\u68ce\u68cf\u68d0\u68d1\u68d2\u68d3\u68d4\u68d5\u68d6\u68d7\u68d8\u68d9\u68da\u68db\u68dc\u68dd\u68de\u68df\u68e0\u68e1\u68e2\u68e3\u68e4\u68e5\u68e6\u68e7\u68e8\u68e9\u68ea\u68eb\u68ec\u68ed\u68ee\u68ef\u68f0\u68f1\u68f2\u68f3\u68f4\u68f5\u68f6\u68f7\u68f8\u68f9\u68fa\u68fb\u68fc\u68fd\u68fe\u68ff\u6900\u6901\u6902\u6903\u6904\u6905\u6906\u6907\u6908\u6909\u690a\u690b\u690c\u690d\u690e\u690f\u6910\u6911\u6912\u6913\u6914\u6915\u6916\u6917\u6918\u6919\u691a\u691b\u691c\u691d\u691e\u691f\u6920\u6921\u6922\u6923\u6924\u6925\u6926\u6927\u6928\u6929\u692a\u692b\u692c\u692d\u692e\u692f\u6930\u6931\u6932\u6933\u6934\u6935\u6936\u6937\u6938\u6939\u693a\u693b\u693c\u693d\u693e\u693f\u6940\u6941\u6942\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694a\u694b\u694c\u694d\u694e\u694f\u6950\u6951\u6952\u6953\u6954\u6955\u6956\u6957\u6958\u6959\u695a\u695b\u695c\u695d\u695e\u695f\u6960\u6961\u6962\u6963\u6964\u6965\u6966\u6967\u6968\u6969\u696a\u696b\u696c\u696d\u696e\u696f\u6970\u6971\u6972\u6973\u6974\u6975\u6976\u6977\u6978\u6979\u697a\u697b\u697c\u697d\u697e\u697f\u6980\u6981\u6982\u6983\u6984\u6985\u6986\u6987\u6988\u6989\u698a\u698b\u698c\u698d\u698e\u698f\u6990\u6991\u6992\u6993\u6994\u6995\u6996\u6997\u6998\u6999\u699a\u699b\u699c\u699d\u699e\u699f\u69a0\u69a1\u69a2\u69a3\u69a4\u69a5\u69a6\u69a7\u69a8\u69a9\u69aa\u69ab\u69ac\u69ad\u69ae\u69af\u69b0\u69b1\u69b2\u69b3\u69b4\u69b5\u69b6\u69b7\u69b8\u69b9\u69ba\u69bb\u69bc\u69bd\u69be\u69bf\u69c0\u69c1\u69c2\u69c3\u69c4\u69c5\u69c6\u69c7\u69c8\u69c9\u69ca\u69cb\u69cc\u69cd\u69ce\u69cf\u69d0\u69d1\u69d2\u69d3\u69d4\u69d5\u69d6\u69d7\u69d8\u69d9\u69da\u69db\u69dc\u69dd\u69de\u69df\u69e0\u69e1\u69e2\u69e3\u69e4\u69e5\u69e6\u69e7\u69e8\u69e9\u69ea\u69eb\u69ec\u69ed\u69ee\u69ef\u69f0\u69f1\u69f2\u69f3\u69f4\u69f5\u69f6\u69f7\u69f8\u69f9\u69fa\u69fb\u69fc\u69fd\u69fe\u69ff\u6a00\u6a01\u6a02\u6a03\u6a04\u6a05\u6a06\u6a07\u6a08\u6a09\u6a0a\u6a0b\u6a0c\u6a0d\u6a0e\u6a0f\u6a10\u6a11\u6a12\u6a13\u6a14\u6a15\u6a16\u6a17\u6a18\u6a19\u6a1a\u6a1b\u6a1c\u6a1d\u6a1e\u6a1f\u6a20\u6a21\u6a22\u6a23\u6a24\u6a25\u6a26\u6a27\u6a28\u6a29\u6a2a\u6a2b\u6a2c\u6a2d\u6a2e\u6a2f\u6a30\u6a31\u6a32\u6a33\u6a34\u6a35\u6a36\u6a37\u6a38\u6a39\u6a3a\u6a3b\u6a3c\u6a3d\u6a3e\u6a3f\u6a40\u6a41\u6a42\u6a43\u6a44\u6a45\u6a46\u6a47\u6a48\u6a49\u6a4a\u6a4b\u6a4c\u6a4d\u6a4e\u6a4f\u6a50\u6a51\u6a52\u6a53\u6a54\u6a55\u6a56\u6a57\u6a58\u6a59\u6a5a\u6a5b\u6a5c\u6a5d\u6a5e\u6a5f\u6a60\u6a61\u6a62\u6a63\u6a64\u6a65\u6a66\u6a67\u6a68\u6a69\u6a6a\u6a6b\u6a6c\u6a6d\u6a6e\u6a6f\u6a70\u6a71\u6a72\u6a73\u6a74\u6a75\u6a76\u6a77\u6a78\u6a79\u6a7a\u6a7b\u6a7c\u6a7d\u6a7e\u6a7f\u6a80\u6a81\u6a82\u6a83\u6a84\u6a85\u6a86\u6a87\u6a88\u6a89\u6a8a\u6a8b\u6a8c\u6a8d\u6a8e\u6a8f\u6a90\u6a91\u6a92\u6a93\u6a94\u6a95\u6a96\u6a97\u6a98\u6a99\u6a9a\u6a9b\u6a9c\u6a9d\u6a9e\u6a9f\u6aa0\u6aa1\u6aa2\u6aa3\u6aa4\u6aa5\u6aa6\u6aa7\u6aa8\u6aa9\u6aaa\u6aab\u6aac\u6aad\u6aae\u6aaf\u6ab0\u6ab1\u6ab2\u6ab3\u6ab4\u6ab5\u6ab6\u6ab7\u6ab8\u6ab9\u6aba\u6abb\u6abc\u6abd\u6abe\u6abf\u6ac0\u6ac1\u6ac2\u6ac3\u6ac4\u6ac5\u6ac6\u6ac7\u6ac8\u6ac9\u6aca\u6acb\u6acc\u6acd\u6ace\u6acf\u6ad0\u6ad1\u6ad2\u6ad3\u6ad4\u6ad5\u6ad6\u6ad7\u6ad8\u6ad9\u6ada\u6adb\u6adc\u6add\u6ade\u6adf\u6ae0\u6ae1\u6ae2\u6ae3\u6ae4\u6ae5\u6ae6\u6ae7\u6ae8\u6ae9\u6aea\u6aeb\u6aec\u6aed\u6aee\u6aef\u6af0\u6af1\u6af2\u6af3\u6af4\u6af5\u6af6\u6af7\u6af8\u6af9\u6afa\u6afb\u6afc\u6afd\u6afe\u6aff\u6b00\u6b01\u6b02\u6b03\u6b04\u6b05\u6b06\u6b07\u6b08\u6b09\u6b0a\u6b0b\u6b0c\u6b0d\u6b0e\u6b0f\u6b10\u6b11\u6b12\u6b13\u6b14\u6b15\u6b16\u6b17\u6b18\u6b19\u6b1a\u6b1b\u6b1c\u6b1d\u6b1e\u6b1f\u6b20\u6b21\u6b22\u6b23\u6b24\u6b25\u6b26\u6b27\u6b28\u6b29\u6b2a\u6b2b\u6b2c\u6b2d\u6b2e\u6b2f\u6b30\u6b31\u6b32\u6b33\u6b34\u6b35\u6b36\u6b37\u6b38\u6b39\u6b3a\u6b3b\u6b3c\u6b3d\u6b3e\u6b3f\u6b40\u6b41\u6b42\u6b43\u6b44\u6b45\u6b46\u6b47\u6b48\u6b49\u6b4a\u6b4b\u6b4c\u6b4d\u6b4e\u6b4f\u6b50\u6b51\u6b52\u6b53\u6b54\u6b55\u6b56\u6b57\u6b58\u6b59\u6b5a\u6b5b\u6b5c\u6b5d\u6b5e\u6b5f\u6b60\u6b61\u6b62\u6b63\u6b64\u6b65\u6b66\u6b67\u6b68\u6b69\u6b6a\u6b6b\u6b6c\u6b6d\u6b6e\u6b6f\u6b70\u6b71\u6b72\u6b73\u6b74\u6b75\u6b76\u6b77\u6b78\u6b79\u6b7a\u6b7b\u6b7c\u6b7d\u6b7e\u6b7f\u6b80\u6b81\u6b82\u6b83\u6b84\u6b85\u6b86\u6b87\u6b88\u6b89\u6b8a\u6b8b\u6b8c\u6b8d\u6b8e\u6b8f\u6b90\u6b91\u6b92\u6b93\u6b94\u6b95\u6b96\u6b97\u6b98\u6b99\u6b9a\u6b9b\u6b9c\u6b9d\u6b9e\u6b9f\u6ba0\u6ba1\u6ba2\u6ba3\u6ba4\u6ba5\u6ba6\u6ba7\u6ba8\u6ba9\u6baa\u6bab\u6bac\u6bad\u6bae\u6baf\u6bb0\u6bb1\u6bb2\u6bb3\u6bb4\u6bb5\u6bb6\u6bb7\u6bb8\u6bb9\u6bba\u6bbb\u6bbc\u6bbd\u6bbe\u6bbf\u6bc0\u6bc1\u6bc2\u6bc3\u6bc4\u6bc5\u6bc6\u6bc7\u6bc8\u6bc9\u6bca\u6bcb\u6bcc\u6bcd\u6bce\u6bcf\u6bd0\u6bd1\u6bd2\u6bd3\u6bd4\u6bd5\u6bd6\u6bd7\u6bd8\u6bd9\u6bda\u6bdb\u6bdc\u6bdd\u6bde\u6bdf\u6be0\u6be1\u6be2\u6be3\u6be4\u6be5\u6be6\u6be7\u6be8\u6be9\u6bea\u6beb\u6bec\u6bed\u6bee\u6bef\u6bf0\u6bf1\u6bf2\u6bf3\u6bf4\u6bf5\u6bf6\u6bf7\u6bf8\u6bf9\u6bfa\u6bfb\u6bfc\u6bfd\u6bfe\u6bff\u6c00\u6c01\u6c02\u6c03\u6c04\u6c05\u6c06\u6c07\u6c08\u6c09\u6c0a\u6c0b\u6c0c\u6c0d\u6c0e\u6c0f\u6c10\u6c11\u6c12\u6c13\u6c14\u6c15\u6c16\u6c17\u6c18\u6c19\u6c1a\u6c1b\u6c1c\u6c1d\u6c1e\u6c1f\u6c20\u6c21\u6c22\u6c23\u6c24\u6c25\u6c26\u6c27\u6c28\u6c29\u6c2a\u6c2b\u6c2c\u6c2d\u6c2e\u6c2f\u6c30\u6c31\u6c32\u6c33\u6c34\u6c35\u6c36\u6c37\u6c38\u6c39\u6c3a\u6c3b\u6c3c\u6c3d\u6c3e\u6c3f\u6c40\u6c41\u6c42\u6c43\u6c44\u6c45\u6c46\u6c47\u6c48\u6c49\u6c4a\u6c4b\u6c4c\u6c4d\u6c4e\u6c4f\u6c50\u6c51\u6c52\u6c53\u6c54\u6c55\u6c56\u6c57\u6c58\u6c59\u6c5a\u6c5b\u6c5c\u6c5d\u6c5e\u6c5f\u6c60\u6c61\u6c62\u6c63\u6c64\u6c65\u6c66\u6c67\u6c68\u6c69\u6c6a\u6c6b\u6c6c\u6c6d\u6c6e\u6c6f\u6c70\u6c71\u6c72\u6c73\u6c74\u6c75\u6c76\u6c77\u6c78\u6c79\u6c7a\u6c7b\u6c7c\u6c7d\u6c7e\u6c7f\u6c80\u6c81\u6c82\u6c83\u6c84\u6c85\u6c86\u6c87\u6c88\u6c89\u6c8a\u6c8b\u6c8c\u6c8d\u6c8e\u6c8f\u6c90\u6c91\u6c92\u6c93\u6c94\u6c95\u6c96\u6c97\u6c98\u6c99\u6c9a\u6c9b\u6c9c\u6c9d\u6c9e\u6c9f\u6ca0\u6ca1\u6ca2\u6ca3\u6ca4\u6ca5\u6ca6\u6ca7\u6ca8\u6ca9\u6caa\u6cab\u6cac\u6cad\u6cae\u6caf\u6cb0\u6cb1\u6cb2\u6cb3\u6cb4\u6cb5\u6cb6\u6cb7\u6cb8\u6cb9\u6cba\u6cbb\u6cbc\u6cbd\u6cbe\u6cbf\u6cc0\u6cc1\u6cc2\u6cc3\u6cc4\u6cc5\u6cc6\u6cc7\u6cc8\u6cc9\u6cca\u6ccb\u6ccc\u6ccd\u6cce\u6ccf\u6cd0\u6cd1\u6cd2\u6cd3\u6cd4\u6cd5\u6cd6\u6cd7\u6cd8\u6cd9\u6cda\u6cdb\u6cdc\u6cdd\u6cde\u6cdf\u6ce0\u6ce1\u6ce2\u6ce3\u6ce4\u6ce5\u6ce6\u6ce7\u6ce8\u6ce9\u6cea\u6ceb\u6cec\u6ced\u6cee\u6cef\u6cf0\u6cf1\u6cf2\u6cf3\u6cf4\u6cf5\u6cf6\u6cf7\u6cf8\u6cf9\u6cfa\u6cfb\u6cfc\u6cfd\u6cfe\u6cff\u6d00\u6d01\u6d02\u6d03\u6d04\u6d05\u6d06\u6d07\u6d08\u6d09\u6d0a\u6d0b\u6d0c\u6d0d\u6d0e\u6d0f\u6d10\u6d11\u6d12\u6d13\u6d14\u6d15\u6d16\u6d17\u6d18\u6d19\u6d1a\u6d1b\u6d1c\u6d1d\u6d1e\u6d1f\u6d20\u6d21\u6d22\u6d23\u6d24\u6d25\u6d26\u6d27\u6d28\u6d29\u6d2a\u6d2b\u6d2c\u6d2d\u6d2e\u6d2f\u6d30\u6d31\u6d32\u6d33\u6d34\u6d35\u6d36\u6d37\u6d38\u6d39\u6d3a\u6d3b\u6d3c\u6d3d\u6d3e\u6d3f\u6d40\u6d41\u6d42\u6d43\u6d44\u6d45\u6d46\u6d47\u6d48\u6d49\u6d4a\u6d4b\u6d4c\u6d4d\u6d4e\u6d4f\u6d50\u6d51\u6d52\u6d53\u6d54\u6d55\u6d56\u6d57\u6d58\u6d59\u6d5a\u6d5b\u6d5c\u6d5d\u6d5e\u6d5f\u6d60\u6d61\u6d62\u6d63\u6d64\u6d65\u6d66\u6d67\u6d68\u6d69\u6d6a\u6d6b\u6d6c\u6d6d\u6d6e\u6d6f\u6d70\u6d71\u6d72\u6d73\u6d74\u6d75\u6d76\u6d77\u6d78\u6d79\u6d7a\u6d7b\u6d7c\u6d7d\u6d7e\u6d7f\u6d80\u6d81\u6d82\u6d83\u6d84\u6d85\u6d86\u6d87\u6d88\u6d89\u6d8a\u6d8b\u6d8c\u6d8d\u6d8e\u6d8f\u6d90\u6d91\u6d92\u6d93\u6d94\u6d95\u6d96\u6d97\u6d98\u6d99\u6d9a\u6d9b\u6d9c\u6d9d\u6d9e\u6d9f\u6da0\u6da1\u6da2\u6da3\u6da4\u6da5\u6da6\u6da7\u6da8\u6da9\u6daa\u6dab\u6dac\u6dad\u6dae\u6daf\u6db0\u6db1\u6db2\u6db3\u6db4\u6db5\u6db6\u6db7\u6db8\u6db9\u6dba\u6dbb\u6dbc\u6dbd\u6dbe\u6dbf\u6dc0\u6dc1\u6dc2\u6dc3\u6dc4\u6dc5\u6dc6\u6dc7\u6dc8\u6dc9\u6dca\u6dcb\u6dcc\u6dcd\u6dce\u6dcf\u6dd0\u6dd1\u6dd2\u6dd3\u6dd4\u6dd5\u6dd6\u6dd7\u6dd8\u6dd9\u6dda\u6ddb\u6ddc\u6ddd\u6dde\u6ddf\u6de0\u6de1\u6de2\u6de3\u6de4\u6de5\u6de6\u6de7\u6de8\u6de9\u6dea\u6deb\u6dec\u6ded\u6dee\u6def\u6df0\u6df1\u6df2\u6df3\u6df4\u6df5\u6df6\u6df7\u6df8\u6df9\u6dfa\u6dfb\u6dfc\u6dfd\u6dfe\u6dff\u6e00\u6e01\u6e02\u6e03\u6e04\u6e05\u6e06\u6e07\u6e08\u6e09\u6e0a\u6e0b\u6e0c\u6e0d\u6e0e\u6e0f\u6e10\u6e11\u6e12\u6e13\u6e14\u6e15\u6e16\u6e17\u6e18\u6e19\u6e1a\u6e1b\u6e1c\u6e1d\u6e1e\u6e1f\u6e20\u6e21\u6e22\u6e23\u6e24\u6e25\u6e26\u6e27\u6e28\u6e29\u6e2a\u6e2b\u6e2c\u6e2d\u6e2e\u6e2f\u6e30\u6e31\u6e32\u6e33\u6e34\u6e35\u6e36\u6e37\u6e38\u6e39\u6e3a\u6e3b\u6e3c\u6e3d\u6e3e\u6e3f\u6e40\u6e41\u6e42\u6e43\u6e44\u6e45\u6e46\u6e47\u6e48\u6e49\u6e4a\u6e4b\u6e4c\u6e4d\u6e4e\u6e4f\u6e50\u6e51\u6e52\u6e53\u6e54\u6e55\u6e56\u6e57\u6e58\u6e59\u6e5a\u6e5b\u6e5c\u6e5d\u6e5e\u6e5f\u6e60\u6e61\u6e62\u6e63\u6e64\u6e65\u6e66\u6e67\u6e68\u6e69\u6e6a\u6e6b\u6e6c\u6e6d\u6e6e\u6e6f\u6e70\u6e71\u6e72\u6e73\u6e74\u6e75\u6e76\u6e77\u6e78\u6e79\u6e7a\u6e7b\u6e7c\u6e7d\u6e7e\u6e7f\u6e80\u6e81\u6e82\u6e83\u6e84\u6e85\u6e86\u6e87\u6e88\u6e89\u6e8a\u6e8b\u6e8c\u6e8d\u6e8e\u6e8f\u6e90\u6e91\u6e92\u6e93\u6e94\u6e95\u6e96\u6e97\u6e98\u6e99\u6e9a\u6e9b\u6e9c\u6e9d\u6e9e\u6e9f\u6ea0\u6ea1\u6ea2\u6ea3\u6ea4\u6ea5\u6ea6\u6ea7\u6ea8\u6ea9\u6eaa\u6eab\u6eac\u6ead\u6eae\u6eaf\u6eb0\u6eb1\u6eb2\u6eb3\u6eb4\u6eb5\u6eb6\u6eb7\u6eb8\u6eb9\u6eba\u6ebb\u6ebc\u6ebd\u6ebe\u6ebf\u6ec0\u6ec1\u6ec2\u6ec3\u6ec4\u6ec5\u6ec6\u6ec7\u6ec8\u6ec9\u6eca\u6ecb\u6ecc\u6ecd\u6ece\u6ecf\u6ed0\u6ed1\u6ed2\u6ed3\u6ed4\u6ed5\u6ed6\u6ed7\u6ed8\u6ed9\u6eda\u6edb\u6edc\u6edd\u6ede\u6edf\u6ee0\u6ee1\u6ee2\u6ee3\u6ee4\u6ee5\u6ee6\u6ee7\u6ee8\u6ee9\u6eea\u6eeb\u6eec\u6eed\u6eee\u6eef\u6ef0\u6ef1\u6ef2\u6ef3\u6ef4\u6ef5\u6ef6\u6ef7\u6ef8\u6ef9\u6efa\u6efb\u6efc\u6efd\u6efe\u6eff\u6f00\u6f01\u6f02\u6f03\u6f04\u6f05\u6f06\u6f07\u6f08\u6f09\u6f0a\u6f0b\u6f0c\u6f0d\u6f0e\u6f0f\u6f10\u6f11\u6f12\u6f13\u6f14\u6f15\u6f16\u6f17\u6f18\u6f19\u6f1a\u6f1b\u6f1c\u6f1d\u6f1e\u6f1f\u6f20\u6f21\u6f22\u6f23\u6f24\u6f25\u6f26\u6f27\u6f28\u6f29\u6f2a\u6f2b\u6f2c\u6f2d\u6f2e\u6f2f\u6f30\u6f31\u6f32\u6f33\u6f34\u6f35\u6f36\u6f37\u6f38\u6f39\u6f3a\u6f3b\u6f3c\u6f3d\u6f3e\u6f3f\u6f40\u6f41\u6f42\u6f43\u6f44\u6f45\u6f46\u6f47\u6f48\u6f49\u6f4a\u6f4b\u6f4c\u6f4d\u6f4e\u6f4f\u6f50\u6f51\u6f52\u6f53\u6f54\u6f55\u6f56\u6f57\u6f58\u6f59\u6f5a\u6f5b\u6f5c\u6f5d\u6f5e\u6f5f\u6f60\u6f61\u6f62\u6f63\u6f64\u6f65\u6f66\u6f67\u6f68\u6f69\u6f6a\u6f6b\u6f6c\u6f6d\u6f6e\u6f6f\u6f70\u6f71\u6f72\u6f73\u6f74\u6f75\u6f76\u6f77\u6f78\u6f79\u6f7a\u6f7b\u6f7c\u6f7d\u6f7e\u6f7f\u6f80\u6f81\u6f82\u6f83\u6f84\u6f85\u6f86\u6f87\u6f88\u6f89\u6f8a\u6f8b\u6f8c\u6f8d\u6f8e\u6f8f\u6f90\u6f91\u6f92\u6f93\u6f94\u6f95\u6f96\u6f97\u6f98\u6f99\u6f9a\u6f9b\u6f9c\u6f9d\u6f9e\u6f9f\u6fa0\u6fa1\u6fa2\u6fa3\u6fa4\u6fa5\u6fa6\u6fa7\u6fa8\u6fa9\u6faa\u6fab\u6fac\u6fad\u6fae\u6faf\u6fb0\u6fb1\u6fb2\u6fb3\u6fb4\u6fb5\u6fb6\u6fb7\u6fb8\u6fb9\u6fba\u6fbb\u6fbc\u6fbd\u6fbe\u6fbf\u6fc0\u6fc1\u6fc2\u6fc3\u6fc4\u6fc5\u6fc6\u6fc7\u6fc8\u6fc9\u6fca\u6fcb\u6fcc\u6fcd\u6fce\u6fcf\u6fd0\u6fd1\u6fd2\u6fd3\u6fd4\u6fd5\u6fd6\u6fd7\u6fd8\u6fd9\u6fda\u6fdb\u6fdc\u6fdd\u6fde\u6fdf\u6fe0\u6fe1\u6fe2\u6fe3\u6fe4\u6fe5\u6fe6\u6fe7\u6fe8\u6fe9\u6fea\u6feb\u6fec\u6fed\u6fee\u6fef\u6ff0\u6ff1\u6ff2\u6ff3\u6ff4\u6ff5\u6ff6\u6ff7\u6ff8\u6ff9\u6ffa\u6ffb\u6ffc\u6ffd\u6ffe\u6fff\u7000\u7001\u7002\u7003\u7004\u7005\u7006\u7007\u7008\u7009\u700a\u700b\u700c\u700d\u700e\u700f\u7010\u7011\u7012\u7013\u7014\u7015\u7016\u7017\u7018\u7019\u701a\u701b\u701c\u701d\u701e\u701f\u7020\u7021\u7022\u7023\u7024\u7025\u7026\u7027\u7028\u7029\u702a\u702b\u702c\u702d\u702e\u702f\u7030\u7031\u7032\u7033\u7034\u7035\u7036\u7037\u7038\u7039\u703a\u703b\u703c\u703d\u703e\u703f\u7040\u7041\u7042\u7043\u7044\u7045\u7046\u7047\u7048\u7049\u704a\u704b\u704c\u704d\u704e\u704f\u7050\u7051\u7052\u7053\u7054\u7055\u7056\u7057\u7058\u7059\u705a\u705b\u705c\u705d\u705e\u705f\u7060\u7061\u7062\u7063\u7064\u7065\u7066\u7067\u7068\u7069\u706a\u706b\u706c\u706d\u706e\u706f\u7070\u7071\u7072\u7073\u7074\u7075\u7076\u7077\u7078\u7079\u707a\u707b\u707c\u707d\u707e\u707f\u7080\u7081\u7082\u7083\u7084\u7085\u7086\u7087\u7088\u7089\u708a\u708b\u708c\u708d\u708e\u708f\u7090\u7091\u7092\u7093\u7094\u7095\u7096\u7097\u7098\u7099\u709a\u709b\u709c\u709d\u709e\u709f\u70a0\u70a1\u70a2\u70a3\u70a4\u70a5\u70a6\u70a7\u70a8\u70a9\u70aa\u70ab\u70ac\u70ad\u70ae\u70af\u70b0\u70b1\u70b2\u70b3\u70b4\u70b5\u70b6\u70b7\u70b8\u70b9\u70ba\u70bb\u70bc\u70bd\u70be\u70bf\u70c0\u70c1\u70c2\u70c3\u70c4\u70c5\u70c6\u70c7\u70c8\u70c9\u70ca\u70cb\u70cc\u70cd\u70ce\u70cf\u70d0\u70d1\u70d2\u70d3\u70d4\u70d5\u70d6\u70d7\u70d8\u70d9\u70da\u70db\u70dc\u70dd\u70de\u70df\u70e0\u70e1\u70e2\u70e3\u70e4\u70e5\u70e6\u70e7\u70e8\u70e9\u70ea\u70eb\u70ec\u70ed\u70ee\u70ef\u70f0\u70f1\u70f2\u70f3\u70f4\u70f5\u70f6\u70f7\u70f8\u70f9\u70fa\u70fb\u70fc\u70fd\u70fe\u70ff\u7100\u7101\u7102\u7103\u7104\u7105\u7106\u7107\u7108\u7109\u710a\u710b\u710c\u710d\u710e\u710f\u7110\u7111\u7112\u7113\u7114\u7115\u7116\u7117\u7118\u7119\u711a\u711b\u711c\u711d\u711e\u711f\u7120\u7121\u7122\u7123\u7124\u7125\u7126\u7127\u7128\u7129\u712a\u712b\u712c\u712d\u712e\u712f\u7130\u7131\u7132\u7133\u7134\u7135\u7136\u7137\u7138\u7139\u713a\u713b\u713c\u713d\u713e\u713f\u7140\u7141\u7142\u7143\u7144\u7145\u7146\u7147\u7148\u7149\u714a\u714b\u714c\u714d\u714e\u714f\u7150\u7151\u7152\u7153\u7154\u7155\u7156\u7157\u7158\u7159\u715a\u715b\u715c\u715d\u715e\u715f\u7160\u7161\u7162\u7163\u7164\u7165\u7166\u7167\u7168\u7169\u716a\u716b\u716c\u716d\u716e\u716f\u7170\u7171\u7172\u7173\u7174\u7175\u7176\u7177\u7178\u7179\u717a\u717b\u717c\u717d\u717e\u717f\u7180\u7181\u7182\u7183\u7184\u7185\u7186\u7187\u7188\u7189\u718a\u718b\u718c\u718d\u718e\u718f\u7190\u7191\u7192\u7193\u7194\u7195\u7196\u7197\u7198\u7199\u719a\u719b\u719c\u719d\u719e\u719f\u71a0\u71a1\u71a2\u71a3\u71a4\u71a5\u71a6\u71a7\u71a8\u71a9\u71aa\u71ab\u71ac\u71ad\u71ae\u71af\u71b0\u71b1\u71b2\u71b3\u71b4\u71b5\u71b6\u71b7\u71b8\u71b9\u71ba\u71bb\u71bc\u71bd\u71be\u71bf\u71c0\u71c1\u71c2\u71c3\u71c4\u71c5\u71c6\u71c7\u71c8\u71c9\u71ca\u71cb\u71cc\u71cd\u71ce\u71cf\u71d0\u71d1\u71d2\u71d3\u71d4\u71d5\u71d6\u71d7\u71d8\u71d9\u71da\u71db\u71dc\u71dd\u71de\u71df\u71e0\u71e1\u71e2\u71e3\u71e4\u71e5\u71e6\u71e7\u71e8\u71e9\u71ea\u71eb\u71ec\u71ed\u71ee\u71ef\u71f0\u71f1\u71f2\u71f3\u71f4\u71f5\u71f6\u71f7\u71f8\u71f9\u71fa\u71fb\u71fc\u71fd\u71fe\u71ff\u7200\u7201\u7202\u7203\u7204\u7205\u7206\u7207\u7208\u7209\u720a\u720b\u720c\u720d\u720e\u720f\u7210\u7211\u7212\u7213\u7214\u7215\u7216\u7217\u7218\u7219\u721a\u721b\u721c\u721d\u721e\u721f\u7220\u7221\u7222\u7223\u7224\u7225\u7226\u7227\u7228\u7229\u722a\u722b\u722c\u722d\u722e\u722f\u7230\u7231\u7232\u7233\u7234\u7235\u7236\u7237\u7238\u7239\u723a\u723b\u723c\u723d\u723e\u723f\u7240\u7241\u7242\u7243\u7244\u7245\u7246\u7247\u7248\u7249\u724a\u724b\u724c\u724d\u724e\u724f\u7250\u7251\u7252\u7253\u7254\u7255\u7256\u7257\u7258\u7259\u725a\u725b\u725c\u725d\u725e\u725f\u7260\u7261\u7262\u7263\u7264\u7265\u7266\u7267\u7268\u7269\u726a\u726b\u726c\u726d\u726e\u726f\u7270\u7271\u7272\u7273\u7274\u7275\u7276\u7277\u7278\u7279\u727a\u727b\u727c\u727d\u727e\u727f\u7280\u7281\u7282\u7283\u7284\u7285\u7286\u7287\u7288\u7289\u728a\u728b\u728c\u728d\u728e\u728f\u7290\u7291\u7292\u7293\u7294\u7295\u7296\u7297\u7298\u7299\u729a\u729b\u729c\u729d\u729e\u729f\u72a0\u72a1\u72a2\u72a3\u72a4\u72a5\u72a6\u72a7\u72a8\u72a9\u72aa\u72ab\u72ac\u72ad\u72ae\u72af\u72b0\u72b1\u72b2\u72b3\u72b4\u72b5\u72b6\u72b7\u72b8\u72b9\u72ba\u72bb\u72bc\u72bd\u72be\u72bf\u72c0\u72c1\u72c2\u72c3\u72c4\u72c5\u72c6\u72c7\u72c8\u72c9\u72ca\u72cb\u72cc\u72cd\u72ce\u72cf\u72d0\u72d1\u72d2\u72d3\u72d4\u72d5\u72d6\u72d7\u72d8\u72d9\u72da\u72db\u72dc\u72dd\u72de\u72df\u72e0\u72e1\u72e2\u72e3\u72e4\u72e5\u72e6\u72e7\u72e8\u72e9\u72ea\u72eb\u72ec\u72ed\u72ee\u72ef\u72f0\u72f1\u72f2\u72f3\u72f4\u72f5\u72f6\u72f7\u72f8\u72f9\u72fa\u72fb\u72fc\u72fd\u72fe\u72ff\u7300\u7301\u7302\u7303\u7304\u7305\u7306\u7307\u7308\u7309\u730a\u730b\u730c\u730d\u730e\u730f\u7310\u7311\u7312\u7313\u7314\u7315\u7316\u7317\u7318\u7319\u731a\u731b\u731c\u731d\u731e\u731f\u7320\u7321\u7322\u7323\u7324\u7325\u7326\u7327\u7328\u7329\u732a\u732b\u732c\u732d\u732e\u732f\u7330\u7331\u7332\u7333\u7334\u7335\u7336\u7337\u7338\u7339\u733a\u733b\u733c\u733d\u733e\u733f\u7340\u7341\u7342\u7343\u7344\u7345\u7346\u7347\u7348\u7349\u734a\u734b\u734c\u734d\u734e\u734f\u7350\u7351\u7352\u7353\u7354\u7355\u7356\u7357\u7358\u7359\u735a\u735b\u735c\u735d\u735e\u735f\u7360\u7361\u7362\u7363\u7364\u7365\u7366\u7367\u7368\u7369\u736a\u736b\u736c\u736d\u736e\u736f\u7370\u7371\u7372\u7373\u7374\u7375\u7376\u7377\u7378\u7379\u737a\u737b\u737c\u737d\u737e\u737f\u7380\u7381\u7382\u7383\u7384\u7385\u7386\u7387\u7388\u7389\u738a\u738b\u738c\u738d\u738e\u738f\u7390\u7391\u7392\u7393\u7394\u7395\u7396\u7397\u7398\u7399\u739a\u739b\u739c\u739d\u739e\u739f\u73a0\u73a1\u73a2\u73a3\u73a4\u73a5\u73a6\u73a7\u73a8\u73a9\u73aa\u73ab\u73ac\u73ad\u73ae\u73af\u73b0\u73b1\u73b2\u73b3\u73b4\u73b5\u73b6\u73b7\u73b8\u73b9\u73ba\u73bb\u73bc\u73bd\u73be\u73bf\u73c0\u73c1\u73c2\u73c3\u73c4\u73c5\u73c6\u73c7\u73c8\u73c9\u73ca\u73cb\u73cc\u73cd\u73ce\u73cf\u73d0\u73d1\u73d2\u73d3\u73d4\u73d5\u73d6\u73d7\u73d8\u73d9\u73da\u73db\u73dc\u73dd\u73de\u73df\u73e0\u73e1\u73e2\u73e3\u73e4\u73e5\u73e6\u73e7\u73e8\u73e9\u73ea\u73eb\u73ec\u73ed\u73ee\u73ef\u73f0\u73f1\u73f2\u73f3\u73f4\u73f5\u73f6\u73f7\u73f8\u73f9\u73fa\u73fb\u73fc\u73fd\u73fe\u73ff\u7400\u7401\u7402\u7403\u7404\u7405\u7406\u7407\u7408\u7409\u740a\u740b\u740c\u740d\u740e\u740f\u7410\u7411\u7412\u7413\u7414\u7415\u7416\u7417\u7418\u7419\u741a\u741b\u741c\u741d\u741e\u741f\u7420\u7421\u7422\u7423\u7424\u7425\u7426\u7427\u7428\u7429\u742a\u742b\u742c\u742d\u742e\u742f\u7430\u7431\u7432\u7433\u7434\u7435\u7436\u7437\u7438\u7439\u743a\u743b\u743c\u743d\u743e\u743f\u7440\u7441\u7442\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744a\u744b\u744c\u744d\u744e\u744f\u7450\u7451\u7452\u7453\u7454\u7455\u7456\u7457\u7458\u7459\u745a\u745b\u745c\u745d\u745e\u745f\u7460\u7461\u7462\u7463\u7464\u7465\u7466\u7467\u7468\u7469\u746a\u746b\u746c\u746d\u746e\u746f\u7470\u7471\u7472\u7473\u7474\u7475\u7476\u7477\u7478\u7479\u747a\u747b\u747c\u747d\u747e\u747f\u7480\u7481\u7482\u7483\u7484\u7485\u7486\u7487\u7488\u7489\u748a\u748b\u748c\u748d\u748e\u748f\u7490\u7491\u7492\u7493\u7494\u7495\u7496\u7497\u7498\u7499\u749a\u749b\u749c\u749d\u749e\u749f\u74a0\u74a1\u74a2\u74a3\u74a4\u74a5\u74a6\u74a7\u74a8\u74a9\u74aa\u74ab\u74ac\u74ad\u74ae\u74af\u74b0\u74b1\u74b2\u74b3\u74b4\u74b5\u74b6\u74b7\u74b8\u74b9\u74ba\u74bb\u74bc\u74bd\u74be\u74bf\u74c0\u74c1\u74c2\u74c3\u74c4\u74c5\u74c6\u74c7\u74c8\u74c9\u74ca\u74cb\u74cc\u74cd\u74ce\u74cf\u74d0\u74d1\u74d2\u74d3\u74d4\u74d5\u74d6\u74d7\u74d8\u74d9\u74da\u74db\u74dc\u74dd\u74de\u74df\u74e0\u74e1\u74e2\u74e3\u74e4\u74e5\u74e6\u74e7\u74e8\u74e9\u74ea\u74eb\u74ec\u74ed\u74ee\u74ef\u74f0\u74f1\u74f2\u74f3\u74f4\u74f5\u74f6\u74f7\u74f8\u74f9\u74fa\u74fb\u74fc\u74fd\u74fe\u74ff\u7500\u7501\u7502\u7503\u7504\u7505\u7506\u7507\u7508\u7509\u750a\u750b\u750c\u750d\u750e\u750f\u7510\u7511\u7512\u7513\u7514\u7515\u7516\u7517\u7518\u7519\u751a\u751b\u751c\u751d\u751e\u751f\u7520\u7521\u7522\u7523\u7524\u7525\u7526\u7527\u7528\u7529\u752a\u752b\u752c\u752d\u752e\u752f\u7530\u7531\u7532\u7533\u7534\u7535\u7536\u7537\u7538\u7539\u753a\u753b\u753c\u753d\u753e\u753f\u7540\u7541\u7542\u7543\u7544\u7545\u7546\u7547\u7548\u7549\u754a\u754b\u754c\u754d\u754e\u754f\u7550\u7551\u7552\u7553\u7554\u7555\u7556\u7557\u7558\u7559\u755a\u755b\u755c\u755d\u755e\u755f\u7560\u7561\u7562\u7563\u7564\u7565\u7566\u7567\u7568\u7569\u756a\u756b\u756c\u756d\u756e\u756f\u7570\u7571\u7572\u7573\u7574\u7575\u7576\u7577\u7578\u7579\u757a\u757b\u757c\u757d\u757e\u757f\u7580\u7581\u7582\u7583\u7584\u7585\u7586\u7587\u7588\u7589\u758a\u758b\u758c\u758d\u758e\u758f\u7590\u7591\u7592\u7593\u7594\u7595\u7596\u7597\u7598\u7599\u759a\u759b\u759c\u759d\u759e\u759f\u75a0\u75a1\u75a2\u75a3\u75a4\u75a5\u75a6\u75a7\u75a8\u75a9\u75aa\u75ab\u75ac\u75ad\u75ae\u75af\u75b0\u75b1\u75b2\u75b3\u75b4\u75b5\u75b6\u75b7\u75b8\u75b9\u75ba\u75bb\u75bc\u75bd\u75be\u75bf\u75c0\u75c1\u75c2\u75c3\u75c4\u75c5\u75c6\u75c7\u75c8\u75c9\u75ca\u75cb\u75cc\u75cd\u75ce\u75cf\u75d0\u75d1\u75d2\u75d3\u75d4\u75d5\u75d6\u75d7\u75d8\u75d9\u75da\u75db\u75dc\u75dd\u75de\u75df\u75e0\u75e1\u75e2\u75e3\u75e4\u75e5\u75e6\u75e7\u75e8\u75e9\u75ea\u75eb\u75ec\u75ed\u75ee\u75ef\u75f0\u75f1\u75f2\u75f3\u75f4\u75f5\u75f6\u75f7\u75f8\u75f9\u75fa\u75fb\u75fc\u75fd\u75fe\u75ff\u7600\u7601\u7602\u7603\u7604\u7605\u7606\u7607\u7608\u7609\u760a\u760b\u760c\u760d\u760e\u760f\u7610\u7611\u7612\u7613\u7614\u7615\u7616\u7617\u7618\u7619\u761a\u761b\u761c\u761d\u761e\u761f\u7620\u7621\u7622\u7623\u7624\u7625\u7626\u7627\u7628\u7629\u762a\u762b\u762c\u762d\u762e\u762f\u7630\u7631\u7632\u7633\u7634\u7635\u7636\u7637\u7638\u7639\u763a\u763b\u763c\u763d\u763e\u763f\u7640\u7641\u7642\u7643\u7644\u7645\u7646\u7647\u7648\u7649\u764a\u764b\u764c\u764d\u764e\u764f\u7650\u7651\u7652\u7653\u7654\u7655\u7656\u7657\u7658\u7659\u765a\u765b\u765c\u765d\u765e\u765f\u7660\u7661\u7662\u7663\u7664\u7665\u7666\u7667\u7668\u7669\u766a\u766b\u766c\u766d\u766e\u766f\u7670\u7671\u7672\u7673\u7674\u7675\u7676\u7677\u7678\u7679\u767a\u767b\u767c\u767d\u767e\u767f\u7680\u7681\u7682\u7683\u7684\u7685\u7686\u7687\u7688\u7689\u768a\u768b\u768c\u768d\u768e\u768f\u7690\u7691\u7692\u7693\u7694\u7695\u7696\u7697\u7698\u7699\u769a\u769b\u769c\u769d\u769e\u769f\u76a0\u76a1\u76a2\u76a3\u76a4\u76a5\u76a6\u76a7\u76a8\u76a9\u76aa\u76ab\u76ac\u76ad\u76ae\u76af\u76b0\u76b1\u76b2\u76b3\u76b4\u76b5\u76b6\u76b7\u76b8\u76b9\u76ba\u76bb\u76bc\u76bd\u76be\u76bf\u76c0\u76c1\u76c2\u76c3\u76c4\u76c5\u76c6\u76c7\u76c8\u76c9\u76ca\u76cb\u76cc\u76cd\u76ce\u76cf\u76d0\u76d1\u76d2\u76d3\u76d4\u76d5\u76d6\u76d7\u76d8\u76d9\u76da\u76db\u76dc\u76dd\u76de\u76df\u76e0\u76e1\u76e2\u76e3\u76e4\u76e5\u76e6\u76e7\u76e8\u76e9\u76ea\u76eb\u76ec\u76ed\u76ee\u76ef\u76f0\u76f1\u76f2\u76f3\u76f4\u76f5\u76f6\u76f7\u76f8\u76f9\u76fa\u76fb\u76fc\u76fd\u76fe\u76ff\u7700\u7701\u7702\u7703\u7704\u7705\u7706\u7707\u7708\u7709\u770a\u770b\u770c\u770d\u770e\u770f\u7710\u7711\u7712\u7713\u7714\u7715\u7716\u7717\u7718\u7719\u771a\u771b\u771c\u771d\u771e\u771f\u7720\u7721\u7722\u7723\u7724\u7725\u7726\u7727\u7728\u7729\u772a\u772b\u772c\u772d\u772e\u772f\u7730\u7731\u7732\u7733\u7734\u7735\u7736\u7737\u7738\u7739\u773a\u773b\u773c\u773d\u773e\u773f\u7740\u7741\u7742\u7743\u7744\u7745\u7746\u7747\u7748\u7749\u774a\u774b\u774c\u774d\u774e\u774f\u7750\u7751\u7752\u7753\u7754\u7755\u7756\u7757\u7758\u7759\u775a\u775b\u775c\u775d\u775e\u775f\u7760\u7761\u7762\u7763\u7764\u7765\u7766\u7767\u7768\u7769\u776a\u776b\u776c\u776d\u776e\u776f\u7770\u7771\u7772\u7773\u7774\u7775\u7776\u7777\u7778\u7779\u777a\u777b\u777c\u777d\u777e\u777f\u7780\u7781\u7782\u7783\u7784\u7785\u7786\u7787\u7788\u7789\u778a\u778b\u778c\u778d\u778e\u778f\u7790\u7791\u7792\u7793\u7794\u7795\u7796\u7797\u7798\u7799\u779a\u779b\u779c\u779d\u779e\u779f\u77a0\u77a1\u77a2\u77a3\u77a4\u77a5\u77a6\u77a7\u77a8\u77a9\u77aa\u77ab\u77ac\u77ad\u77ae\u77af\u77b0\u77b1\u77b2\u77b3\u77b4\u77b5\u77b6\u77b7\u77b8\u77b9\u77ba\u77bb\u77bc\u77bd\u77be\u77bf\u77c0\u77c1\u77c2\u77c3\u77c4\u77c5\u77c6\u77c7\u77c8\u77c9\u77ca\u77cb\u77cc\u77cd\u77ce\u77cf\u77d0\u77d1\u77d2\u77d3\u77d4\u77d5\u77d6\u77d7\u77d8\u77d9\u77da\u77db\u77dc\u77dd\u77de\u77df\u77e0\u77e1\u77e2\u77e3\u77e4\u77e5\u77e6\u77e7\u77e8\u77e9\u77ea\u77eb\u77ec\u77ed\u77ee\u77ef\u77f0\u77f1\u77f2\u77f3\u77f4\u77f5\u77f6\u77f7\u77f8\u77f9\u77fa\u77fb\u77fc\u77fd\u77fe\u77ff\u7800\u7801\u7802\u7803\u7804\u7805\u7806\u7807\u7808\u7809\u780a\u780b\u780c\u780d\u780e\u780f\u7810\u7811\u7812\u7813\u7814\u7815\u7816\u7817\u7818\u7819\u781a\u781b\u781c\u781d\u781e\u781f\u7820\u7821\u7822\u7823\u7824\u7825\u7826\u7827\u7828\u7829\u782a\u782b\u782c\u782d\u782e\u782f\u7830\u7831\u7832\u7833\u7834\u7835\u7836\u7837\u7838\u7839\u783a\u783b\u783c\u783d\u783e\u783f\u7840\u7841\u7842\u7843\u7844\u7845\u7846\u7847\u7848\u7849\u784a\u784b\u784c\u784d\u784e\u784f\u7850\u7851\u7852\u7853\u7854\u7855\u7856\u7857\u7858\u7859\u785a\u785b\u785c\u785d\u785e\u785f\u7860\u7861\u7862\u7863\u7864\u7865\u7866\u7867\u7868\u7869\u786a\u786b\u786c\u786d\u786e\u786f\u7870\u7871\u7872\u7873\u7874\u7875\u7876\u7877\u7878\u7879\u787a\u787b\u787c\u787d\u787e\u787f\u7880\u7881\u7882\u7883\u7884\u7885\u7886\u7887\u7888\u7889\u788a\u788b\u788c\u788d\u788e\u788f\u7890\u7891\u7892\u7893\u7894\u7895\u7896\u7897\u7898\u7899\u789a\u789b\u789c\u789d\u789e\u789f\u78a0\u78a1\u78a2\u78a3\u78a4\u78a5\u78a6\u78a7\u78a8\u78a9\u78aa\u78ab\u78ac\u78ad\u78ae\u78af\u78b0\u78b1\u78b2\u78b3\u78b4\u78b5\u78b6\u78b7\u78b8\u78b9\u78ba\u78bb\u78bc\u78bd\u78be\u78bf\u78c0\u78c1\u78c2\u78c3\u78c4\u78c5\u78c6\u78c7\u78c8\u78c9\u78ca\u78cb\u78cc\u78cd\u78ce\u78cf\u78d0\u78d1\u78d2\u78d3\u78d4\u78d5\u78d6\u78d7\u78d8\u78d9\u78da\u78db\u78dc\u78dd\u78de\u78df\u78e0\u78e1\u78e2\u78e3\u78e4\u78e5\u78e6\u78e7\u78e8\u78e9\u78ea\u78eb\u78ec\u78ed\u78ee\u78ef\u78f0\u78f1\u78f2\u78f3\u78f4\u78f5\u78f6\u78f7\u78f8\u78f9\u78fa\u78fb\u78fc\u78fd\u78fe\u78ff\u7900\u7901\u7902\u7903\u7904\u7905\u7906\u7907\u7908\u7909\u790a\u790b\u790c\u790d\u790e\u790f\u7910\u7911\u7912\u7913\u7914\u7915\u7916\u7917\u7918\u7919\u791a\u791b\u791c\u791d\u791e\u791f\u7920\u7921\u7922\u7923\u7924\u7925\u7926\u7927\u7928\u7929\u792a\u792b\u792c\u792d\u792e\u792f\u7930\u7931\u7932\u7933\u7934\u7935\u7936\u7937\u7938\u7939\u793a\u793b\u793c\u793d\u793e\u793f\u7940\u7941\u7942\u7943\u7944\u7945\u7946\u7947\u7948\u7949\u794a\u794b\u794c\u794d\u794e\u794f\u7950\u7951\u7952\u7953\u7954\u7955\u7956\u7957\u7958\u7959\u795a\u795b\u795c\u795d\u795e\u795f\u7960\u7961\u7962\u7963\u7964\u7965\u7966\u7967\u7968\u7969\u796a\u796b\u796c\u796d\u796e\u796f\u7970\u7971\u7972\u7973\u7974\u7975\u7976\u7977\u7978\u7979\u797a\u797b\u797c\u797d\u797e\u797f\u7980\u7981\u7982\u7983\u7984\u7985\u7986\u7987\u7988\u7989\u798a\u798b\u798c\u798d\u798e\u798f\u7990\u7991\u7992\u7993\u7994\u7995\u7996\u7997\u7998\u7999\u799a\u799b\u799c\u799d\u799e\u799f\u79a0\u79a1\u79a2\u79a3\u79a4\u79a5\u79a6\u79a7\u79a8\u79a9\u79aa\u79ab\u79ac\u79ad\u79ae\u79af\u79b0\u79b1\u79b2\u79b3\u79b4\u79b5\u79b6\u79b7\u79b8\u79b9\u79ba\u79bb\u79bc\u79bd\u79be\u79bf\u79c0\u79c1\u79c2\u79c3\u79c4\u79c5\u79c6\u79c7\u79c8\u79c9\u79ca\u79cb\u79cc\u79cd\u79ce\u79cf\u79d0\u79d1\u79d2\u79d3\u79d4\u79d5\u79d6\u79d7\u79d8\u79d9\u79da\u79db\u79dc\u79dd\u79de\u79df\u79e0\u79e1\u79e2\u79e3\u79e4\u79e5\u79e6\u79e7\u79e8\u79e9\u79ea\u79eb\u79ec\u79ed\u79ee\u79ef\u79f0\u79f1\u79f2\u79f3\u79f4\u79f5\u79f6\u79f7\u79f8\u79f9\u79fa\u79fb\u79fc\u79fd\u79fe\u79ff\u7a00\u7a01\u7a02\u7a03\u7a04\u7a05\u7a06\u7a07\u7a08\u7a09\u7a0a\u7a0b\u7a0c\u7a0d\u7a0e\u7a0f\u7a10\u7a11\u7a12\u7a13\u7a14\u7a15\u7a16\u7a17\u7a18\u7a19\u7a1a\u7a1b\u7a1c\u7a1d\u7a1e\u7a1f\u7a20\u7a21\u7a22\u7a23\u7a24\u7a25\u7a26\u7a27\u7a28\u7a29\u7a2a\u7a2b\u7a2c\u7a2d\u7a2e\u7a2f\u7a30\u7a31\u7a32\u7a33\u7a34\u7a35\u7a36\u7a37\u7a38\u7a39\u7a3a\u7a3b\u7a3c\u7a3d\u7a3e\u7a3f\u7a40\u7a41\u7a42\u7a43\u7a44\u7a45\u7a46\u7a47\u7a48\u7a49\u7a4a\u7a4b\u7a4c\u7a4d\u7a4e\u7a4f\u7a50\u7a51\u7a52\u7a53\u7a54\u7a55\u7a56\u7a57\u7a58\u7a59\u7a5a\u7a5b\u7a5c\u7a5d\u7a5e\u7a5f\u7a60\u7a61\u7a62\u7a63\u7a64\u7a65\u7a66\u7a67\u7a68\u7a69\u7a6a\u7a6b\u7a6c\u7a6d\u7a6e\u7a6f\u7a70\u7a71\u7a72\u7a73\u7a74\u7a75\u7a76\u7a77\u7a78\u7a79\u7a7a\u7a7b\u7a7c\u7a7d\u7a7e\u7a7f\u7a80\u7a81\u7a82\u7a83\u7a84\u7a85\u7a86\u7a87\u7a88\u7a89\u7a8a\u7a8b\u7a8c\u7a8d\u7a8e\u7a8f\u7a90\u7a91\u7a92\u7a93\u7a94\u7a95\u7a96\u7a97\u7a98\u7a99\u7a9a\u7a9b\u7a9c\u7a9d\u7a9e\u7a9f\u7aa0\u7aa1\u7aa2\u7aa3\u7aa4\u7aa5\u7aa6\u7aa7\u7aa8\u7aa9\u7aaa\u7aab\u7aac\u7aad\u7aae\u7aaf\u7ab0\u7ab1\u7ab2\u7ab3\u7ab4\u7ab5\u7ab6\u7ab7\u7ab8\u7ab9\u7aba\u7abb\u7abc\u7abd\u7abe\u7abf\u7ac0\u7ac1\u7ac2\u7ac3\u7ac4\u7ac5\u7ac6\u7ac7\u7ac8\u7ac9\u7aca\u7acb\u7acc\u7acd\u7ace\u7acf\u7ad0\u7ad1\u7ad2\u7ad3\u7ad4\u7ad5\u7ad6\u7ad7\u7ad8\u7ad9\u7ada\u7adb\u7adc\u7add\u7ade\u7adf\u7ae0\u7ae1\u7ae2\u7ae3\u7ae4\u7ae5\u7ae6\u7ae7\u7ae8\u7ae9\u7aea\u7aeb\u7aec\u7aed\u7aee\u7aef\u7af0\u7af1\u7af2\u7af3\u7af4\u7af5\u7af6\u7af7\u7af8\u7af9\u7afa\u7afb\u7afc\u7afd\u7afe\u7aff\u7b00\u7b01\u7b02\u7b03\u7b04\u7b05\u7b06\u7b07\u7b08\u7b09\u7b0a\u7b0b\u7b0c\u7b0d\u7b0e\u7b0f\u7b10\u7b11\u7b12\u7b13\u7b14\u7b15\u7b16\u7b17\u7b18\u7b19\u7b1a\u7b1b\u7b1c\u7b1d\u7b1e\u7b1f\u7b20\u7b21\u7b22\u7b23\u7b24\u7b25\u7b26\u7b27\u7b28\u7b29\u7b2a\u7b2b\u7b2c\u7b2d\u7b2e\u7b2f\u7b30\u7b31\u7b32\u7b33\u7b34\u7b35\u7b36\u7b37\u7b38\u7b39\u7b3a\u7b3b\u7b3c\u7b3d\u7b3e\u7b3f\u7b40\u7b41\u7b42\u7b43\u7b44\u7b45\u7b46\u7b47\u7b48\u7b49\u7b4a\u7b4b\u7b4c\u7b4d\u7b4e\u7b4f\u7b50\u7b51\u7b52\u7b53\u7b54\u7b55\u7b56\u7b57\u7b58\u7b59\u7b5a\u7b5b\u7b5c\u7b5d\u7b5e\u7b5f\u7b60\u7b61\u7b62\u7b63\u7b64\u7b65\u7b66\u7b67\u7b68\u7b69\u7b6a\u7b6b\u7b6c\u7b6d\u7b6e\u7b6f\u7b70\u7b71\u7b72\u7b73\u7b74\u7b75\u7b76\u7b77\u7b78\u7b79\u7b7a\u7b7b\u7b7c\u7b7d\u7b7e\u7b7f\u7b80\u7b81\u7b82\u7b83\u7b84\u7b85\u7b86\u7b87\u7b88\u7b89\u7b8a\u7b8b\u7b8c\u7b8d\u7b8e\u7b8f\u7b90\u7b91\u7b92\u7b93\u7b94\u7b95\u7b96\u7b97\u7b98\u7b99\u7b9a\u7b9b\u7b9c\u7b9d\u7b9e\u7b9f\u7ba0\u7ba1\u7ba2\u7ba3\u7ba4\u7ba5\u7ba6\u7ba7\u7ba8\u7ba9\u7baa\u7bab\u7bac\u7bad\u7bae\u7baf\u7bb0\u7bb1\u7bb2\u7bb3\u7bb4\u7bb5\u7bb6\u7bb7\u7bb8\u7bb9\u7bba\u7bbb\u7bbc\u7bbd\u7bbe\u7bbf\u7bc0\u7bc1\u7bc2\u7bc3\u7bc4\u7bc5\u7bc6\u7bc7\u7bc8\u7bc9\u7bca\u7bcb\u7bcc\u7bcd\u7bce\u7bcf\u7bd0\u7bd1\u7bd2\u7bd3\u7bd4\u7bd5\u7bd6\u7bd7\u7bd8\u7bd9\u7bda\u7bdb\u7bdc\u7bdd\u7bde\u7bdf\u7be0\u7be1\u7be2\u7be3\u7be4\u7be5\u7be6\u7be7\u7be8\u7be9\u7bea\u7beb\u7bec\u7bed\u7bee\u7bef\u7bf0\u7bf1\u7bf2\u7bf3\u7bf4\u7bf5\u7bf6\u7bf7\u7bf8\u7bf9\u7bfa\u7bfb\u7bfc\u7bfd\u7bfe\u7bff\u7c00\u7c01\u7c02\u7c03\u7c04\u7c05\u7c06\u7c07\u7c08\u7c09\u7c0a\u7c0b\u7c0c\u7c0d\u7c0e\u7c0f\u7c10\u7c11\u7c12\u7c13\u7c14\u7c15\u7c16\u7c17\u7c18\u7c19\u7c1a\u7c1b\u7c1c\u7c1d\u7c1e\u7c1f\u7c20\u7c21\u7c22\u7c23\u7c24\u7c25\u7c26\u7c27\u7c28\u7c29\u7c2a\u7c2b\u7c2c\u7c2d\u7c2e\u7c2f\u7c30\u7c31\u7c32\u7c33\u7c34\u7c35\u7c36\u7c37\u7c38\u7c39\u7c3a\u7c3b\u7c3c\u7c3d\u7c3e\u7c3f\u7c40\u7c41\u7c42\u7c43\u7c44\u7c45\u7c46\u7c47\u7c48\u7c49\u7c4a\u7c4b\u7c4c\u7c4d\u7c4e\u7c4f\u7c50\u7c51\u7c52\u7c53\u7c54\u7c55\u7c56\u7c57\u7c58\u7c59\u7c5a\u7c5b\u7c5c\u7c5d\u7c5e\u7c5f\u7c60\u7c61\u7c62\u7c63\u7c64\u7c65\u7c66\u7c67\u7c68\u7c69\u7c6a\u7c6b\u7c6c\u7c6d\u7c6e\u7c6f\u7c70\u7c71\u7c72\u7c73\u7c74\u7c75\u7c76\u7c77\u7c78\u7c79\u7c7a\u7c7b\u7c7c\u7c7d\u7c7e\u7c7f\u7c80\u7c81\u7c82\u7c83\u7c84\u7c85\u7c86\u7c87\u7c88\u7c89\u7c8a\u7c8b\u7c8c\u7c8d\u7c8e\u7c8f\u7c90\u7c91\u7c92\u7c93\u7c94\u7c95\u7c96\u7c97\u7c98\u7c99\u7c9a\u7c9b\u7c9c\u7c9d\u7c9e\u7c9f\u7ca0\u7ca1\u7ca2\u7ca3\u7ca4\u7ca5\u7ca6\u7ca7\u7ca8\u7ca9\u7caa\u7cab\u7cac\u7cad\u7cae\u7caf\u7cb0\u7cb1\u7cb2\u7cb3\u7cb4\u7cb5\u7cb6\u7cb7\u7cb8\u7cb9\u7cba\u7cbb\u7cbc\u7cbd\u7cbe\u7cbf\u7cc0\u7cc1\u7cc2\u7cc3\u7cc4\u7cc5\u7cc6\u7cc7\u7cc8\u7cc9\u7cca\u7ccb\u7ccc\u7ccd\u7cce\u7ccf\u7cd0\u7cd1\u7cd2\u7cd3\u7cd4\u7cd5\u7cd6\u7cd7\u7cd8\u7cd9\u7cda\u7cdb\u7cdc\u7cdd\u7cde\u7cdf\u7ce0\u7ce1\u7ce2\u7ce3\u7ce4\u7ce5\u7ce6\u7ce7\u7ce8\u7ce9\u7cea\u7ceb\u7cec\u7ced\u7cee\u7cef\u7cf0\u7cf1\u7cf2\u7cf3\u7cf4\u7cf5\u7cf6\u7cf7\u7cf8\u7cf9\u7cfa\u7cfb\u7cfc\u7cfd\u7cfe\u7cff\u7d00\u7d01\u7d02\u7d03\u7d04\u7d05\u7d06\u7d07\u7d08\u7d09\u7d0a\u7d0b\u7d0c\u7d0d\u7d0e\u7d0f\u7d10\u7d11\u7d12\u7d13\u7d14\u7d15\u7d16\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d\u7d1e\u7d1f\u7d20\u7d21\u7d22\u7d23\u7d24\u7d25\u7d26\u7d27\u7d28\u7d29\u7d2a\u7d2b\u7d2c\u7d2d\u7d2e\u7d2f\u7d30\u7d31\u7d32\u7d33\u7d34\u7d35\u7d36\u7d37\u7d38\u7d39\u7d3a\u7d3b\u7d3c\u7d3d\u7d3e\u7d3f\u7d40\u7d41\u7d42\u7d43\u7d44\u7d45\u7d46\u7d47\u7d48\u7d49\u7d4a\u7d4b\u7d4c\u7d4d\u7d4e\u7d4f\u7d50\u7d51\u7d52\u7d53\u7d54\u7d55\u7d56\u7d57\u7d58\u7d59\u7d5a\u7d5b\u7d5c\u7d5d\u7d5e\u7d5f\u7d60\u7d61\u7d62\u7d63\u7d64\u7d65\u7d66\u7d67\u7d68\u7d69\u7d6a\u7d6b\u7d6c\u7d6d\u7d6e\u7d6f\u7d70\u7d71\u7d72\u7d73\u7d74\u7d75\u7d76\u7d77\u7d78\u7d79\u7d7a\u7d7b\u7d7c\u7d7d\u7d7e\u7d7f\u7d80\u7d81\u7d82\u7d83\u7d84\u7d85\u7d86\u7d87\u7d88\u7d89\u7d8a\u7d8b\u7d8c\u7d8d\u7d8e\u7d8f\u7d90\u7d91\u7d92\u7d93\u7d94\u7d95\u7d96\u7d97\u7d98\u7d99\u7d9a\u7d9b\u7d9c\u7d9d\u7d9e\u7d9f\u7da0\u7da1\u7da2\u7da3\u7da4\u7da5\u7da6\u7da7\u7da8\u7da9\u7daa\u7dab\u7dac\u7dad\u7dae\u7daf\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db6\u7db7\u7db8\u7db9\u7dba\u7dbb\u7dbc\u7dbd\u7dbe\u7dbf\u7dc0\u7dc1\u7dc2\u7dc3\u7dc4\u7dc5\u7dc6\u7dc7\u7dc8\u7dc9\u7dca\u7dcb\u7dcc\u7dcd\u7dce\u7dcf\u7dd0\u7dd1\u7dd2\u7dd3\u7dd4\u7dd5\u7dd6\u7dd7\u7dd8\u7dd9\u7dda\u7ddb\u7ddc\u7ddd\u7dde\u7ddf\u7de0\u7de1\u7de2\u7de3\u7de4\u7de5\u7de6\u7de7\u7de8\u7de9\u7dea\u7deb\u7dec\u7ded\u7dee\u7def\u7df0\u7df1\u7df2\u7df3\u7df4\u7df5\u7df6\u7df7\u7df8\u7df9\u7dfa\u7dfb\u7dfc\u7dfd\u7dfe\u7dff\u7e00\u7e01\u7e02\u7e03\u7e04\u7e05\u7e06\u7e07\u7e08\u7e09\u7e0a\u7e0b\u7e0c\u7e0d\u7e0e\u7e0f\u7e10\u7e11\u7e12\u7e13\u7e14\u7e15\u7e16\u7e17\u7e18\u7e19\u7e1a\u7e1b\u7e1c\u7e1d\u7e1e\u7e1f\u7e20\u7e21\u7e22\u7e23\u7e24\u7e25\u7e26\u7e27\u7e28\u7e29\u7e2a\u7e2b\u7e2c\u7e2d\u7e2e\u7e2f\u7e30\u7e31\u7e32\u7e33\u7e34\u7e35\u7e36\u7e37\u7e38\u7e39\u7e3a\u7e3b\u7e3c\u7e3d\u7e3e\u7e3f\u7e40\u7e41\u7e42\u7e43\u7e44\u7e45\u7e46\u7e47\u7e48\u7e49\u7e4a\u7e4b\u7e4c\u7e4d\u7e4e\u7e4f\u7e50\u7e51\u7e52\u7e53\u7e54\u7e55\u7e56\u7e57\u7e58\u7e59\u7e5a\u7e5b\u7e5c\u7e5d\u7e5e\u7e5f\u7e60\u7e61\u7e62\u7e63\u7e64\u7e65\u7e66\u7e67\u7e68\u7e69\u7e6a\u7e6b\u7e6c\u7e6d\u7e6e\u7e6f\u7e70\u7e71\u7e72\u7e73\u7e74\u7e75\u7e76\u7e77\u7e78\u7e79\u7e7a\u7e7b\u7e7c\u7e7d\u7e7e\u7e7f\u7e80\u7e81\u7e82\u7e83\u7e84\u7e85\u7e86\u7e87\u7e88\u7e89\u7e8a\u7e8b\u7e8c\u7e8d\u7e8e\u7e8f\u7e90\u7e91\u7e92\u7e93\u7e94\u7e95\u7e96\u7e97\u7e98\u7e99\u7e9a\u7e9b\u7e9c\u7e9d\u7e9e\u7e9f\u7ea0\u7ea1\u7ea2\u7ea3\u7ea4\u7ea5\u7ea6\u7ea7\u7ea8\u7ea9\u7eaa\u7eab\u7eac\u7ead\u7eae\u7eaf\u7eb0\u7eb1\u7eb2\u7eb3\u7eb4\u7eb5\u7eb6\u7eb7\u7eb8\u7eb9\u7eba\u7ebb\u7ebc\u7ebd\u7ebe\u7ebf\u7ec0\u7ec1\u7ec2\u7ec3\u7ec4\u7ec5\u7ec6\u7ec7\u7ec8\u7ec9\u7eca\u7ecb\u7ecc\u7ecd\u7ece\u7ecf\u7ed0\u7ed1\u7ed2\u7ed3\u7ed4\u7ed5\u7ed6\u7ed7\u7ed8\u7ed9\u7eda\u7edb\u7edc\u7edd\u7ede\u7edf\u7ee0\u7ee1\u7ee2\u7ee3\u7ee4\u7ee5\u7ee6\u7ee7\u7ee8\u7ee9\u7eea\u7eeb\u7eec\u7eed\u7eee\u7eef\u7ef0\u7ef1\u7ef2\u7ef3\u7ef4\u7ef5\u7ef6\u7ef7\u7ef8\u7ef9\u7efa\u7efb\u7efc\u7efd\u7efe\u7eff\u7f00\u7f01\u7f02\u7f03\u7f04\u7f05\u7f06\u7f07\u7f08\u7f09\u7f0a\u7f0b\u7f0c\u7f0d\u7f0e\u7f0f\u7f10\u7f11\u7f12\u7f13\u7f14\u7f15\u7f16\u7f17\u7f18\u7f19\u7f1a\u7f1b\u7f1c\u7f1d\u7f1e\u7f1f\u7f20\u7f21\u7f22\u7f23\u7f24\u7f25\u7f26\u7f27\u7f28\u7f29\u7f2a\u7f2b\u7f2c\u7f2d\u7f2e\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f34\u7f35\u7f36\u7f37\u7f38\u7f39\u7f3a\u7f3b\u7f3c\u7f3d\u7f3e\u7f3f\u7f40\u7f41\u7f42\u7f43\u7f44\u7f45\u7f46\u7f47\u7f48\u7f49\u7f4a\u7f4b\u7f4c\u7f4d\u7f4e\u7f4f\u7f50\u7f51\u7f52\u7f53\u7f54\u7f55\u7f56\u7f57\u7f58\u7f59\u7f5a\u7f5b\u7f5c\u7f5d\u7f5e\u7f5f\u7f60\u7f61\u7f62\u7f63\u7f64\u7f65\u7f66\u7f67\u7f68\u7f69\u7f6a\u7f6b\u7f6c\u7f6d\u7f6e\u7f6f\u7f70\u7f71\u7f72\u7f73\u7f74\u7f75\u7f76\u7f77\u7f78\u7f79\u7f7a\u7f7b\u7f7c\u7f7d\u7f7e\u7f7f\u7f80\u7f81\u7f82\u7f83\u7f84\u7f85\u7f86\u7f87\u7f88\u7f89\u7f8a\u7f8b\u7f8c\u7f8d\u7f8e\u7f8f\u7f90\u7f91\u7f92\u7f93\u7f94\u7f95\u7f96\u7f97\u7f98\u7f99\u7f9a\u7f9b\u7f9c\u7f9d\u7f9e\u7f9f\u7fa0\u7fa1\u7fa2\u7fa3\u7fa4\u7fa5\u7fa6\u7fa7\u7fa8\u7fa9\u7faa\u7fab\u7fac\u7fad\u7fae\u7faf\u7fb0\u7fb1\u7fb2\u7fb3\u7fb4\u7fb5\u7fb6\u7fb7\u7fb8\u7fb9\u7fba\u7fbb\u7fbc\u7fbd\u7fbe\u7fbf\u7fc0\u7fc1\u7fc2\u7fc3\u7fc4\u7fc5\u7fc6\u7fc7\u7fc8\u7fc9\u7fca\u7fcb\u7fcc\u7fcd\u7fce\u7fcf\u7fd0\u7fd1\u7fd2\u7fd3\u7fd4\u7fd5\u7fd6\u7fd7\u7fd8\u7fd9\u7fda\u7fdb\u7fdc\u7fdd\u7fde\u7fdf\u7fe0\u7fe1\u7fe2\u7fe3\u7fe4\u7fe5\u7fe6\u7fe7\u7fe8\u7fe9\u7fea\u7feb\u7fec\u7fed\u7fee\u7fef\u7ff0\u7ff1\u7ff2\u7ff3\u7ff4\u7ff5\u7ff6\u7ff7\u7ff8\u7ff9\u7ffa\u7ffb\u7ffc\u7ffd\u7ffe\u7fff\u8000\u8001\u8002\u8003\u8004\u8005\u8006\u8007\u8008\u8009\u800a\u800b\u800c\u800d\u800e\u800f\u8010\u8011\u8012\u8013\u8014\u8015\u8016\u8017\u8018\u8019\u801a\u801b\u801c\u801d\u801e\u801f\u8020\u8021\u8022\u8023\u8024\u8025\u8026\u8027\u8028\u8029\u802a\u802b\u802c\u802d\u802e\u802f\u8030\u8031\u8032\u8033\u8034\u8035\u8036\u8037\u8038\u8039\u803a\u803b\u803c\u803d\u803e\u803f\u8040\u8041\u8042\u8043\u8044\u8045\u8046\u8047\u8048\u8049\u804a\u804b\u804c\u804d\u804e\u804f\u8050\u8051\u8052\u8053\u8054\u8055\u8056\u8057\u8058\u8059\u805a\u805b\u805c\u805d\u805e\u805f\u8060\u8061\u8062\u8063\u8064\u8065\u8066\u8067\u8068\u8069\u806a\u806b\u806c\u806d\u806e\u806f\u8070\u8071\u8072\u8073\u8074\u8075\u8076\u8077\u8078\u8079\u807a\u807b\u807c\u807d\u807e\u807f\u8080\u8081\u8082\u8083\u8084\u8085\u8086\u8087\u8088\u8089\u808a\u808b\u808c\u808d\u808e\u808f\u8090\u8091\u8092\u8093\u8094\u8095\u8096\u8097\u8098\u8099\u809a\u809b\u809c\u809d\u809e\u809f\u80a0\u80a1\u80a2\u80a3\u80a4\u80a5\u80a6\u80a7\u80a8\u80a9\u80aa\u80ab\u80ac\u80ad\u80ae\u80af\u80b0\u80b1\u80b2\u80b3\u80b4\u80b5\u80b6\u80b7\u80b8\u80b9\u80ba\u80bb\u80bc\u80bd\u80be\u80bf\u80c0\u80c1\u80c2\u80c3\u80c4\u80c5\u80c6\u80c7\u80c8\u80c9\u80ca\u80cb\u80cc\u80cd\u80ce\u80cf\u80d0\u80d1\u80d2\u80d3\u80d4\u80d5\u80d6\u80d7\u80d8\u80d9\u80da\u80db\u80dc\u80dd\u80de\u80df\u80e0\u80e1\u80e2\u80e3\u80e4\u80e5\u80e6\u80e7\u80e8\u80e9\u80ea\u80eb\u80ec\u80ed\u80ee\u80ef\u80f0\u80f1\u80f2\u80f3\u80f4\u80f5\u80f6\u80f7\u80f8\u80f9\u80fa\u80fb\u80fc\u80fd\u80fe\u80ff\u8100\u8101\u8102\u8103\u8104\u8105\u8106\u8107\u8108\u8109\u810a\u810b\u810c\u810d\u810e\u810f\u8110\u8111\u8112\u8113\u8114\u8115\u8116\u8117\u8118\u8119\u811a\u811b\u811c\u811d\u811e\u811f\u8120\u8121\u8122\u8123\u8124\u8125\u8126\u8127\u8128\u8129\u812a\u812b\u812c\u812d\u812e\u812f\u8130\u8131\u8132\u8133\u8134\u8135\u8136\u8137\u8138\u8139\u813a\u813b\u813c\u813d\u813e\u813f\u8140\u8141\u8142\u8143\u8144\u8145\u8146\u8147\u8148\u8149\u814a\u814b\u814c\u814d\u814e\u814f\u8150\u8151\u8152\u8153\u8154\u8155\u8156\u8157\u8158\u8159\u815a\u815b\u815c\u815d\u815e\u815f\u8160\u8161\u8162\u8163\u8164\u8165\u8166\u8167\u8168\u8169\u816a\u816b\u816c\u816d\u816e\u816f\u8170\u8171\u8172\u8173\u8174\u8175\u8176\u8177\u8178\u8179\u817a\u817b\u817c\u817d\u817e\u817f\u8180\u8181\u8182\u8183\u8184\u8185\u8186\u8187\u8188\u8189\u818a\u818b\u818c\u818d\u818e\u818f\u8190\u8191\u8192\u8193\u8194\u8195\u8196\u8197\u8198\u8199\u819a\u819b\u819c\u819d\u819e\u819f\u81a0\u81a1\u81a2\u81a3\u81a4\u81a5\u81a6\u81a7\u81a8\u81a9\u81aa\u81ab\u81ac\u81ad\u81ae\u81af\u81b0\u81b1\u81b2\u81b3\u81b4\u81b5\u81b6\u81b7\u81b8\u81b9\u81ba\u81bb\u81bc\u81bd\u81be\u81bf\u81c0\u81c1\u81c2\u81c3\u81c4\u81c5\u81c6\u81c7\u81c8\u81c9\u81ca\u81cb\u81cc\u81cd\u81ce\u81cf\u81d0\u81d1\u81d2\u81d3\u81d4\u81d5\u81d6\u81d7\u81d8\u81d9\u81da\u81db\u81dc\u81dd\u81de\u81df\u81e0\u81e1\u81e2\u81e3\u81e4\u81e5\u81e6\u81e7\u81e8\u81e9\u81ea\u81eb\u81ec\u81ed\u81ee\u81ef\u81f0\u81f1\u81f2\u81f3\u81f4\u81f5\u81f6\u81f7\u81f8\u81f9\u81fa\u81fb\u81fc\u81fd\u81fe\u81ff\u8200\u8201\u8202\u8203\u8204\u8205\u8206\u8207\u8208\u8209\u820a\u820b\u820c\u820d\u820e\u820f\u8210\u8211\u8212\u8213\u8214\u8215\u8216\u8217\u8218\u8219\u821a\u821b\u821c\u821d\u821e\u821f\u8220\u8221\u8222\u8223\u8224\u8225\u8226\u8227\u8228\u8229\u822a\u822b\u822c\u822d\u822e\u822f\u8230\u8231\u8232\u8233\u8234\u8235\u8236\u8237\u8238\u8239\u823a\u823b\u823c\u823d\u823e\u823f\u8240\u8241\u8242\u8243\u8244\u8245\u8246\u8247\u8248\u8249\u824a\u824b\u824c\u824d\u824e\u824f\u8250\u8251\u8252\u8253\u8254\u8255\u8256\u8257\u8258\u8259\u825a\u825b\u825c\u825d\u825e\u825f\u8260\u8261\u8262\u8263\u8264\u8265\u8266\u8267\u8268\u8269\u826a\u826b\u826c\u826d\u826e\u826f\u8270\u8271\u8272\u8273\u8274\u8275\u8276\u8277\u8278\u8279\u827a\u827b\u827c\u827d\u827e\u827f\u8280\u8281\u8282\u8283\u8284\u8285\u8286\u8287\u8288\u8289\u828a\u828b\u828c\u828d\u828e\u828f\u8290\u8291\u8292\u8293\u8294\u8295\u8296\u8297\u8298\u8299\u829a\u829b\u829c\u829d\u829e\u829f\u82a0\u82a1\u82a2\u82a3\u82a4\u82a5\u82a6\u82a7\u82a8\u82a9\u82aa\u82ab\u82ac\u82ad\u82ae\u82af\u82b0\u82b1\u82b2\u82b3\u82b4\u82b5\u82b6\u82b7\u82b8\u82b9\u82ba\u82bb\u82bc\u82bd\u82be\u82bf\u82c0\u82c1\u82c2\u82c3\u82c4\u82c5\u82c6\u82c7\u82c8\u82c9\u82ca\u82cb\u82cc\u82cd\u82ce\u82cf\u82d0\u82d1\u82d2\u82d3\u82d4\u82d5\u82d6\u82d7\u82d8\u82d9\u82da\u82db\u82dc\u82dd\u82de\u82df\u82e0\u82e1\u82e2\u82e3\u82e4\u82e5\u82e6\u82e7\u82e8\u82e9\u82ea\u82eb\u82ec\u82ed\u82ee\u82ef\u82f0\u82f1\u82f2\u82f3\u82f4\u82f5\u82f6\u82f7\u82f8\u82f9\u82fa\u82fb\u82fc\u82fd\u82fe\u82ff\u8300\u8301\u8302\u8303\u8304\u8305\u8306\u8307\u8308\u8309\u830a\u830b\u830c\u830d\u830e\u830f\u8310\u8311\u8312\u8313\u8314\u8315\u8316\u8317\u8318\u8319\u831a\u831b\u831c\u831d\u831e\u831f\u8320\u8321\u8322\u8323\u8324\u8325\u8326\u8327\u8328\u8329\u832a\u832b\u832c\u832d\u832e\u832f\u8330\u8331\u8332\u8333\u8334\u8335\u8336\u8337\u8338\u8339\u833a\u833b\u833c\u833d\u833e\u833f\u8340\u8341\u8342\u8343\u8344\u8345\u8346\u8347\u8348\u8349\u834a\u834b\u834c\u834d\u834e\u834f\u8350\u8351\u8352\u8353\u8354\u8355\u8356\u8357\u8358\u8359\u835a\u835b\u835c\u835d\u835e\u835f\u8360\u8361\u8362\u8363\u8364\u8365\u8366\u8367\u8368\u8369\u836a\u836b\u836c\u836d\u836e\u836f\u8370\u8371\u8372\u8373\u8374\u8375\u8376\u8377\u8378\u8379\u837a\u837b\u837c\u837d\u837e\u837f\u8380\u8381\u8382\u8383\u8384\u8385\u8386\u8387\u8388\u8389\u838a\u838b\u838c\u838d\u838e\u838f\u8390\u8391\u8392\u8393\u8394\u8395\u8396\u8397\u8398\u8399\u839a\u839b\u839c\u839d\u839e\u839f\u83a0\u83a1\u83a2\u83a3\u83a4\u83a5\u83a6\u83a7\u83a8\u83a9\u83aa\u83ab\u83ac\u83ad\u83ae\u83af\u83b0\u83b1\u83b2\u83b3\u83b4\u83b5\u83b6\u83b7\u83b8\u83b9\u83ba\u83bb\u83bc\u83bd\u83be\u83bf\u83c0\u83c1\u83c2\u83c3\u83c4\u83c5\u83c6\u83c7\u83c8\u83c9\u83ca\u83cb\u83cc\u83cd\u83ce\u83cf\u83d0\u83d1\u83d2\u83d3\u83d4\u83d5\u83d6\u83d7\u83d8\u83d9\u83da\u83db\u83dc\u83dd\u83de\u83df\u83e0\u83e1\u83e2\u83e3\u83e4\u83e5\u83e6\u83e7\u83e8\u83e9\u83ea\u83eb\u83ec\u83ed\u83ee\u83ef\u83f0\u83f1\u83f2\u83f3\u83f4\u83f5\u83f6\u83f7\u83f8\u83f9\u83fa\u83fb\u83fc\u83fd\u83fe\u83ff\u8400\u8401\u8402\u8403\u8404\u8405\u8406\u8407\u8408\u8409\u840a\u840b\u840c\u840d\u840e\u840f\u8410\u8411\u8412\u8413\u8414\u8415\u8416\u8417\u8418\u8419\u841a\u841b\u841c\u841d\u841e\u841f\u8420\u8421\u8422\u8423\u8424\u8425\u8426\u8427\u8428\u8429\u842a\u842b\u842c\u842d\u842e\u842f\u8430\u8431\u8432\u8433\u8434\u8435\u8436\u8437\u8438\u8439\u843a\u843b\u843c\u843d\u843e\u843f\u8440\u8441\u8442\u8443\u8444\u8445\u8446\u8447\u8448\u8449\u844a\u844b\u844c\u844d\u844e\u844f\u8450\u8451\u8452\u8453\u8454\u8455\u8456\u8457\u8458\u8459\u845a\u845b\u845c\u845d\u845e\u845f\u8460\u8461\u8462\u8463\u8464\u8465\u8466\u8467\u8468\u8469\u846a\u846b\u846c\u846d\u846e\u846f\u8470\u8471\u8472\u8473\u8474\u8475\u8476\u8477\u8478\u8479\u847a\u847b\u847c\u847d\u847e\u847f\u8480\u8481\u8482\u8483\u8484\u8485\u8486\u8487\u8488\u8489\u848a\u848b\u848c\u848d\u848e\u848f\u8490\u8491\u8492\u8493\u8494\u8495\u8496\u8497\u8498\u8499\u849a\u849b\u849c\u849d\u849e\u849f\u84a0\u84a1\u84a2\u84a3\u84a4\u84a5\u84a6\u84a7\u84a8\u84a9\u84aa\u84ab\u84ac\u84ad\u84ae\u84af\u84b0\u84b1\u84b2\u84b3\u84b4\u84b5\u84b6\u84b7\u84b8\u84b9\u84ba\u84bb\u84bc\u84bd\u84be\u84bf\u84c0\u84c1\u84c2\u84c3\u84c4\u84c5\u84c6\u84c7\u84c8\u84c9\u84ca\u84cb\u84cc\u84cd\u84ce\u84cf\u84d0\u84d1\u84d2\u84d3\u84d4\u84d5\u84d6\u84d7\u84d8\u84d9\u84da\u84db\u84dc\u84dd\u84de\u84df\u84e0\u84e1\u84e2\u84e3\u84e4\u84e5\u84e6\u84e7\u84e8\u84e9\u84ea\u84eb\u84ec\u84ed\u84ee\u84ef\u84f0\u84f1\u84f2\u84f3\u84f4\u84f5\u84f6\u84f7\u84f8\u84f9\u84fa\u84fb\u84fc\u84fd\u84fe\u84ff\u8500\u8501\u8502\u8503\u8504\u8505\u8506\u8507\u8508\u8509\u850a\u850b\u850c\u850d\u850e\u850f\u8510\u8511\u8512\u8513\u8514\u8515\u8516\u8517\u8518\u8519\u851a\u851b\u851c\u851d\u851e\u851f\u8520\u8521\u8522\u8523\u8524\u8525\u8526\u8527\u8528\u8529\u852a\u852b\u852c\u852d\u852e\u852f\u8530\u8531\u8532\u8533\u8534\u8535\u8536\u8537\u8538\u8539\u853a\u853b\u853c\u853d\u853e\u853f\u8540\u8541\u8542\u8543\u8544\u8545\u8546\u8547\u8548\u8549\u854a\u854b\u854c\u854d\u854e\u854f\u8550\u8551\u8552\u8553\u8554\u8555\u8556\u8557\u8558\u8559\u855a\u855b\u855c\u855d\u855e\u855f\u8560\u8561\u8562\u8563\u8564\u8565\u8566\u8567\u8568\u8569\u856a\u856b\u856c\u856d\u856e\u856f\u8570\u8571\u8572\u8573\u8574\u8575\u8576\u8577\u8578\u8579\u857a\u857b\u857c\u857d\u857e\u857f\u8580\u8581\u8582\u8583\u8584\u8585\u8586\u8587\u8588\u8589\u858a\u858b\u858c\u858d\u858e\u858f\u8590\u8591\u8592\u8593\u8594\u8595\u8596\u8597\u8598\u8599\u859a\u859b\u859c\u859d\u859e\u859f\u85a0\u85a1\u85a2\u85a3\u85a4\u85a5\u85a6\u85a7\u85a8\u85a9\u85aa\u85ab\u85ac\u85ad\u85ae\u85af\u85b0\u85b1\u85b2\u85b3\u85b4\u85b5\u85b6\u85b7\u85b8\u85b9\u85ba\u85bb\u85bc\u85bd\u85be\u85bf\u85c0\u85c1\u85c2\u85c3\u85c4\u85c5\u85c6\u85c7\u85c8\u85c9\u85ca\u85cb\u85cc\u85cd\u85ce\u85cf\u85d0\u85d1\u85d2\u85d3\u85d4\u85d5\u85d6\u85d7\u85d8\u85d9\u85da\u85db\u85dc\u85dd\u85de\u85df\u85e0\u85e1\u85e2\u85e3\u85e4\u85e5\u85e6\u85e7\u85e8\u85e9\u85ea\u85eb\u85ec\u85ed\u85ee\u85ef\u85f0\u85f1\u85f2\u85f3\u85f4\u85f5\u85f6\u85f7\u85f8\u85f9\u85fa\u85fb\u85fc\u85fd\u85fe\u85ff\u8600\u8601\u8602\u8603\u8604\u8605\u8606\u8607\u8608\u8609\u860a\u860b\u860c\u860d\u860e\u860f\u8610\u8611\u8612\u8613\u8614\u8615\u8616\u8617\u8618\u8619\u861a\u861b\u861c\u861d\u861e\u861f\u8620\u8621\u8622\u8623\u8624\u8625\u8626\u8627\u8628\u8629\u862a\u862b\u862c\u862d\u862e\u862f\u8630\u8631\u8632\u8633\u8634\u8635\u8636\u8637\u8638\u8639\u863a\u863b\u863c\u863d\u863e\u863f\u8640\u8641\u8642\u8643\u8644\u8645\u8646\u8647\u8648\u8649\u864a\u864b\u864c\u864d\u864e\u864f\u8650\u8651\u8652\u8653\u8654\u8655\u8656\u8657\u8658\u8659\u865a\u865b\u865c\u865d\u865e\u865f\u8660\u8661\u8662\u8663\u8664\u8665\u8666\u8667\u8668\u8669\u866a\u866b\u866c\u866d\u866e\u866f\u8670\u8671\u8672\u8673\u8674\u8675\u8676\u8677\u8678\u8679\u867a\u867b\u867c\u867d\u867e\u867f\u8680\u8681\u8682\u8683\u8684\u8685\u8686\u8687\u8688\u8689\u868a\u868b\u868c\u868d\u868e\u868f\u8690\u8691\u8692\u8693\u8694\u8695\u8696\u8697\u8698\u8699\u869a\u869b\u869c\u869d\u869e\u869f\u86a0\u86a1\u86a2\u86a3\u86a4\u86a5\u86a6\u86a7\u86a8\u86a9\u86aa\u86ab\u86ac\u86ad\u86ae\u86af\u86b0\u86b1\u86b2\u86b3\u86b4\u86b5\u86b6\u86b7\u86b8\u86b9\u86ba\u86bb\u86bc\u86bd\u86be\u86bf\u86c0\u86c1\u86c2\u86c3\u86c4\u86c5\u86c6\u86c7\u86c8\u86c9\u86ca\u86cb\u86cc\u86cd\u86ce\u86cf\u86d0\u86d1\u86d2\u86d3\u86d4\u86d5\u86d6\u86d7\u86d8\u86d9\u86da\u86db\u86dc\u86dd\u86de\u86df\u86e0\u86e1\u86e2\u86e3\u86e4\u86e5\u86e6\u86e7\u86e8\u86e9\u86ea\u86eb\u86ec\u86ed\u86ee\u86ef\u86f0\u86f1\u86f2\u86f3\u86f4\u86f5\u86f6\u86f7\u86f8\u86f9\u86fa\u86fb\u86fc\u86fd\u86fe\u86ff\u8700\u8701\u8702\u8703\u8704\u8705\u8706\u8707\u8708\u8709\u870a\u870b\u870c\u870d\u870e\u870f\u8710\u8711\u8712\u8713\u8714\u8715\u8716\u8717\u8718\u8719\u871a\u871b\u871c\u871d\u871e\u871f\u8720\u8721\u8722\u8723\u8724\u8725\u8726\u8727\u8728\u8729\u872a\u872b\u872c\u872d\u872e\u872f\u8730\u8731\u8732\u8733\u8734\u8735\u8736\u8737\u8738\u8739\u873a\u873b\u873c\u873d\u873e\u873f\u8740\u8741\u8742\u8743\u8744\u8745\u8746\u8747\u8748\u8749\u874a\u874b\u874c\u874d\u874e\u874f\u8750\u8751\u8752\u8753\u8754\u8755\u8756\u8757\u8758\u8759\u875a\u875b\u875c\u875d\u875e\u875f\u8760\u8761\u8762\u8763\u8764\u8765\u8766\u8767\u8768\u8769\u876a\u876b\u876c\u876d\u876e\u876f\u8770\u8771\u8772\u8773\u8774\u8775\u8776\u8777\u8778\u8779\u877a\u877b\u877c\u877d\u877e\u877f\u8780\u8781\u8782\u8783\u8784\u8785\u8786\u8787\u8788\u8789\u878a\u878b\u878c\u878d\u878e\u878f\u8790\u8791\u8792\u8793\u8794\u8795\u8796\u8797\u8798\u8799\u879a\u879b\u879c\u879d\u879e\u879f\u87a0\u87a1\u87a2\u87a3\u87a4\u87a5\u87a6\u87a7\u87a8\u87a9\u87aa\u87ab\u87ac\u87ad\u87ae\u87af\u87b0\u87b1\u87b2\u87b3\u87b4\u87b5\u87b6\u87b7\u87b8\u87b9\u87ba\u87bb\u87bc\u87bd\u87be\u87bf\u87c0\u87c1\u87c2\u87c3\u87c4\u87c5\u87c6\u87c7\u87c8\u87c9\u87ca\u87cb\u87cc\u87cd\u87ce\u87cf\u87d0\u87d1\u87d2\u87d3\u87d4\u87d5\u87d6\u87d7\u87d8\u87d9\u87da\u87db\u87dc\u87dd\u87de\u87df\u87e0\u87e1\u87e2\u87e3\u87e4\u87e5\u87e6\u87e7\u87e8\u87e9\u87ea\u87eb\u87ec\u87ed\u87ee\u87ef\u87f0\u87f1\u87f2\u87f3\u87f4\u87f5\u87f6\u87f7\u87f8\u87f9\u87fa\u87fb\u87fc\u87fd\u87fe\u87ff\u8800\u8801\u8802\u8803\u8804\u8805\u8806\u8807\u8808\u8809\u880a\u880b\u880c\u880d\u880e\u880f\u8810\u8811\u8812\u8813\u8814\u8815\u8816\u8817\u8818\u8819\u881a\u881b\u881c\u881d\u881e\u881f\u8820\u8821\u8822\u8823\u8824\u8825\u8826\u8827\u8828\u8829\u882a\u882b\u882c\u882d\u882e\u882f\u8830\u8831\u8832\u8833\u8834\u8835\u8836\u8837\u8838\u8839\u883a\u883b\u883c\u883d\u883e\u883f\u8840\u8841\u8842\u8843\u8844\u8845\u8846\u8847\u8848\u8849\u884a\u884b\u884c\u884d\u884e\u884f\u8850\u8851\u8852\u8853\u8854\u8855\u8856\u8857\u8858\u8859\u885a\u885b\u885c\u885d\u885e\u885f\u8860\u8861\u8862\u8863\u8864\u8865\u8866\u8867\u8868\u8869\u886a\u886b\u886c\u886d\u886e\u886f\u8870\u8871\u8872\u8873\u8874\u8875\u8876\u8877\u8878\u8879\u887a\u887b\u887c\u887d\u887e\u887f\u8880\u8881\u8882\u8883\u8884\u8885\u8886\u8887\u8888\u8889\u888a\u888b\u888c\u888d\u888e\u888f\u8890\u8891\u8892\u8893\u8894\u8895\u8896\u8897\u8898\u8899\u889a\u889b\u889c\u889d\u889e\u889f\u88a0\u88a1\u88a2\u88a3\u88a4\u88a5\u88a6\u88a7\u88a8\u88a9\u88aa\u88ab\u88ac\u88ad\u88ae\u88af\u88b0\u88b1\u88b2\u88b3\u88b4\u88b5\u88b6\u88b7\u88b8\u88b9\u88ba\u88bb\u88bc\u88bd\u88be\u88bf\u88c0\u88c1\u88c2\u88c3\u88c4\u88c5\u88c6\u88c7\u88c8\u88c9\u88ca\u88cb\u88cc\u88cd\u88ce\u88cf\u88d0\u88d1\u88d2\u88d3\u88d4\u88d5\u88d6\u88d7\u88d8\u88d9\u88da\u88db\u88dc\u88dd\u88de\u88df\u88e0\u88e1\u88e2\u88e3\u88e4\u88e5\u88e6\u88e7\u88e8\u88e9\u88ea\u88eb\u88ec\u88ed\u88ee\u88ef\u88f0\u88f1\u88f2\u88f3\u88f4\u88f5\u88f6\u88f7\u88f8\u88f9\u88fa\u88fb\u88fc\u88fd\u88fe\u88ff\u8900\u8901\u8902\u8903\u8904\u8905\u8906\u8907\u8908\u8909\u890a\u890b\u890c\u890d\u890e\u890f\u8910\u8911\u8912\u8913\u8914\u8915\u8916\u8917\u8918\u8919\u891a\u891b\u891c\u891d\u891e\u891f\u8920\u8921\u8922\u8923\u8924\u8925\u8926\u8927\u8928\u8929\u892a\u892b\u892c\u892d\u892e\u892f\u8930\u8931\u8932\u8933\u8934\u8935\u8936\u8937\u8938\u8939\u893a\u893b\u893c\u893d\u893e\u893f\u8940\u8941\u8942\u8943\u8944\u8945\u8946\u8947\u8948\u8949\u894a\u894b\u894c\u894d\u894e\u894f\u8950\u8951\u8952\u8953\u8954\u8955\u8956\u8957\u8958\u8959\u895a\u895b\u895c\u895d\u895e\u895f\u8960\u8961\u8962\u8963\u8964\u8965\u8966\u8967\u8968\u8969\u896a\u896b\u896c\u896d\u896e\u896f\u8970\u8971\u8972\u8973\u8974\u8975\u8976\u8977\u8978\u8979\u897a\u897b\u897c\u897d\u897e\u897f\u8980\u8981\u8982\u8983\u8984\u8985\u8986\u8987\u8988\u8989\u898a\u898b\u898c\u898d\u898e\u898f\u8990\u8991\u8992\u8993\u8994\u8995\u8996\u8997\u8998\u8999\u899a\u899b\u899c\u899d\u899e\u899f\u89a0\u89a1\u89a2\u89a3\u89a4\u89a5\u89a6\u89a7\u89a8\u89a9\u89aa\u89ab\u89ac\u89ad\u89ae\u89af\u89b0\u89b1\u89b2\u89b3\u89b4\u89b5\u89b6\u89b7\u89b8\u89b9\u89ba\u89bb\u89bc\u89bd\u89be\u89bf\u89c0\u89c1\u89c2\u89c3\u89c4\u89c5\u89c6\u89c7\u89c8\u89c9\u89ca\u89cb\u89cc\u89cd\u89ce\u89cf\u89d0\u89d1\u89d2\u89d3\u89d4\u89d5\u89d6\u89d7\u89d8\u89d9\u89da\u89db\u89dc\u89dd\u89de\u89df\u89e0\u89e1\u89e2\u89e3\u89e4\u89e5\u89e6\u89e7\u89e8\u89e9\u89ea\u89eb\u89ec\u89ed\u89ee\u89ef\u89f0\u89f1\u89f2\u89f3\u89f4\u89f5\u89f6\u89f7\u89f8\u89f9\u89fa\u89fb\u89fc\u89fd\u89fe\u89ff\u8a00\u8a01\u8a02\u8a03\u8a04\u8a05\u8a06\u8a07\u8a08\u8a09\u8a0a\u8a0b\u8a0c\u8a0d\u8a0e\u8a0f\u8a10\u8a11\u8a12\u8a13\u8a14\u8a15\u8a16\u8a17\u8a18\u8a19\u8a1a\u8a1b\u8a1c\u8a1d\u8a1e\u8a1f\u8a20\u8a21\u8a22\u8a23\u8a24\u8a25\u8a26\u8a27\u8a28\u8a29\u8a2a\u8a2b\u8a2c\u8a2d\u8a2e\u8a2f\u8a30\u8a31\u8a32\u8a33\u8a34\u8a35\u8a36\u8a37\u8a38\u8a39\u8a3a\u8a3b\u8a3c\u8a3d\u8a3e\u8a3f\u8a40\u8a41\u8a42\u8a43\u8a44\u8a45\u8a46\u8a47\u8a48\u8a49\u8a4a\u8a4b\u8a4c\u8a4d\u8a4e\u8a4f\u8a50\u8a51\u8a52\u8a53\u8a54\u8a55\u8a56\u8a57\u8a58\u8a59\u8a5a\u8a5b\u8a5c\u8a5d\u8a5e\u8a5f\u8a60\u8a61\u8a62\u8a63\u8a64\u8a65\u8a66\u8a67\u8a68\u8a69\u8a6a\u8a6b\u8a6c\u8a6d\u8a6e\u8a6f\u8a70\u8a71\u8a72\u8a73\u8a74\u8a75\u8a76\u8a77\u8a78\u8a79\u8a7a\u8a7b\u8a7c\u8a7d\u8a7e\u8a7f\u8a80\u8a81\u8a82\u8a83\u8a84\u8a85\u8a86\u8a87\u8a88\u8a89\u8a8a\u8a8b\u8a8c\u8a8d\u8a8e\u8a8f\u8a90\u8a91\u8a92\u8a93\u8a94\u8a95\u8a96\u8a97\u8a98\u8a99\u8a9a\u8a9b\u8a9c\u8a9d\u8a9e\u8a9f\u8aa0\u8aa1\u8aa2\u8aa3\u8aa4\u8aa5\u8aa6\u8aa7\u8aa8\u8aa9\u8aaa\u8aab\u8aac\u8aad\u8aae\u8aaf\u8ab0\u8ab1\u8ab2\u8ab3\u8ab4\u8ab5\u8ab6\u8ab7\u8ab8\u8ab9\u8aba\u8abb\u8abc\u8abd\u8abe\u8abf\u8ac0\u8ac1\u8ac2\u8ac3\u8ac4\u8ac5\u8ac6\u8ac7\u8ac8\u8ac9\u8aca\u8acb\u8acc\u8acd\u8ace\u8acf\u8ad0\u8ad1\u8ad2\u8ad3\u8ad4\u8ad5\u8ad6\u8ad7\u8ad8\u8ad9\u8ada\u8adb\u8adc\u8add\u8ade\u8adf\u8ae0\u8ae1\u8ae2\u8ae3\u8ae4\u8ae5\u8ae6\u8ae7\u8ae8\u8ae9\u8aea\u8aeb\u8aec\u8aed\u8aee\u8aef\u8af0\u8af1\u8af2\u8af3\u8af4\u8af5\u8af6\u8af7\u8af8\u8af9\u8afa\u8afb\u8afc\u8afd\u8afe\u8aff\u8b00\u8b01\u8b02\u8b03\u8b04\u8b05\u8b06\u8b07\u8b08\u8b09\u8b0a\u8b0b\u8b0c\u8b0d\u8b0e\u8b0f\u8b10\u8b11\u8b12\u8b13\u8b14\u8b15\u8b16\u8b17\u8b18\u8b19\u8b1a\u8b1b\u8b1c\u8b1d\u8b1e\u8b1f\u8b20\u8b21\u8b22\u8b23\u8b24\u8b25\u8b26\u8b27\u8b28\u8b29\u8b2a\u8b2b\u8b2c\u8b2d\u8b2e\u8b2f\u8b30\u8b31\u8b32\u8b33\u8b34\u8b35\u8b36\u8b37\u8b38\u8b39\u8b3a\u8b3b\u8b3c\u8b3d\u8b3e\u8b3f\u8b40\u8b41\u8b42\u8b43\u8b44\u8b45\u8b46\u8b47\u8b48\u8b49\u8b4a\u8b4b\u8b4c\u8b4d\u8b4e\u8b4f\u8b50\u8b51\u8b52\u8b53\u8b54\u8b55\u8b56\u8b57\u8b58\u8b59\u8b5a\u8b5b\u8b5c\u8b5d\u8b5e\u8b5f\u8b60\u8b61\u8b62\u8b63\u8b64\u8b65\u8b66\u8b67\u8b68\u8b69\u8b6a\u8b6b\u8b6c\u8b6d\u8b6e\u8b6f\u8b70\u8b71\u8b72\u8b73\u8b74\u8b75\u8b76\u8b77\u8b78\u8b79\u8b7a\u8b7b\u8b7c\u8b7d\u8b7e\u8b7f\u8b80\u8b81\u8b82\u8b83\u8b84\u8b85\u8b86\u8b87\u8b88\u8b89\u8b8a\u8b8b\u8b8c\u8b8d\u8b8e\u8b8f\u8b90\u8b91\u8b92\u8b93\u8b94\u8b95\u8b96\u8b97\u8b98\u8b99\u8b9a\u8b9b\u8b9c\u8b9d\u8b9e\u8b9f\u8ba0\u8ba1\u8ba2\u8ba3\u8ba4\u8ba5\u8ba6\u8ba7\u8ba8\u8ba9\u8baa\u8bab\u8bac\u8bad\u8bae\u8baf\u8bb0\u8bb1\u8bb2\u8bb3\u8bb4\u8bb5\u8bb6\u8bb7\u8bb8\u8bb9\u8bba\u8bbb\u8bbc\u8bbd\u8bbe\u8bbf\u8bc0\u8bc1\u8bc2\u8bc3\u8bc4\u8bc5\u8bc6\u8bc7\u8bc8\u8bc9\u8bca\u8bcb\u8bcc\u8bcd\u8bce\u8bcf\u8bd0\u8bd1\u8bd2\u8bd3\u8bd4\u8bd5\u8bd6\u8bd7\u8bd8\u8bd9\u8bda\u8bdb\u8bdc\u8bdd\u8bde\u8bdf\u8be0\u8be1\u8be2\u8be3\u8be4\u8be5\u8be6\u8be7\u8be8\u8be9\u8bea\u8beb\u8bec\u8bed\u8bee\u8bef\u8bf0\u8bf1\u8bf2\u8bf3\u8bf4\u8bf5\u8bf6\u8bf7\u8bf8\u8bf9\u8bfa\u8bfb\u8bfc\u8bfd\u8bfe\u8bff\u8c00\u8c01\u8c02\u8c03\u8c04\u8c05\u8c06\u8c07\u8c08\u8c09\u8c0a\u8c0b\u8c0c\u8c0d\u8c0e\u8c0f\u8c10\u8c11\u8c12\u8c13\u8c14\u8c15\u8c16\u8c17\u8c18\u8c19\u8c1a\u8c1b\u8c1c\u8c1d\u8c1e\u8c1f\u8c20\u8c21\u8c22\u8c23\u8c24\u8c25\u8c26\u8c27\u8c28\u8c29\u8c2a\u8c2b\u8c2c\u8c2d\u8c2e\u8c2f\u8c30\u8c31\u8c32\u8c33\u8c34\u8c35\u8c36\u8c37\u8c38\u8c39\u8c3a\u8c3b\u8c3c\u8c3d\u8c3e\u8c3f\u8c40\u8c41\u8c42\u8c43\u8c44\u8c45\u8c46\u8c47\u8c48\u8c49\u8c4a\u8c4b\u8c4c\u8c4d\u8c4e\u8c4f\u8c50\u8c51\u8c52\u8c53\u8c54\u8c55\u8c56\u8c57\u8c58\u8c59\u8c5a\u8c5b\u8c5c\u8c5d\u8c5e\u8c5f\u8c60\u8c61\u8c62\u8c63\u8c64\u8c65\u8c66\u8c67\u8c68\u8c69\u8c6a\u8c6b\u8c6c\u8c6d\u8c6e\u8c6f\u8c70\u8c71\u8c72\u8c73\u8c74\u8c75\u8c76\u8c77\u8c78\u8c79\u8c7a\u8c7b\u8c7c\u8c7d\u8c7e\u8c7f\u8c80\u8c81\u8c82\u8c83\u8c84\u8c85\u8c86\u8c87\u8c88\u8c89\u8c8a\u8c8b\u8c8c\u8c8d\u8c8e\u8c8f\u8c90\u8c91\u8c92\u8c93\u8c94\u8c95\u8c96\u8c97\u8c98\u8c99\u8c9a\u8c9b\u8c9c\u8c9d\u8c9e\u8c9f\u8ca0\u8ca1\u8ca2\u8ca3\u8ca4\u8ca5\u8ca6\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac\u8cad\u8cae\u8caf\u8cb0\u8cb1\u8cb2\u8cb3\u8cb4\u8cb5\u8cb6\u8cb7\u8cb8\u8cb9\u8cba\u8cbb\u8cbc\u8cbd\u8cbe\u8cbf\u8cc0\u8cc1\u8cc2\u8cc3\u8cc4\u8cc5\u8cc6\u8cc7\u8cc8\u8cc9\u8cca\u8ccb\u8ccc\u8ccd\u8cce\u8ccf\u8cd0\u8cd1\u8cd2\u8cd3\u8cd4\u8cd5\u8cd6\u8cd7\u8cd8\u8cd9\u8cda\u8cdb\u8cdc\u8cdd\u8cde\u8cdf\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce5\u8ce6\u8ce7\u8ce8\u8ce9\u8cea\u8ceb\u8cec\u8ced\u8cee\u8cef\u8cf0\u8cf1\u8cf2\u8cf3\u8cf4\u8cf5\u8cf6\u8cf7\u8cf8\u8cf9\u8cfa\u8cfb\u8cfc\u8cfd\u8cfe\u8cff\u8d00\u8d01\u8d02\u8d03\u8d04\u8d05\u8d06\u8d07\u8d08\u8d09\u8d0a\u8d0b\u8d0c\u8d0d\u8d0e\u8d0f\u8d10\u8d11\u8d12\u8d13\u8d14\u8d15\u8d16\u8d17\u8d18\u8d19\u8d1a\u8d1b\u8d1c\u8d1d\u8d1e\u8d1f\u8d20\u8d21\u8d22\u8d23\u8d24\u8d25\u8d26\u8d27\u8d28\u8d29\u8d2a\u8d2b\u8d2c\u8d2d\u8d2e\u8d2f\u8d30\u8d31\u8d32\u8d33\u8d34\u8d35\u8d36\u8d37\u8d38\u8d39\u8d3a\u8d3b\u8d3c\u8d3d\u8d3e\u8d3f\u8d40\u8d41\u8d42\u8d43\u8d44\u8d45\u8d46\u8d47\u8d48\u8d49\u8d4a\u8d4b\u8d4c\u8d4d\u8d4e\u8d4f\u8d50\u8d51\u8d52\u8d53\u8d54\u8d55\u8d56\u8d57\u8d58\u8d59\u8d5a\u8d5b\u8d5c\u8d5d\u8d5e\u8d5f\u8d60\u8d61\u8d62\u8d63\u8d64\u8d65\u8d66\u8d67\u8d68\u8d69\u8d6a\u8d6b\u8d6c\u8d6d\u8d6e\u8d6f\u8d70\u8d71\u8d72\u8d73\u8d74\u8d75\u8d76\u8d77\u8d78\u8d79\u8d7a\u8d7b\u8d7c\u8d7d\u8d7e\u8d7f\u8d80\u8d81\u8d82\u8d83\u8d84\u8d85\u8d86\u8d87\u8d88\u8d89\u8d8a\u8d8b\u8d8c\u8d8d\u8d8e\u8d8f\u8d90\u8d91\u8d92\u8d93\u8d94\u8d95\u8d96\u8d97\u8d98\u8d99\u8d9a\u8d9b\u8d9c\u8d9d\u8d9e\u8d9f\u8da0\u8da1\u8da2\u8da3\u8da4\u8da5\u8da6\u8da7\u8da8\u8da9\u8daa\u8dab\u8dac\u8dad\u8dae\u8daf\u8db0\u8db1\u8db2\u8db3\u8db4\u8db5\u8db6\u8db7\u8db8\u8db9\u8dba\u8dbb\u8dbc\u8dbd\u8dbe\u8dbf\u8dc0\u8dc1\u8dc2\u8dc3\u8dc4\u8dc5\u8dc6\u8dc7\u8dc8\u8dc9\u8dca\u8dcb\u8dcc\u8dcd\u8dce\u8dcf\u8dd0\u8dd1\u8dd2\u8dd3\u8dd4\u8dd5\u8dd6\u8dd7\u8dd8\u8dd9\u8dda\u8ddb\u8ddc\u8ddd\u8dde\u8ddf\u8de0\u8de1\u8de2\u8de3\u8de4\u8de5\u8de6\u8de7\u8de8\u8de9\u8dea\u8deb\u8dec\u8ded\u8dee\u8def\u8df0\u8df1\u8df2\u8df3\u8df4\u8df5\u8df6\u8df7\u8df8\u8df9\u8dfa\u8dfb\u8dfc\u8dfd\u8dfe\u8dff\u8e00\u8e01\u8e02\u8e03\u8e04\u8e05\u8e06\u8e07\u8e08\u8e09\u8e0a\u8e0b\u8e0c\u8e0d\u8e0e\u8e0f\u8e10\u8e11\u8e12\u8e13\u8e14\u8e15\u8e16\u8e17\u8e18\u8e19\u8e1a\u8e1b\u8e1c\u8e1d\u8e1e\u8e1f\u8e20\u8e21\u8e22\u8e23\u8e24\u8e25\u8e26\u8e27\u8e28\u8e29\u8e2a\u8e2b\u8e2c\u8e2d\u8e2e\u8e2f\u8e30\u8e31\u8e32\u8e33\u8e34\u8e35\u8e36\u8e37\u8e38\u8e39\u8e3a\u8e3b\u8e3c\u8e3d\u8e3e\u8e3f\u8e40\u8e41\u8e42\u8e43\u8e44\u8e45\u8e46\u8e47\u8e48\u8e49\u8e4a\u8e4b\u8e4c\u8e4d\u8e4e\u8e4f\u8e50\u8e51\u8e52\u8e53\u8e54\u8e55\u8e56\u8e57\u8e58\u8e59\u8e5a\u8e5b\u8e5c\u8e5d\u8e5e\u8e5f\u8e60\u8e61\u8e62\u8e63\u8e64\u8e65\u8e66\u8e67\u8e68\u8e69\u8e6a\u8e6b\u8e6c\u8e6d\u8e6e\u8e6f\u8e70\u8e71\u8e72\u8e73\u8e74\u8e75\u8e76\u8e77\u8e78\u8e79\u8e7a\u8e7b\u8e7c\u8e7d\u8e7e\u8e7f\u8e80\u8e81\u8e82\u8e83\u8e84\u8e85\u8e86\u8e87\u8e88\u8e89\u8e8a\u8e8b\u8e8c\u8e8d\u8e8e\u8e8f\u8e90\u8e91\u8e92\u8e93\u8e94\u8e95\u8e96\u8e97\u8e98\u8e99\u8e9a\u8e9b\u8e9c\u8e9d\u8e9e\u8e9f\u8ea0\u8ea1\u8ea2\u8ea3\u8ea4\u8ea5\u8ea6\u8ea7\u8ea8\u8ea9\u8eaa\u8eab\u8eac\u8ead\u8eae\u8eaf\u8eb0\u8eb1\u8eb2\u8eb3\u8eb4\u8eb5\u8eb6\u8eb7\u8eb8\u8eb9\u8eba\u8ebb\u8ebc\u8ebd\u8ebe\u8ebf\u8ec0\u8ec1\u8ec2\u8ec3\u8ec4\u8ec5\u8ec6\u8ec7\u8ec8\u8ec9\u8eca\u8ecb\u8ecc\u8ecd\u8ece\u8ecf\u8ed0\u8ed1\u8ed2\u8ed3\u8ed4\u8ed5\u8ed6\u8ed7\u8ed8\u8ed9\u8eda\u8edb\u8edc\u8edd\u8ede\u8edf\u8ee0\u8ee1\u8ee2\u8ee3\u8ee4\u8ee5\u8ee6\u8ee7\u8ee8\u8ee9\u8eea\u8eeb\u8eec\u8eed\u8eee\u8eef\u8ef0\u8ef1\u8ef2\u8ef3\u8ef4\u8ef5\u8ef6\u8ef7\u8ef8\u8ef9\u8efa\u8efb\u8efc\u8efd\u8efe\u8eff\u8f00\u8f01\u8f02\u8f03\u8f04\u8f05\u8f06\u8f07\u8f08\u8f09\u8f0a\u8f0b\u8f0c\u8f0d\u8f0e\u8f0f\u8f10\u8f11\u8f12\u8f13\u8f14\u8f15\u8f16\u8f17\u8f18\u8f19\u8f1a\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f20\u8f21\u8f22\u8f23\u8f24\u8f25\u8f26\u8f27\u8f28\u8f29\u8f2a\u8f2b\u8f2c\u8f2d\u8f2e\u8f2f\u8f30\u8f31\u8f32\u8f33\u8f34\u8f35\u8f36\u8f37\u8f38\u8f39\u8f3a\u8f3b\u8f3c\u8f3d\u8f3e\u8f3f\u8f40\u8f41\u8f42\u8f43\u8f44\u8f45\u8f46\u8f47\u8f48\u8f49\u8f4a\u8f4b\u8f4c\u8f4d\u8f4e\u8f4f\u8f50\u8f51\u8f52\u8f53\u8f54\u8f55\u8f56\u8f57\u8f58\u8f59\u8f5a\u8f5b\u8f5c\u8f5d\u8f5e\u8f5f\u8f60\u8f61\u8f62\u8f63\u8f64\u8f65\u8f66\u8f67\u8f68\u8f69\u8f6a\u8f6b\u8f6c\u8f6d\u8f6e\u8f6f\u8f70\u8f71\u8f72\u8f73\u8f74\u8f75\u8f76\u8f77\u8f78\u8f79\u8f7a\u8f7b\u8f7c\u8f7d\u8f7e\u8f7f\u8f80\u8f81\u8f82\u8f83\u8f84\u8f85\u8f86\u8f87\u8f88\u8f89\u8f8a\u8f8b\u8f8c\u8f8d\u8f8e\u8f8f\u8f90\u8f91\u8f92\u8f93\u8f94\u8f95\u8f96\u8f97\u8f98\u8f99\u8f9a\u8f9b\u8f9c\u8f9d\u8f9e\u8f9f\u8fa0\u8fa1\u8fa2\u8fa3\u8fa4\u8fa5\u8fa6\u8fa7\u8fa8\u8fa9\u8faa\u8fab\u8fac\u8fad\u8fae\u8faf\u8fb0\u8fb1\u8fb2\u8fb3\u8fb4\u8fb5\u8fb6\u8fb7\u8fb8\u8fb9\u8fba\u8fbb\u8fbc\u8fbd\u8fbe\u8fbf\u8fc0\u8fc1\u8fc2\u8fc3\u8fc4\u8fc5\u8fc6\u8fc7\u8fc8\u8fc9\u8fca\u8fcb\u8fcc\u8fcd\u8fce\u8fcf\u8fd0\u8fd1\u8fd2\u8fd3\u8fd4\u8fd5\u8fd6\u8fd7\u8fd8\u8fd9\u8fda\u8fdb\u8fdc\u8fdd\u8fde\u8fdf\u8fe0\u8fe1\u8fe2\u8fe3\u8fe4\u8fe5\u8fe6\u8fe7\u8fe8\u8fe9\u8fea\u8feb\u8fec\u8fed\u8fee\u8fef\u8ff0\u8ff1\u8ff2\u8ff3\u8ff4\u8ff5\u8ff6\u8ff7\u8ff8\u8ff9\u8ffa\u8ffb\u8ffc\u8ffd\u8ffe\u8fff\u9000\u9001\u9002\u9003\u9004\u9005\u9006\u9007\u9008\u9009\u900a\u900b\u900c\u900d\u900e\u900f\u9010\u9011\u9012\u9013\u9014\u9015\u9016\u9017\u9018\u9019\u901a\u901b\u901c\u901d\u901e\u901f\u9020\u9021\u9022\u9023\u9024\u9025\u9026\u9027\u9028\u9029\u902a\u902b\u902c\u902d\u902e\u902f\u9030\u9031\u9032\u9033\u9034\u9035\u9036\u9037\u9038\u9039\u903a\u903b\u903c\u903d\u903e\u903f\u9040\u9041\u9042\u9043\u9044\u9045\u9046\u9047\u9048\u9049\u904a\u904b\u904c\u904d\u904e\u904f\u9050\u9051\u9052\u9053\u9054\u9055\u9056\u9057\u9058\u9059\u905a\u905b\u905c\u905d\u905e\u905f\u9060\u9061\u9062\u9063\u9064\u9065\u9066\u9067\u9068\u9069\u906a\u906b\u906c\u906d\u906e\u906f\u9070\u9071\u9072\u9073\u9074\u9075\u9076\u9077\u9078\u9079\u907a\u907b\u907c\u907d\u907e\u907f\u9080\u9081\u9082\u9083\u9084\u9085\u9086\u9087\u9088\u9089\u908a\u908b\u908c\u908d\u908e\u908f\u9090\u9091\u9092\u9093\u9094\u9095\u9096\u9097\u9098\u9099\u909a\u909b\u909c\u909d\u909e\u909f\u90a0\u90a1\u90a2\u90a3\u90a4\u90a5\u90a6\u90a7\u90a8\u90a9\u90aa\u90ab\u90ac\u90ad\u90ae\u90af\u90b0\u90b1\u90b2\u90b3\u90b4\u90b5\u90b6\u90b7\u90b8\u90b9\u90ba\u90bb\u90bc\u90bd\u90be\u90bf\u90c0\u90c1\u90c2\u90c3\u90c4\u90c5\u90c6\u90c7\u90c8\u90c9\u90ca\u90cb\u90cc\u90cd\u90ce\u90cf\u90d0\u90d1\u90d2\u90d3\u90d4\u90d5\u90d6\u90d7\u90d8\u90d9\u90da\u90db\u90dc\u90dd\u90de\u90df\u90e0\u90e1\u90e2\u90e3\u90e4\u90e5\u90e6\u90e7\u90e8\u90e9\u90ea\u90eb\u90ec\u90ed\u90ee\u90ef\u90f0\u90f1\u90f2\u90f3\u90f4\u90f5\u90f6\u90f7\u90f8\u90f9\u90fa\u90fb\u90fc\u90fd\u90fe\u90ff\u9100\u9101\u9102\u9103\u9104\u9105\u9106\u9107\u9108\u9109\u910a\u910b\u910c\u910d\u910e\u910f\u9110\u9111\u9112\u9113\u9114\u9115\u9116\u9117\u9118\u9119\u911a\u911b\u911c\u911d\u911e\u911f\u9120\u9121\u9122\u9123\u9124\u9125\u9126\u9127\u9128\u9129\u912a\u912b\u912c\u912d\u912e\u912f\u9130\u9131\u9132\u9133\u9134\u9135\u9136\u9137\u9138\u9139\u913a\u913b\u913c\u913d\u913e\u913f\u9140\u9141\u9142\u9143\u9144\u9145\u9146\u9147\u9148\u9149\u914a\u914b\u914c\u914d\u914e\u914f\u9150\u9151\u9152\u9153\u9154\u9155\u9156\u9157\u9158\u9159\u915a\u915b\u915c\u915d\u915e\u915f\u9160\u9161\u9162\u9163\u9164\u9165\u9166\u9167\u9168\u9169\u916a\u916b\u916c\u916d\u916e\u916f\u9170\u9171\u9172\u9173\u9174\u9175\u9176\u9177\u9178\u9179\u917a\u917b\u917c\u917d\u917e\u917f\u9180\u9181\u9182\u9183\u9184\u9185\u9186\u9187\u9188\u9189\u918a\u918b\u918c\u918d\u918e\u918f\u9190\u9191\u9192\u9193\u9194\u9195\u9196\u9197\u9198\u9199\u919a\u919b\u919c\u919d\u919e\u919f\u91a0\u91a1\u91a2\u91a3\u91a4\u91a5\u91a6\u91a7\u91a8\u91a9\u91aa\u91ab\u91ac\u91ad\u91ae\u91af\u91b0\u91b1\u91b2\u91b3\u91b4\u91b5\u91b6\u91b7\u91b8\u91b9\u91ba\u91bb\u91bc\u91bd\u91be\u91bf\u91c0\u91c1\u91c2\u91c3\u91c4\u91c5\u91c6\u91c7\u91c8\u91c9\u91ca\u91cb\u91cc\u91cd\u91ce\u91cf\u91d0\u91d1\u91d2\u91d3\u91d4\u91d5\u91d6\u91d7\u91d8\u91d9\u91da\u91db\u91dc\u91dd\u91de\u91df\u91e0\u91e1\u91e2\u91e3\u91e4\u91e5\u91e6\u91e7\u91e8\u91e9\u91ea\u91eb\u91ec\u91ed\u91ee\u91ef\u91f0\u91f1\u91f2\u91f3\u91f4\u91f5\u91f6\u91f7\u91f8\u91f9\u91fa\u91fb\u91fc\u91fd\u91fe\u91ff\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207\u9208\u9209\u920a\u920b\u920c\u920d\u920e\u920f\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217\u9218\u9219\u921a\u921b\u921c\u921d\u921e\u921f\u9220\u9221\u9222\u9223\u9224\u9225\u9226\u9227\u9228\u9229\u922a\u922b\u922c\u922d\u922e\u922f\u9230\u9231\u9232\u9233\u9234\u9235\u9236\u9237\u9238\u9239\u923a\u923b\u923c\u923d\u923e\u923f\u9240\u9241\u9242\u9243\u9244\u9245\u9246\u9247\u9248\u9249\u924a\u924b\u924c\u924d\u924e\u924f\u9250\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258\u9259\u925a\u925b\u925c\u925d\u925e\u925f\u9260\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268\u9269\u926a\u926b\u926c\u926d\u926e\u926f\u9270\u9271\u9272\u9273\u9274\u9275\u9276\u9277\u9278\u9279\u927a\u927b\u927c\u927d\u927e\u927f\u9280\u9281\u9282\u9283\u9284\u9285\u9286\u9287\u9288\u9289\u928a\u928b\u928c\u928d\u928e\u928f\u9290\u9291\u9292\u9293\u9294\u9295\u9296\u9297\u9298\u9299\u929a\u929b\u929c\u929d\u929e\u929f\u92a0\u92a1\u92a2\u92a3\u92a4\u92a5\u92a6\u92a7\u92a8\u92a9\u92aa\u92ab\u92ac\u92ad\u92ae\u92af\u92b0\u92b1\u92b2\u92b3\u92b4\u92b5\u92b6\u92b7\u92b8\u92b9\u92ba\u92bb\u92bc\u92bd\u92be\u92bf\u92c0\u92c1\u92c2\u92c3\u92c4\u92c5\u92c6\u92c7\u92c8\u92c9\u92ca\u92cb\u92cc\u92cd\u92ce\u92cf\u92d0\u92d1\u92d2\u92d3\u92d4\u92d5\u92d6\u92d7\u92d8\u92d9\u92da\u92db\u92dc\u92dd\u92de\u92df\u92e0\u92e1\u92e2\u92e3\u92e4\u92e5\u92e6\u92e7\u92e8\u92e9\u92ea\u92eb\u92ec\u92ed\u92ee\u92ef\u92f0\u92f1\u92f2\u92f3\u92f4\u92f5\u92f6\u92f7\u92f8\u92f9\u92fa\u92fb\u92fc\u92fd\u92fe\u92ff\u9300\u9301\u9302\u9303\u9304\u9305\u9306\u9307\u9308\u9309\u930a\u930b\u930c\u930d\u930e\u930f\u9310\u9311\u9312\u9313\u9314\u9315\u9316\u9317\u9318\u9319\u931a\u931b\u931c\u931d\u931e\u931f\u9320\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9328\u9329\u932a\u932b\u932c\u932d\u932e\u932f\u9330\u9331\u9332\u9333\u9334\u9335\u9336\u9337\u9338\u9339\u933a\u933b\u933c\u933d\u933e\u933f\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9347\u9348\u9349\u934a\u934b\u934c\u934d\u934e\u934f\u9350\u9351\u9352\u9353\u9354\u9355\u9356\u9357\u9358\u9359\u935a\u935b\u935c\u935d\u935e\u935f\u9360\u9361\u9362\u9363\u9364\u9365\u9366\u9367\u9368\u9369\u936a\u936b\u936c\u936d\u936e\u936f\u9370\u9371\u9372\u9373\u9374\u9375\u9376\u9377\u9378\u9379\u937a\u937b\u937c\u937d\u937e\u937f\u9380\u9381\u9382\u9383\u9384\u9385\u9386\u9387\u9388\u9389\u938a\u938b\u938c\u938d\u938e\u938f\u9390\u9391\u9392\u9393\u9394\u9395\u9396\u9397\u9398\u9399\u939a\u939b\u939c\u939d\u939e\u939f\u93a0\u93a1\u93a2\u93a3\u93a4\u93a5\u93a6\u93a7\u93a8\u93a9\u93aa\u93ab\u93ac\u93ad\u93ae\u93af\u93b0\u93b1\u93b2\u93b3\u93b4\u93b5\u93b6\u93b7\u93b8\u93b9\u93ba\u93bb\u93bc\u93bd\u93be\u93bf\u93c0\u93c1\u93c2\u93c3\u93c4\u93c5\u93c6\u93c7\u93c8\u93c9\u93ca\u93cb\u93cc\u93cd\u93ce\u93cf\u93d0\u93d1\u93d2\u93d3\u93d4\u93d5\u93d6\u93d7\u93d8\u93d9\u93da\u93db\u93dc\u93dd\u93de\u93df\u93e0\u93e1\u93e2\u93e3\u93e4\u93e5\u93e6\u93e7\u93e8\u93e9\u93ea\u93eb\u93ec\u93ed\u93ee\u93ef\u93f0\u93f1\u93f2\u93f3\u93f4\u93f5\u93f6\u93f7\u93f8\u93f9\u93fa\u93fb\u93fc\u93fd\u93fe\u93ff\u9400\u9401\u9402\u9403\u9404\u9405\u9406\u9407\u9408\u9409\u940a\u940b\u940c\u940d\u940e\u940f\u9410\u9411\u9412\u9413\u9414\u9415\u9416\u9417\u9418\u9419\u941a\u941b\u941c\u941d\u941e\u941f\u9420\u9421\u9422\u9423\u9424\u9425\u9426\u9427\u9428\u9429\u942a\u942b\u942c\u942d\u942e\u942f\u9430\u9431\u9432\u9433\u9434\u9435\u9436\u9437\u9438\u9439\u943a\u943b\u943c\u943d\u943e\u943f\u9440\u9441\u9442\u9443\u9444\u9445\u9446\u9447\u9448\u9449\u944a\u944b\u944c\u944d\u944e\u944f\u9450\u9451\u9452\u9453\u9454\u9455\u9456\u9457\u9458\u9459\u945a\u945b\u945c\u945d\u945e\u945f\u9460\u9461\u9462\u9463\u9464\u9465\u9466\u9467\u9468\u9469\u946a\u946b\u946c\u946d\u946e\u946f\u9470\u9471\u9472\u9473\u9474\u9475\u9476\u9477\u9478\u9479\u947a\u947b\u947c\u947d\u947e\u947f\u9480\u9481\u9482\u9483\u9484\u9485\u9486\u9487\u9488\u9489\u948a\u948b\u948c\u948d\u948e\u948f\u9490\u9491\u9492\u9493\u9494\u9495\u9496\u9497\u9498\u9499\u949a\u949b\u949c\u949d\u949e\u949f\u94a0\u94a1\u94a2\u94a3\u94a4\u94a5\u94a6\u94a7\u94a8\u94a9\u94aa\u94ab\u94ac\u94ad\u94ae\u94af\u94b0\u94b1\u94b2\u94b3\u94b4\u94b5\u94b6\u94b7\u94b8\u94b9\u94ba\u94bb\u94bc\u94bd\u94be\u94bf\u94c0\u94c1\u94c2\u94c3\u94c4\u94c5\u94c6\u94c7\u94c8\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u94cf\u94d0\u94d1\u94d2\u94d3\u94d4\u94d5\u94d6\u94d7\u94d8\u94d9\u94da\u94db\u94dc\u94dd\u94de\u94df\u94e0\u94e1\u94e2\u94e3\u94e4\u94e5\u94e6\u94e7\u94e8\u94e9\u94ea\u94eb\u94ec\u94ed\u94ee\u94ef\u94f0\u94f1\u94f2\u94f3\u94f4\u94f5\u94f6\u94f7\u94f8\u94f9\u94fa\u94fb\u94fc\u94fd\u94fe\u94ff\u9500\u9501\u9502\u9503\u9504\u9505\u9506\u9507\u9508\u9509\u950a\u950b\u950c\u950d\u950e\u950f\u9510\u9511\u9512\u9513\u9514\u9515\u9516\u9517\u9518\u9519\u951a\u951b\u951c\u951d\u951e\u951f\u9520\u9521\u9522\u9523\u9524\u9525\u9526\u9527\u9528\u9529\u952a\u952b\u952c\u952d\u952e\u952f\u9530\u9531\u9532\u9533\u9534\u9535\u9536\u9537\u9538\u9539\u953a\u953b\u953c\u953d\u953e\u953f\u9540\u9541\u9542\u9543\u9544\u9545\u9546\u9547\u9548\u9549\u954a\u954b\u954c\u954d\u954e\u954f\u9550\u9551\u9552\u9553\u9554\u9555\u9556\u9557\u9558\u9559\u955a\u955b\u955c\u955d\u955e\u955f\u9560\u9561\u9562\u9563\u9564\u9565\u9566\u9567\u9568\u9569\u956a\u956b\u956c\u956d\u956e\u956f\u9570\u9571\u9572\u9573\u9574\u9575\u9576\u9577\u9578\u9579\u957a\u957b\u957c\u957d\u957e\u957f\u9580\u9581\u9582\u9583\u9584\u9585\u9586\u9587\u9588\u9589\u958a\u958b\u958c\u958d\u958e\u958f\u9590\u9591\u9592\u9593\u9594\u9595\u9596\u9597\u9598\u9599\u959a\u959b\u959c\u959d\u959e\u959f\u95a0\u95a1\u95a2\u95a3\u95a4\u95a5\u95a6\u95a7\u95a8\u95a9\u95aa\u95ab\u95ac\u95ad\u95ae\u95af\u95b0\u95b1\u95b2\u95b3\u95b4\u95b5\u95b6\u95b7\u95b8\u95b9\u95ba\u95bb\u95bc\u95bd\u95be\u95bf\u95c0\u95c1\u95c2\u95c3\u95c4\u95c5\u95c6\u95c7\u95c8\u95c9\u95ca\u95cb\u95cc\u95cd\u95ce\u95cf\u95d0\u95d1\u95d2\u95d3\u95d4\u95d5\u95d6\u95d7\u95d8\u95d9\u95da\u95db\u95dc\u95dd\u95de\u95df\u95e0\u95e1\u95e2\u95e3\u95e4\u95e5\u95e6\u95e7\u95e8\u95e9\u95ea\u95eb\u95ec\u95ed\u95ee\u95ef\u95f0\u95f1\u95f2\u95f3\u95f4\u95f5\u95f6\u95f7\u95f8\u95f9\u95fa\u95fb\u95fc\u95fd\u95fe\u95ff\u9600\u9601\u9602\u9603\u9604\u9605\u9606\u9607\u9608\u9609\u960a\u960b\u960c\u960d\u960e\u960f\u9610\u9611\u9612\u9613\u9614\u9615\u9616\u9617\u9618\u9619\u961a\u961b\u961c\u961d\u961e\u961f\u9620\u9621\u9622\u9623\u9624\u9625\u9626\u9627\u9628\u9629\u962a\u962b\u962c\u962d\u962e\u962f\u9630\u9631\u9632\u9633\u9634\u9635\u9636\u9637\u9638\u9639\u963a\u963b\u963c\u963d\u963e\u963f\u9640\u9641\u9642\u9643\u9644\u9645\u9646\u9647\u9648\u9649\u964a\u964b\u964c\u964d\u964e\u964f\u9650\u9651\u9652\u9653\u9654\u9655\u9656\u9657\u9658\u9659\u965a\u965b\u965c\u965d\u965e\u965f\u9660\u9661\u9662\u9663\u9664\u9665\u9666\u9667\u9668\u9669\u966a\u966b\u966c\u966d\u966e\u966f\u9670\u9671\u9672\u9673\u9674\u9675\u9676\u9677\u9678\u9679\u967a\u967b\u967c\u967d\u967e\u967f\u9680\u9681\u9682\u9683\u9684\u9685\u9686\u9687\u9688\u9689\u968a\u968b\u968c\u968d\u968e\u968f\u9690\u9691\u9692\u9693\u9694\u9695\u9696\u9697\u9698\u9699\u969a\u969b\u969c\u969d\u969e\u969f\u96a0\u96a1\u96a2\u96a3\u96a4\u96a5\u96a6\u96a7\u96a8\u96a9\u96aa\u96ab\u96ac\u96ad\u96ae\u96af\u96b0\u96b1\u96b2\u96b3\u96b4\u96b5\u96b6\u96b7\u96b8\u96b9\u96ba\u96bb\u96bc\u96bd\u96be\u96bf\u96c0\u96c1\u96c2\u96c3\u96c4\u96c5\u96c6\u96c7\u96c8\u96c9\u96ca\u96cb\u96cc\u96cd\u96ce\u96cf\u96d0\u96d1\u96d2\u96d3\u96d4\u96d5\u96d6\u96d7\u96d8\u96d9\u96da\u96db\u96dc\u96dd\u96de\u96df\u96e0\u96e1\u96e2\u96e3\u96e4\u96e5\u96e6\u96e7\u96e8\u96e9\u96ea\u96eb\u96ec\u96ed\u96ee\u96ef\u96f0\u96f1\u96f2\u96f3\u96f4\u96f5\u96f6\u96f7\u96f8\u96f9\u96fa\u96fb\u96fc\u96fd\u96fe\u96ff\u9700\u9701\u9702\u9703\u9704\u9705\u9706\u9707\u9708\u9709\u970a\u970b\u970c\u970d\u970e\u970f\u9710\u9711\u9712\u9713\u9714\u9715\u9716\u9717\u9718\u9719\u971a\u971b\u971c\u971d\u971e\u971f\u9720\u9721\u9722\u9723\u9724\u9725\u9726\u9727\u9728\u9729\u972a\u972b\u972c\u972d\u972e\u972f\u9730\u9731\u9732\u9733\u9734\u9735\u9736\u9737\u9738\u9739\u973a\u973b\u973c\u973d\u973e\u973f\u9740\u9741\u9742\u9743\u9744\u9745\u9746\u9747\u9748\u9749\u974a\u974b\u974c\u974d\u974e\u974f\u9750\u9751\u9752\u9753\u9754\u9755\u9756\u9757\u9758\u9759\u975a\u975b\u975c\u975d\u975e\u975f\u9760\u9761\u9762\u9763\u9764\u9765\u9766\u9767\u9768\u9769\u976a\u976b\u976c\u976d\u976e\u976f\u9770\u9771\u9772\u9773\u9774\u9775\u9776\u9777\u9778\u9779\u977a\u977b\u977c\u977d\u977e\u977f\u9780\u9781\u9782\u9783\u9784\u9785\u9786\u9787\u9788\u9789\u978a\u978b\u978c\u978d\u978e\u978f\u9790\u9791\u9792\u9793\u9794\u9795\u9796\u9797\u9798\u9799\u979a\u979b\u979c\u979d\u979e\u979f\u97a0\u97a1\u97a2\u97a3\u97a4\u97a5\u97a6\u97a7\u97a8\u97a9\u97aa\u97ab\u97ac\u97ad\u97ae\u97af\u97b0\u97b1\u97b2\u97b3\u97b4\u97b5\u97b6\u97b7\u97b8\u97b9\u97ba\u97bb\u97bc\u97bd\u97be\u97bf\u97c0\u97c1\u97c2\u97c3\u97c4\u97c5\u97c6\u97c7\u97c8\u97c9\u97ca\u97cb\u97cc\u97cd\u97ce\u97cf\u97d0\u97d1\u97d2\u97d3\u97d4\u97d5\u97d6\u97d7\u97d8\u97d9\u97da\u97db\u97dc\u97dd\u97de\u97df\u97e0\u97e1\u97e2\u97e3\u97e4\u97e5\u97e6\u97e7\u97e8\u97e9\u97ea\u97eb\u97ec\u97ed\u97ee\u97ef\u97f0\u97f1\u97f2\u97f3\u97f4\u97f5\u97f6\u97f7\u97f8\u97f9\u97fa\u97fb\u97fc\u97fd\u97fe\u97ff\u9800\u9801\u9802\u9803\u9804\u9805\u9806\u9807\u9808\u9809\u980a\u980b\u980c\u980d\u980e\u980f\u9810\u9811\u9812\u9813\u9814\u9815\u9816\u9817\u9818\u9819\u981a\u981b\u981c\u981d\u981e\u981f\u9820\u9821\u9822\u9823\u9824\u9825\u9826\u9827\u9828\u9829\u982a\u982b\u982c\u982d\u982e\u982f\u9830\u9831\u9832\u9833\u9834\u9835\u9836\u9837\u9838\u9839\u983a\u983b\u983c\u983d\u983e\u983f\u9840\u9841\u9842\u9843\u9844\u9845\u9846\u9847\u9848\u9849\u984a\u984b\u984c\u984d\u984e\u984f\u9850\u9851\u9852\u9853\u9854\u9855\u9856\u9857\u9858\u9859\u985a\u985b\u985c\u985d\u985e\u985f\u9860\u9861\u9862\u9863\u9864\u9865\u9866\u9867\u9868\u9869\u986a\u986b\u986c\u986d\u986e\u986f\u9870\u9871\u9872\u9873\u9874\u9875\u9876\u9877\u9878\u9879\u987a\u987b\u987c\u987d\u987e\u987f\u9880\u9881\u9882\u9883\u9884\u9885\u9886\u9887\u9888\u9889\u988a\u988b\u988c\u988d\u988e\u988f\u9890\u9891\u9892\u9893\u9894\u9895\u9896\u9897\u9898\u9899\u989a\u989b\u989c\u989d\u989e\u989f\u98a0\u98a1\u98a2\u98a3\u98a4\u98a5\u98a6\u98a7\u98a8\u98a9\u98aa\u98ab\u98ac\u98ad\u98ae\u98af\u98b0\u98b1\u98b2\u98b3\u98b4\u98b5\u98b6\u98b7\u98b8\u98b9\u98ba\u98bb\u98bc\u98bd\u98be\u98bf\u98c0\u98c1\u98c2\u98c3\u98c4\u98c5\u98c6\u98c7\u98c8\u98c9\u98ca\u98cb\u98cc\u98cd\u98ce\u98cf\u98d0\u98d1\u98d2\u98d3\u98d4\u98d5\u98d6\u98d7\u98d8\u98d9\u98da\u98db\u98dc\u98dd\u98de\u98df\u98e0\u98e1\u98e2\u98e3\u98e4\u98e5\u98e6\u98e7\u98e8\u98e9\u98ea\u98eb\u98ec\u98ed\u98ee\u98ef\u98f0\u98f1\u98f2\u98f3\u98f4\u98f5\u98f6\u98f7\u98f8\u98f9\u98fa\u98fb\u98fc\u98fd\u98fe\u98ff\u9900\u9901\u9902\u9903\u9904\u9905\u9906\u9907\u9908\u9909\u990a\u990b\u990c\u990d\u990e\u990f\u9910\u9911\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919\u991a\u991b\u991c\u991d\u991e\u991f\u9920\u9921\u9922\u9923\u9924\u9925\u9926\u9927\u9928\u9929\u992a\u992b\u992c\u992d\u992e\u992f\u9930\u9931\u9932\u9933\u9934\u9935\u9936\u9937\u9938\u9939\u993a\u993b\u993c\u993d\u993e\u993f\u9940\u9941\u9942\u9943\u9944\u9945\u9946\u9947\u9948\u9949\u994a\u994b\u994c\u994d\u994e\u994f\u9950\u9951\u9952\u9953\u9954\u9955\u9956\u9957\u9958\u9959\u995a\u995b\u995c\u995d\u995e\u995f\u9960\u9961\u9962\u9963\u9964\u9965\u9966\u9967\u9968\u9969\u996a\u996b\u996c\u996d\u996e\u996f\u9970\u9971\u9972\u9973\u9974\u9975\u9976\u9977\u9978\u9979\u997a\u997b\u997c\u997d\u997e\u997f\u9980\u9981\u9982\u9983\u9984\u9985\u9986\u9987\u9988\u9989\u998a\u998b\u998c\u998d\u998e\u998f\u9990\u9991\u9992\u9993\u9994\u9995\u9996\u9997\u9998\u9999\u999a\u999b\u999c\u999d\u999e\u999f\u99a0\u99a1\u99a2\u99a3\u99a4\u99a5\u99a6\u99a7\u99a8\u99a9\u99aa\u99ab\u99ac\u99ad\u99ae\u99af\u99b0\u99b1\u99b2\u99b3\u99b4\u99b5\u99b6\u99b7\u99b8\u99b9\u99ba\u99bb\u99bc\u99bd\u99be\u99bf\u99c0\u99c1\u99c2\u99c3\u99c4\u99c5\u99c6\u99c7\u99c8\u99c9\u99ca\u99cb\u99cc\u99cd\u99ce\u99cf\u99d0\u99d1\u99d2\u99d3\u99d4\u99d5\u99d6\u99d7\u99d8\u99d9\u99da\u99db\u99dc\u99dd\u99de\u99df\u99e0\u99e1\u99e2\u99e3\u99e4\u99e5\u99e6\u99e7\u99e8\u99e9\u99ea\u99eb\u99ec\u99ed\u99ee\u99ef\u99f0\u99f1\u99f2\u99f3\u99f4\u99f5\u99f6\u99f7\u99f8\u99f9\u99fa\u99fb\u99fc\u99fd\u99fe\u99ff\u9a00\u9a01\u9a02\u9a03\u9a04\u9a05\u9a06\u9a07\u9a08\u9a09\u9a0a\u9a0b\u9a0c\u9a0d\u9a0e\u9a0f\u9a10\u9a11\u9a12\u9a13\u9a14\u9a15\u9a16\u9a17\u9a18\u9a19\u9a1a\u9a1b\u9a1c\u9a1d\u9a1e\u9a1f\u9a20\u9a21\u9a22\u9a23\u9a24\u9a25\u9a26\u9a27\u9a28\u9a29\u9a2a\u9a2b\u9a2c\u9a2d\u9a2e\u9a2f\u9a30\u9a31\u9a32\u9a33\u9a34\u9a35\u9a36\u9a37\u9a38\u9a39\u9a3a\u9a3b\u9a3c\u9a3d\u9a3e\u9a3f\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45\u9a46\u9a47\u9a48\u9a49\u9a4a\u9a4b\u9a4c\u9a4d\u9a4e\u9a4f\u9a50\u9a51\u9a52\u9a53\u9a54\u9a55\u9a56\u9a57\u9a58\u9a59\u9a5a\u9a5b\u9a5c\u9a5d\u9a5e\u9a5f\u9a60\u9a61\u9a62\u9a63\u9a64\u9a65\u9a66\u9a67\u9a68\u9a69\u9a6a\u9a6b\u9a6c\u9a6d\u9a6e\u9a6f\u9a70\u9a71\u9a72\u9a73\u9a74\u9a75\u9a76\u9a77\u9a78\u9a79\u9a7a\u9a7b\u9a7c\u9a7d\u9a7e\u9a7f\u9a80\u9a81\u9a82\u9a83\u9a84\u9a85\u9a86\u9a87\u9a88\u9a89\u9a8a\u9a8b\u9a8c\u9a8d\u9a8e\u9a8f\u9a90\u9a91\u9a92\u9a93\u9a94\u9a95\u9a96\u9a97\u9a98\u9a99\u9a9a\u9a9b\u9a9c\u9a9d\u9a9e\u9a9f\u9aa0\u9aa1\u9aa2\u9aa3\u9aa4\u9aa5\u9aa6\u9aa7\u9aa8\u9aa9\u9aaa\u9aab\u9aac\u9aad\u9aae\u9aaf\u9ab0\u9ab1\u9ab2\u9ab3\u9ab4\u9ab5\u9ab6\u9ab7\u9ab8\u9ab9\u9aba\u9abb\u9abc\u9abd\u9abe\u9abf\u9ac0\u9ac1\u9ac2\u9ac3\u9ac4\u9ac5\u9ac6\u9ac7\u9ac8\u9ac9\u9aca\u9acb\u9acc\u9acd\u9ace\u9acf\u9ad0\u9ad1\u9ad2\u9ad3\u9ad4\u9ad5\u9ad6\u9ad7\u9ad8\u9ad9\u9ada\u9adb\u9adc\u9add\u9ade\u9adf\u9ae0\u9ae1\u9ae2\u9ae3\u9ae4\u9ae5\u9ae6\u9ae7\u9ae8\u9ae9\u9aea\u9aeb\u9aec\u9aed\u9aee\u9aef\u9af0\u9af1\u9af2\u9af3\u9af4\u9af5\u9af6\u9af7\u9af8\u9af9\u9afa\u9afb\u9afc\u9afd\u9afe\u9aff\u9b00\u9b01\u9b02\u9b03\u9b04\u9b05\u9b06\u9b07\u9b08\u9b09\u9b0a\u9b0b\u9b0c\u9b0d\u9b0e\u9b0f\u9b10\u9b11\u9b12\u9b13\u9b14\u9b15\u9b16\u9b17\u9b18\u9b19\u9b1a\u9b1b\u9b1c\u9b1d\u9b1e\u9b1f\u9b20\u9b21\u9b22\u9b23\u9b24\u9b25\u9b26\u9b27\u9b28\u9b29\u9b2a\u9b2b\u9b2c\u9b2d\u9b2e\u9b2f\u9b30\u9b31\u9b32\u9b33\u9b34\u9b35\u9b36\u9b37\u9b38\u9b39\u9b3a\u9b3b\u9b3c\u9b3d\u9b3e\u9b3f\u9b40\u9b41\u9b42\u9b43\u9b44\u9b45\u9b46\u9b47\u9b48\u9b49\u9b4a\u9b4b\u9b4c\u9b4d\u9b4e\u9b4f\u9b50\u9b51\u9b52\u9b53\u9b54\u9b55\u9b56\u9b57\u9b58\u9b59\u9b5a\u9b5b\u9b5c\u9b5d\u9b5e\u9b5f\u9b60\u9b61\u9b62\u9b63\u9b64\u9b65\u9b66\u9b67\u9b68\u9b69\u9b6a\u9b6b\u9b6c\u9b6d\u9b6e\u9b6f\u9b70\u9b71\u9b72\u9b73\u9b74\u9b75\u9b76\u9b77\u9b78\u9b79\u9b7a\u9b7b\u9b7c\u9b7d\u9b7e\u9b7f\u9b80\u9b81\u9b82\u9b83\u9b84\u9b85\u9b86\u9b87\u9b88\u9b89\u9b8a\u9b8b\u9b8c\u9b8d\u9b8e\u9b8f\u9b90\u9b91\u9b92\u9b93\u9b94\u9b95\u9b96\u9b97\u9b98\u9b99\u9b9a\u9b9b\u9b9c\u9b9d\u9b9e\u9b9f\u9ba0\u9ba1\u9ba2\u9ba3\u9ba4\u9ba5\u9ba6\u9ba7\u9ba8\u9ba9\u9baa\u9bab\u9bac\u9bad\u9bae\u9baf\u9bb0\u9bb1\u9bb2\u9bb3\u9bb4\u9bb5\u9bb6\u9bb7\u9bb8\u9bb9\u9bba\u9bbb\u9bbc\u9bbd\u9bbe\u9bbf\u9bc0\u9bc1\u9bc2\u9bc3\u9bc4\u9bc5\u9bc6\u9bc7\u9bc8\u9bc9\u9bca\u9bcb\u9bcc\u9bcd\u9bce\u9bcf\u9bd0\u9bd1\u9bd2\u9bd3\u9bd4\u9bd5\u9bd6\u9bd7\u9bd8\u9bd9\u9bda\u9bdb\u9bdc\u9bdd\u9bde\u9bdf\u9be0\u9be1\u9be2\u9be3\u9be4\u9be5\u9be6\u9be7\u9be8\u9be9\u9bea\u9beb\u9bec\u9bed\u9bee\u9bef\u9bf0\u9bf1\u9bf2\u9bf3\u9bf4\u9bf5\u9bf6\u9bf7\u9bf8\u9bf9\u9bfa\u9bfb\u9bfc\u9bfd\u9bfe\u9bff\u9c00\u9c01\u9c02\u9c03\u9c04\u9c05\u9c06\u9c07\u9c08\u9c09\u9c0a\u9c0b\u9c0c\u9c0d\u9c0e\u9c0f\u9c10\u9c11\u9c12\u9c13\u9c14\u9c15\u9c16\u9c17\u9c18\u9c19\u9c1a\u9c1b\u9c1c\u9c1d\u9c1e\u9c1f\u9c20\u9c21\u9c22\u9c23\u9c24\u9c25\u9c26\u9c27\u9c28\u9c29\u9c2a\u9c2b\u9c2c\u9c2d\u9c2e\u9c2f\u9c30\u9c31\u9c32\u9c33\u9c34\u9c35\u9c36\u9c37\u9c38\u9c39\u9c3a\u9c3b\u9c3c\u9c3d\u9c3e\u9c3f\u9c40\u9c41\u9c42\u9c43\u9c44\u9c45\u9c46\u9c47\u9c48\u9c49\u9c4a\u9c4b\u9c4c\u9c4d\u9c4e\u9c4f\u9c50\u9c51\u9c52\u9c53\u9c54\u9c55\u9c56\u9c57\u9c58\u9c59\u9c5a\u9c5b\u9c5c\u9c5d\u9c5e\u9c5f\u9c60\u9c61\u9c62\u9c63\u9c64\u9c65\u9c66\u9c67\u9c68\u9c69\u9c6a\u9c6b\u9c6c\u9c6d\u9c6e\u9c6f\u9c70\u9c71\u9c72\u9c73\u9c74\u9c75\u9c76\u9c77\u9c78\u9c79\u9c7a\u9c7b\u9c7c\u9c7d\u9c7e\u9c7f\u9c80\u9c81\u9c82\u9c83\u9c84\u9c85\u9c86\u9c87\u9c88\u9c89\u9c8a\u9c8b\u9c8c\u9c8d\u9c8e\u9c8f\u9c90\u9c91\u9c92\u9c93\u9c94\u9c95\u9c96\u9c97\u9c98\u9c99\u9c9a\u9c9b\u9c9c\u9c9d\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3\u9ca4\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9caa\u9cab\u9cac\u9cad\u9cae\u9caf\u9cb0\u9cb1\u9cb2\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cb8\u9cb9\u9cba\u9cbb\u9cbc\u9cbd\u9cbe\u9cbf\u9cc0\u9cc1\u9cc2\u9cc3\u9cc4\u9cc5\u9cc6\u9cc7\u9cc8\u9cc9\u9cca\u9ccb\u9ccc\u9ccd\u9cce\u9ccf\u9cd0\u9cd1\u9cd2\u9cd3\u9cd4\u9cd5\u9cd6\u9cd7\u9cd8\u9cd9\u9cda\u9cdb\u9cdc\u9cdd\u9cde\u9cdf\u9ce0\u9ce1\u9ce2\u9ce3\u9ce4\u9ce5\u9ce6\u9ce7\u9ce8\u9ce9\u9cea\u9ceb\u9cec\u9ced\u9cee\u9cef\u9cf0\u9cf1\u9cf2\u9cf3\u9cf4\u9cf5\u9cf6\u9cf7\u9cf8\u9cf9\u9cfa\u9cfb\u9cfc\u9cfd\u9cfe\u9cff\u9d00\u9d01\u9d02\u9d03\u9d04\u9d05\u9d06\u9d07\u9d08\u9d09\u9d0a\u9d0b\u9d0c\u9d0d\u9d0e\u9d0f\u9d10\u9d11\u9d12\u9d13\u9d14\u9d15\u9d16\u9d17\u9d18\u9d19\u9d1a\u9d1b\u9d1c\u9d1d\u9d1e\u9d1f\u9d20\u9d21\u9d22\u9d23\u9d24\u9d25\u9d26\u9d27\u9d28\u9d29\u9d2a\u9d2b\u9d2c\u9d2d\u9d2e\u9d2f\u9d30\u9d31\u9d32\u9d33\u9d34\u9d35\u9d36\u9d37\u9d38\u9d39\u9d3a\u9d3b\u9d3c\u9d3d\u9d3e\u9d3f\u9d40\u9d41\u9d42\u9d43\u9d44\u9d45\u9d46\u9d47\u9d48\u9d49\u9d4a\u9d4b\u9d4c\u9d4d\u9d4e\u9d4f\u9d50\u9d51\u9d52\u9d53\u9d54\u9d55\u9d56\u9d57\u9d58\u9d59\u9d5a\u9d5b\u9d5c\u9d5d\u9d5e\u9d5f\u9d60\u9d61\u9d62\u9d63\u9d64\u9d65\u9d66\u9d67\u9d68\u9d69\u9d6a\u9d6b\u9d6c\u9d6d\u9d6e\u9d6f\u9d70\u9d71\u9d72\u9d73\u9d74\u9d75\u9d76\u9d77\u9d78\u9d79\u9d7a\u9d7b\u9d7c\u9d7d\u9d7e\u9d7f\u9d80\u9d81\u9d82\u9d83\u9d84\u9d85\u9d86\u9d87\u9d88\u9d89\u9d8a\u9d8b\u9d8c\u9d8d\u9d8e\u9d8f\u9d90\u9d91\u9d92\u9d93\u9d94\u9d95\u9d96\u9d97\u9d98\u9d99\u9d9a\u9d9b\u9d9c\u9d9d\u9d9e\u9d9f\u9da0\u9da1\u9da2\u9da3\u9da4\u9da5\u9da6\u9da7\u9da8\u9da9\u9daa\u9dab\u9dac\u9dad\u9dae\u9daf\u9db0\u9db1\u9db2\u9db3\u9db4\u9db5\u9db6\u9db7\u9db8\u9db9\u9dba\u9dbb\u9dbc\u9dbd\u9dbe\u9dbf\u9dc0\u9dc1\u9dc2\u9dc3\u9dc4\u9dc5\u9dc6\u9dc7\u9dc8\u9dc9\u9dca\u9dcb\u9dcc\u9dcd\u9dce\u9dcf\u9dd0\u9dd1\u9dd2\u9dd3\u9dd4\u9dd5\u9dd6\u9dd7\u9dd8\u9dd9\u9dda\u9ddb\u9ddc\u9ddd\u9dde\u9ddf\u9de0\u9de1\u9de2\u9de3\u9de4\u9de5\u9de6\u9de7\u9de8\u9de9\u9dea\u9deb\u9dec\u9ded\u9dee\u9def\u9df0\u9df1\u9df2\u9df3\u9df4\u9df5\u9df6\u9df7\u9df8\u9df9\u9dfa\u9dfb\u9dfc\u9dfd\u9dfe\u9dff\u9e00\u9e01\u9e02\u9e03\u9e04\u9e05\u9e06\u9e07\u9e08\u9e09\u9e0a\u9e0b\u9e0c\u9e0d\u9e0e\u9e0f\u9e10\u9e11\u9e12\u9e13\u9e14\u9e15\u9e16\u9e17\u9e18\u9e19\u9e1a\u9e1b\u9e1c\u9e1d\u9e1e\u9e1f\u9e20\u9e21\u9e22\u9e23\u9e24\u9e25\u9e26\u9e27\u9e28\u9e29\u9e2a\u9e2b\u9e2c\u9e2d\u9e2e\u9e2f\u9e30\u9e31\u9e32\u9e33\u9e34\u9e35\u9e36\u9e37\u9e38\u9e39\u9e3a\u9e3b\u9e3c\u9e3d\u9e3e\u9e3f\u9e40\u9e41\u9e42\u9e43\u9e44\u9e45\u9e46\u9e47\u9e48\u9e49\u9e4a\u9e4b\u9e4c\u9e4d\u9e4e\u9e4f\u9e50\u9e51\u9e52\u9e53\u9e54\u9e55\u9e56\u9e57\u9e58\u9e59\u9e5a\u9e5b\u9e5c\u9e5d\u9e5e\u9e5f\u9e60\u9e61\u9e62\u9e63\u9e64\u9e65\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c\u9e6d\u9e6e\u9e6f\u9e70\u9e71\u9e72\u9e73\u9e74\u9e75\u9e76\u9e77\u9e78\u9e79\u9e7a\u9e7b\u9e7c\u9e7d\u9e7e\u9e7f\u9e80\u9e81\u9e82\u9e83\u9e84\u9e85\u9e86\u9e87\u9e88\u9e89\u9e8a\u9e8b\u9e8c\u9e8d\u9e8e\u9e8f\u9e90\u9e91\u9e92\u9e93\u9e94\u9e95\u9e96\u9e97\u9e98\u9e99\u9e9a\u9e9b\u9e9c\u9e9d\u9e9e\u9e9f\u9ea0\u9ea1\u9ea2\u9ea3\u9ea4\u9ea5\u9ea6\u9ea7\u9ea8\u9ea9\u9eaa\u9eab\u9eac\u9ead\u9eae\u9eaf\u9eb0\u9eb1\u9eb2\u9eb3\u9eb4\u9eb5\u9eb6\u9eb7\u9eb8\u9eb9\u9eba\u9ebb\u9ebc\u9ebd\u9ebe\u9ebf\u9ec0\u9ec1\u9ec2\u9ec3\u9ec4\u9ec5\u9ec6\u9ec7\u9ec8\u9ec9\u9eca\u9ecb\u9ecc\u9ecd\u9ece\u9ecf\u9ed0\u9ed1\u9ed2\u9ed3\u9ed4\u9ed5\u9ed6\u9ed7\u9ed8\u9ed9\u9eda\u9edb\u9edc\u9edd\u9ede\u9edf\u9ee0\u9ee1\u9ee2\u9ee3\u9ee4\u9ee5\u9ee6\u9ee7\u9ee8\u9ee9\u9eea\u9eeb\u9eec\u9eed\u9eee\u9eef\u9ef0\u9ef1\u9ef2\u9ef3\u9ef4\u9ef5\u9ef6\u9ef7\u9ef8\u9ef9\u9efa\u9efb\u9efc\u9efd\u9efe\u9eff\u9f00\u9f01\u9f02\u9f03\u9f04\u9f05\u9f06\u9f07\u9f08\u9f09\u9f0a\u9f0b\u9f0c\u9f0d\u9f0e\u9f0f\u9f10\u9f11\u9f12\u9f13\u9f14\u9f15\u9f16\u9f17\u9f18\u9f19\u9f1a\u9f1b\u9f1c\u9f1d\u9f1e\u9f1f\u9f20\u9f21\u9f22\u9f23\u9f24\u9f25\u9f26\u9f27\u9f28\u9f29\u9f2a\u9f2b\u9f2c\u9f2d\u9f2e\u9f2f\u9f30\u9f31\u9f32\u9f33\u9f34\u9f35\u9f36\u9f37\u9f38\u9f39\u9f3a\u9f3b\u9f3c\u9f3d\u9f3e\u9f3f\u9f40\u9f41\u9f42\u9f43\u9f44\u9f45\u9f46\u9f47\u9f48\u9f49\u9f4a\u9f4b\u9f4c\u9f4d\u9f4e\u9f4f\u9f50\u9f51\u9f52\u9f53\u9f54\u9f55\u9f56\u9f57\u9f58\u9f59\u9f5a\u9f5b\u9f5c\u9f5d\u9f5e\u9f5f\u9f60\u9f61\u9f62\u9f63\u9f64\u9f65\u9f66\u9f67\u9f68\u9f69\u9f6a\u9f6b\u9f6c\u9f6d\u9f6e\u9f6f\u9f70\u9f71\u9f72\u9f73\u9f74\u9f75\u9f76\u9f77\u9f78\u9f79\u9f7a\u9f7b\u9f7c\u9f7d\u9f7e\u9f7f\u9f80\u9f81\u9f82\u9f83\u9f84\u9f85\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8b\u9f8c\u9f8d\u9f8e\u9f8f\u9f90\u9f91\u9f92\u9f93\u9f94\u9f95\u9f96\u9f97\u9f98\u9f99\u9f9a\u9f9b\u9f9c\u9f9d\u9f9e\u9f9f\u9fa0\u9fa1\u9fa2\u9fa3\u9fa4\u9fa5\u9fa6\u9fa7\u9fa8\u9fa9\u9faa\u9fab\u9fac\u9fad\u9fae\u9faf\u9fb0\u9fb1\u9fb2\u9fb3\u9fb4\u9fb5\u9fb6\u9fb7\u9fb8\u9fb9\u9fba\u9fbb\ua000\ua001\ua002\ua003\ua004\ua005\ua006\ua007\ua008\ua009\ua00a\ua00b\ua00c\ua00d\ua00e\ua00f\ua010\ua011\ua012\ua013\ua014\ua016\ua017\ua018\ua019\ua01a\ua01b\ua01c\ua01d\ua01e\ua01f\ua020\ua021\ua022\ua023\ua024\ua025\ua026\ua027\ua028\ua029\ua02a\ua02b\ua02c\ua02d\ua02e\ua02f\ua030\ua031\ua032\ua033\ua034\ua035\ua036\ua037\ua038\ua039\ua03a\ua03b\ua03c\ua03d\ua03e\ua03f\ua040\ua041\ua042\ua043\ua044\ua045\ua046\ua047\ua048\ua049\ua04a\ua04b\ua04c\ua04d\ua04e\ua04f\ua050\ua051\ua052\ua053\ua054\ua055\ua056\ua057\ua058\ua059\ua05a\ua05b\ua05c\ua05d\ua05e\ua05f\ua060\ua061\ua062\ua063\ua064\ua065\ua066\ua067\ua068\ua069\ua06a\ua06b\ua06c\ua06d\ua06e\ua06f\ua070\ua071\ua072\ua073\ua074\ua075\ua076\ua077\ua078\ua079\ua07a\ua07b\ua07c\ua07d\ua07e\ua07f\ua080\ua081\ua082\ua083\ua084\ua085\ua086\ua087\ua088\ua089\ua08a\ua08b\ua08c\ua08d\ua08e\ua08f\ua090\ua091\ua092\ua093\ua094\ua095\ua096\ua097\ua098\ua099\ua09a\ua09b\ua09c\ua09d\ua09e\ua09f\ua0a0\ua0a1\ua0a2\ua0a3\ua0a4\ua0a5\ua0a6\ua0a7\ua0a8\ua0a9\ua0aa\ua0ab\ua0ac\ua0ad\ua0ae\ua0af\ua0b0\ua0b1\ua0b2\ua0b3\ua0b4\ua0b5\ua0b6\ua0b7\ua0b8\ua0b9\ua0ba\ua0bb\ua0bc\ua0bd\ua0be\ua0bf\ua0c0\ua0c1\ua0c2\ua0c3\ua0c4\ua0c5\ua0c6\ua0c7\ua0c8\ua0c9\ua0ca\ua0cb\ua0cc\ua0cd\ua0ce\ua0cf\ua0d0\ua0d1\ua0d2\ua0d3\ua0d4\ua0d5\ua0d6\ua0d7\ua0d8\ua0d9\ua0da\ua0db\ua0dc\ua0dd\ua0de\ua0df\ua0e0\ua0e1\ua0e2\ua0e3\ua0e4\ua0e5\ua0e6\ua0e7\ua0e8\ua0e9\ua0ea\ua0eb\ua0ec\ua0ed\ua0ee\ua0ef\ua0f0\ua0f1\ua0f2\ua0f3\ua0f4\ua0f5\ua0f6\ua0f7\ua0f8\ua0f9\ua0fa\ua0fb\ua0fc\ua0fd\ua0fe\ua0ff\ua100\ua101\ua102\ua103\ua104\ua105\ua106\ua107\ua108\ua109\ua10a\ua10b\ua10c\ua10d\ua10e\ua10f\ua110\ua111\ua112\ua113\ua114\ua115\ua116\ua117\ua118\ua119\ua11a\ua11b\ua11c\ua11d\ua11e\ua11f\ua120\ua121\ua122\ua123\ua124\ua125\ua126\ua127\ua128\ua129\ua12a\ua12b\ua12c\ua12d\ua12e\ua12f\ua130\ua131\ua132\ua133\ua134\ua135\ua136\ua137\ua138\ua139\ua13a\ua13b\ua13c\ua13d\ua13e\ua13f\ua140\ua141\ua142\ua143\ua144\ua145\ua146\ua147\ua148\ua149\ua14a\ua14b\ua14c\ua14d\ua14e\ua14f\ua150\ua151\ua152\ua153\ua154\ua155\ua156\ua157\ua158\ua159\ua15a\ua15b\ua15c\ua15d\ua15e\ua15f\ua160\ua161\ua162\ua163\ua164\ua165\ua166\ua167\ua168\ua169\ua16a\ua16b\ua16c\ua16d\ua16e\ua16f\ua170\ua171\ua172\ua173\ua174\ua175\ua176\ua177\ua178\ua179\ua17a\ua17b\ua17c\ua17d\ua17e\ua17f\ua180\ua181\ua182\ua183\ua184\ua185\ua186\ua187\ua188\ua189\ua18a\ua18b\ua18c\ua18d\ua18e\ua18f\ua190\ua191\ua192\ua193\ua194\ua195\ua196\ua197\ua198\ua199\ua19a\ua19b\ua19c\ua19d\ua19e\ua19f\ua1a0\ua1a1\ua1a2\ua1a3\ua1a4\ua1a5\ua1a6\ua1a7\ua1a8\ua1a9\ua1aa\ua1ab\ua1ac\ua1ad\ua1ae\ua1af\ua1b0\ua1b1\ua1b2\ua1b3\ua1b4\ua1b5\ua1b6\ua1b7\ua1b8\ua1b9\ua1ba\ua1bb\ua1bc\ua1bd\ua1be\ua1bf\ua1c0\ua1c1\ua1c2\ua1c3\ua1c4\ua1c5\ua1c6\ua1c7\ua1c8\ua1c9\ua1ca\ua1cb\ua1cc\ua1cd\ua1ce\ua1cf\ua1d0\ua1d1\ua1d2\ua1d3\ua1d4\ua1d5\ua1d6\ua1d7\ua1d8\ua1d9\ua1da\ua1db\ua1dc\ua1dd\ua1de\ua1df\ua1e0\ua1e1\ua1e2\ua1e3\ua1e4\ua1e5\ua1e6\ua1e7\ua1e8\ua1e9\ua1ea\ua1eb\ua1ec\ua1ed\ua1ee\ua1ef\ua1f0\ua1f1\ua1f2\ua1f3\ua1f4\ua1f5\ua1f6\ua1f7\ua1f8\ua1f9\ua1fa\ua1fb\ua1fc\ua1fd\ua1fe\ua1ff\ua200\ua201\ua202\ua203\ua204\ua205\ua206\ua207\ua208\ua209\ua20a\ua20b\ua20c\ua20d\ua20e\ua20f\ua210\ua211\ua212\ua213\ua214\ua215\ua216\ua217\ua218\ua219\ua21a\ua21b\ua21c\ua21d\ua21e\ua21f\ua220\ua221\ua222\ua223\ua224\ua225\ua226\ua227\ua228\ua229\ua22a\ua22b\ua22c\ua22d\ua22e\ua22f\ua230\ua231\ua232\ua233\ua234\ua235\ua236\ua237\ua238\ua239\ua23a\ua23b\ua23c\ua23d\ua23e\ua23f\ua240\ua241\ua242\ua243\ua244\ua245\ua246\ua247\ua248\ua249\ua24a\ua24b\ua24c\ua24d\ua24e\ua24f\ua250\ua251\ua252\ua253\ua254\ua255\ua256\ua257\ua258\ua259\ua25a\ua25b\ua25c\ua25d\ua25e\ua25f\ua260\ua261\ua262\ua263\ua264\ua265\ua266\ua267\ua268\ua269\ua26a\ua26b\ua26c\ua26d\ua26e\ua26f\ua270\ua271\ua272\ua273\ua274\ua275\ua276\ua277\ua278\ua279\ua27a\ua27b\ua27c\ua27d\ua27e\ua27f\ua280\ua281\ua282\ua283\ua284\ua285\ua286\ua287\ua288\ua289\ua28a\ua28b\ua28c\ua28d\ua28e\ua28f\ua290\ua291\ua292\ua293\ua294\ua295\ua296\ua297\ua298\ua299\ua29a\ua29b\ua29c\ua29d\ua29e\ua29f\ua2a0\ua2a1\ua2a2\ua2a3\ua2a4\ua2a5\ua2a6\ua2a7\ua2a8\ua2a9\ua2aa\ua2ab\ua2ac\ua2ad\ua2ae\ua2af\ua2b0\ua2b1\ua2b2\ua2b3\ua2b4\ua2b5\ua2b6\ua2b7\ua2b8\ua2b9\ua2ba\ua2bb\ua2bc\ua2bd\ua2be\ua2bf\ua2c0\ua2c1\ua2c2\ua2c3\ua2c4\ua2c5\ua2c6\ua2c7\ua2c8\ua2c9\ua2ca\ua2cb\ua2cc\ua2cd\ua2ce\ua2cf\ua2d0\ua2d1\ua2d2\ua2d3\ua2d4\ua2d5\ua2d6\ua2d7\ua2d8\ua2d9\ua2da\ua2db\ua2dc\ua2dd\ua2de\ua2df\ua2e0\ua2e1\ua2e2\ua2e3\ua2e4\ua2e5\ua2e6\ua2e7\ua2e8\ua2e9\ua2ea\ua2eb\ua2ec\ua2ed\ua2ee\ua2ef\ua2f0\ua2f1\ua2f2\ua2f3\ua2f4\ua2f5\ua2f6\ua2f7\ua2f8\ua2f9\ua2fa\ua2fb\ua2fc\ua2fd\ua2fe\ua2ff\ua300\ua301\ua302\ua303\ua304\ua305\ua306\ua307\ua308\ua309\ua30a\ua30b\ua30c\ua30d\ua30e\ua30f\ua310\ua311\ua312\ua313\ua314\ua315\ua316\ua317\ua318\ua319\ua31a\ua31b\ua31c\ua31d\ua31e\ua31f\ua320\ua321\ua322\ua323\ua324\ua325\ua326\ua327\ua328\ua329\ua32a\ua32b\ua32c\ua32d\ua32e\ua32f\ua330\ua331\ua332\ua333\ua334\ua335\ua336\ua337\ua338\ua339\ua33a\ua33b\ua33c\ua33d\ua33e\ua33f\ua340\ua341\ua342\ua343\ua344\ua345\ua346\ua347\ua348\ua349\ua34a\ua34b\ua34c\ua34d\ua34e\ua34f\ua350\ua351\ua352\ua353\ua354\ua355\ua356\ua357\ua358\ua359\ua35a\ua35b\ua35c\ua35d\ua35e\ua35f\ua360\ua361\ua362\ua363\ua364\ua365\ua366\ua367\ua368\ua369\ua36a\ua36b\ua36c\ua36d\ua36e\ua36f\ua370\ua371\ua372\ua373\ua374\ua375\ua376\ua377\ua378\ua379\ua37a\ua37b\ua37c\ua37d\ua37e\ua37f\ua380\ua381\ua382\ua383\ua384\ua385\ua386\ua387\ua388\ua389\ua38a\ua38b\ua38c\ua38d\ua38e\ua38f\ua390\ua391\ua392\ua393\ua394\ua395\ua396\ua397\ua398\ua399\ua39a\ua39b\ua39c\ua39d\ua39e\ua39f\ua3a0\ua3a1\ua3a2\ua3a3\ua3a4\ua3a5\ua3a6\ua3a7\ua3a8\ua3a9\ua3aa\ua3ab\ua3ac\ua3ad\ua3ae\ua3af\ua3b0\ua3b1\ua3b2\ua3b3\ua3b4\ua3b5\ua3b6\ua3b7\ua3b8\ua3b9\ua3ba\ua3bb\ua3bc\ua3bd\ua3be\ua3bf\ua3c0\ua3c1\ua3c2\ua3c3\ua3c4\ua3c5\ua3c6\ua3c7\ua3c8\ua3c9\ua3ca\ua3cb\ua3cc\ua3cd\ua3ce\ua3cf\ua3d0\ua3d1\ua3d2\ua3d3\ua3d4\ua3d5\ua3d6\ua3d7\ua3d8\ua3d9\ua3da\ua3db\ua3dc\ua3dd\ua3de\ua3df\ua3e0\ua3e1\ua3e2\ua3e3\ua3e4\ua3e5\ua3e6\ua3e7\ua3e8\ua3e9\ua3ea\ua3eb\ua3ec\ua3ed\ua3ee\ua3ef\ua3f0\ua3f1\ua3f2\ua3f3\ua3f4\ua3f5\ua3f6\ua3f7\ua3f8\ua3f9\ua3fa\ua3fb\ua3fc\ua3fd\ua3fe\ua3ff\ua400\ua401\ua402\ua403\ua404\ua405\ua406\ua407\ua408\ua409\ua40a\ua40b\ua40c\ua40d\ua40e\ua40f\ua410\ua411\ua412\ua413\ua414\ua415\ua416\ua417\ua418\ua419\ua41a\ua41b\ua41c\ua41d\ua41e\ua41f\ua420\ua421\ua422\ua423\ua424\ua425\ua426\ua427\ua428\ua429\ua42a\ua42b\ua42c\ua42d\ua42e\ua42f\ua430\ua431\ua432\ua433\ua434\ua435\ua436\ua437\ua438\ua439\ua43a\ua43b\ua43c\ua43d\ua43e\ua43f\ua440\ua441\ua442\ua443\ua444\ua445\ua446\ua447\ua448\ua449\ua44a\ua44b\ua44c\ua44d\ua44e\ua44f\ua450\ua451\ua452\ua453\ua454\ua455\ua456\ua457\ua458\ua459\ua45a\ua45b\ua45c\ua45d\ua45e\ua45f\ua460\ua461\ua462\ua463\ua464\ua465\ua466\ua467\ua468\ua469\ua46a\ua46b\ua46c\ua46d\ua46e\ua46f\ua470\ua471\ua472\ua473\ua474\ua475\ua476\ua477\ua478\ua479\ua47a\ua47b\ua47c\ua47d\ua47e\ua47f\ua480\ua481\ua482\ua483\ua484\ua485\ua486\ua487\ua488\ua489\ua48a\ua48b\ua48c\ua800\ua801\ua803\ua804\ua805\ua807\ua808\ua809\ua80a\ua80c\ua80d\ua80e\ua80f\ua810\ua811\ua812\ua813\ua814\ua815\ua816\ua817\ua818\ua819\ua81a\ua81b\ua81c\ua81d\ua81e\ua81f\ua820\ua821\ua822\uac00\uac01\uac02\uac03\uac04\uac05\uac06\uac07\uac08\uac09\uac0a\uac0b\uac0c\uac0d\uac0e\uac0f\uac10\uac11\uac12\uac13\uac14\uac15\uac16\uac17\uac18\uac19\uac1a\uac1b\uac1c\uac1d\uac1e\uac1f\uac20\uac21\uac22\uac23\uac24\uac25\uac26\uac27\uac28\uac29\uac2a\uac2b\uac2c\uac2d\uac2e\uac2f\uac30\uac31\uac32\uac33\uac34\uac35\uac36\uac37\uac38\uac39\uac3a\uac3b\uac3c\uac3d\uac3e\uac3f\uac40\uac41\uac42\uac43\uac44\uac45\uac46\uac47\uac48\uac49\uac4a\uac4b\uac4c\uac4d\uac4e\uac4f\uac50\uac51\uac52\uac53\uac54\uac55\uac56\uac57\uac58\uac59\uac5a\uac5b\uac5c\uac5d\uac5e\uac5f\uac60\uac61\uac62\uac63\uac64\uac65\uac66\uac67\uac68\uac69\uac6a\uac6b\uac6c\uac6d\uac6e\uac6f\uac70\uac71\uac72\uac73\uac74\uac75\uac76\uac77\uac78\uac79\uac7a\uac7b\uac7c\uac7d\uac7e\uac7f\uac80\uac81\uac82\uac83\uac84\uac85\uac86\uac87\uac88\uac89\uac8a\uac8b\uac8c\uac8d\uac8e\uac8f\uac90\uac91\uac92\uac93\uac94\uac95\uac96\uac97\uac98\uac99\uac9a\uac9b\uac9c\uac9d\uac9e\uac9f\uaca0\uaca1\uaca2\uaca3\uaca4\uaca5\uaca6\uaca7\uaca8\uaca9\uacaa\uacab\uacac\uacad\uacae\uacaf\uacb0\uacb1\uacb2\uacb3\uacb4\uacb5\uacb6\uacb7\uacb8\uacb9\uacba\uacbb\uacbc\uacbd\uacbe\uacbf\uacc0\uacc1\uacc2\uacc3\uacc4\uacc5\uacc6\uacc7\uacc8\uacc9\uacca\uaccb\uaccc\uaccd\uacce\uaccf\uacd0\uacd1\uacd2\uacd3\uacd4\uacd5\uacd6\uacd7\uacd8\uacd9\uacda\uacdb\uacdc\uacdd\uacde\uacdf\uace0\uace1\uace2\uace3\uace4\uace5\uace6\uace7\uace8\uace9\uacea\uaceb\uacec\uaced\uacee\uacef\uacf0\uacf1\uacf2\uacf3\uacf4\uacf5\uacf6\uacf7\uacf8\uacf9\uacfa\uacfb\uacfc\uacfd\uacfe\uacff\uad00\uad01\uad02\uad03\uad04\uad05\uad06\uad07\uad08\uad09\uad0a\uad0b\uad0c\uad0d\uad0e\uad0f\uad10\uad11\uad12\uad13\uad14\uad15\uad16\uad17\uad18\uad19\uad1a\uad1b\uad1c\uad1d\uad1e\uad1f\uad20\uad21\uad22\uad23\uad24\uad25\uad26\uad27\uad28\uad29\uad2a\uad2b\uad2c\uad2d\uad2e\uad2f\uad30\uad31\uad32\uad33\uad34\uad35\uad36\uad37\uad38\uad39\uad3a\uad3b\uad3c\uad3d\uad3e\uad3f\uad40\uad41\uad42\uad43\uad44\uad45\uad46\uad47\uad48\uad49\uad4a\uad4b\uad4c\uad4d\uad4e\uad4f\uad50\uad51\uad52\uad53\uad54\uad55\uad56\uad57\uad58\uad59\uad5a\uad5b\uad5c\uad5d\uad5e\uad5f\uad60\uad61\uad62\uad63\uad64\uad65\uad66\uad67\uad68\uad69\uad6a\uad6b\uad6c\uad6d\uad6e\uad6f\uad70\uad71\uad72\uad73\uad74\uad75\uad76\uad77\uad78\uad79\uad7a\uad7b\uad7c\uad7d\uad7e\uad7f\uad80\uad81\uad82\uad83\uad84\uad85\uad86\uad87\uad88\uad89\uad8a\uad8b\uad8c\uad8d\uad8e\uad8f\uad90\uad91\uad92\uad93\uad94\uad95\uad96\uad97\uad98\uad99\uad9a\uad9b\uad9c\uad9d\uad9e\uad9f\uada0\uada1\uada2\uada3\uada4\uada5\uada6\uada7\uada8\uada9\uadaa\uadab\uadac\uadad\uadae\uadaf\uadb0\uadb1\uadb2\uadb3\uadb4\uadb5\uadb6\uadb7\uadb8\uadb9\uadba\uadbb\uadbc\uadbd\uadbe\uadbf\uadc0\uadc1\uadc2\uadc3\uadc4\uadc5\uadc6\uadc7\uadc8\uadc9\uadca\uadcb\uadcc\uadcd\uadce\uadcf\uadd0\uadd1\uadd2\uadd3\uadd4\uadd5\uadd6\uadd7\uadd8\uadd9\uadda\uaddb\uaddc\uaddd\uadde\uaddf\uade0\uade1\uade2\uade3\uade4\uade5\uade6\uade7\uade8\uade9\uadea\uadeb\uadec\uaded\uadee\uadef\uadf0\uadf1\uadf2\uadf3\uadf4\uadf5\uadf6\uadf7\uadf8\uadf9\uadfa\uadfb\uadfc\uadfd\uadfe\uadff\uae00\uae01\uae02\uae03\uae04\uae05\uae06\uae07\uae08\uae09\uae0a\uae0b\uae0c\uae0d\uae0e\uae0f\uae10\uae11\uae12\uae13\uae14\uae15\uae16\uae17\uae18\uae19\uae1a\uae1b\uae1c\uae1d\uae1e\uae1f\uae20\uae21\uae22\uae23\uae24\uae25\uae26\uae27\uae28\uae29\uae2a\uae2b\uae2c\uae2d\uae2e\uae2f\uae30\uae31\uae32\uae33\uae34\uae35\uae36\uae37\uae38\uae39\uae3a\uae3b\uae3c\uae3d\uae3e\uae3f\uae40\uae41\uae42\uae43\uae44\uae45\uae46\uae47\uae48\uae49\uae4a\uae4b\uae4c\uae4d\uae4e\uae4f\uae50\uae51\uae52\uae53\uae54\uae55\uae56\uae57\uae58\uae59\uae5a\uae5b\uae5c\uae5d\uae5e\uae5f\uae60\uae61\uae62\uae63\uae64\uae65\uae66\uae67\uae68\uae69\uae6a\uae6b\uae6c\uae6d\uae6e\uae6f\uae70\uae71\uae72\uae73\uae74\uae75\uae76\uae77\uae78\uae79\uae7a\uae7b\uae7c\uae7d\uae7e\uae7f\uae80\uae81\uae82\uae83\uae84\uae85\uae86\uae87\uae88\uae89\uae8a\uae8b\uae8c\uae8d\uae8e\uae8f\uae90\uae91\uae92\uae93\uae94\uae95\uae96\uae97\uae98\uae99\uae9a\uae9b\uae9c\uae9d\uae9e\uae9f\uaea0\uaea1\uaea2\uaea3\uaea4\uaea5\uaea6\uaea7\uaea8\uaea9\uaeaa\uaeab\uaeac\uaead\uaeae\uaeaf\uaeb0\uaeb1\uaeb2\uaeb3\uaeb4\uaeb5\uaeb6\uaeb7\uaeb8\uaeb9\uaeba\uaebb\uaebc\uaebd\uaebe\uaebf\uaec0\uaec1\uaec2\uaec3\uaec4\uaec5\uaec6\uaec7\uaec8\uaec9\uaeca\uaecb\uaecc\uaecd\uaece\uaecf\uaed0\uaed1\uaed2\uaed3\uaed4\uaed5\uaed6\uaed7\uaed8\uaed9\uaeda\uaedb\uaedc\uaedd\uaede\uaedf\uaee0\uaee1\uaee2\uaee3\uaee4\uaee5\uaee6\uaee7\uaee8\uaee9\uaeea\uaeeb\uaeec\uaeed\uaeee\uaeef\uaef0\uaef1\uaef2\uaef3\uaef4\uaef5\uaef6\uaef7\uaef8\uaef9\uaefa\uaefb\uaefc\uaefd\uaefe\uaeff\uaf00\uaf01\uaf02\uaf03\uaf04\uaf05\uaf06\uaf07\uaf08\uaf09\uaf0a\uaf0b\uaf0c\uaf0d\uaf0e\uaf0f\uaf10\uaf11\uaf12\uaf13\uaf14\uaf15\uaf16\uaf17\uaf18\uaf19\uaf1a\uaf1b\uaf1c\uaf1d\uaf1e\uaf1f\uaf20\uaf21\uaf22\uaf23\uaf24\uaf25\uaf26\uaf27\uaf28\uaf29\uaf2a\uaf2b\uaf2c\uaf2d\uaf2e\uaf2f\uaf30\uaf31\uaf32\uaf33\uaf34\uaf35\uaf36\uaf37\uaf38\uaf39\uaf3a\uaf3b\uaf3c\uaf3d\uaf3e\uaf3f\uaf40\uaf41\uaf42\uaf43\uaf44\uaf45\uaf46\uaf47\uaf48\uaf49\uaf4a\uaf4b\uaf4c\uaf4d\uaf4e\uaf4f\uaf50\uaf51\uaf52\uaf53\uaf54\uaf55\uaf56\uaf57\uaf58\uaf59\uaf5a\uaf5b\uaf5c\uaf5d\uaf5e\uaf5f\uaf60\uaf61\uaf62\uaf63\uaf64\uaf65\uaf66\uaf67\uaf68\uaf69\uaf6a\uaf6b\uaf6c\uaf6d\uaf6e\uaf6f\uaf70\uaf71\uaf72\uaf73\uaf74\uaf75\uaf76\uaf77\uaf78\uaf79\uaf7a\uaf7b\uaf7c\uaf7d\uaf7e\uaf7f\uaf80\uaf81\uaf82\uaf83\uaf84\uaf85\uaf86\uaf87\uaf88\uaf89\uaf8a\uaf8b\uaf8c\uaf8d\uaf8e\uaf8f\uaf90\uaf91\uaf92\uaf93\uaf94\uaf95\uaf96\uaf97\uaf98\uaf99\uaf9a\uaf9b\uaf9c\uaf9d\uaf9e\uaf9f\uafa0\uafa1\uafa2\uafa3\uafa4\uafa5\uafa6\uafa7\uafa8\uafa9\uafaa\uafab\uafac\uafad\uafae\uafaf\uafb0\uafb1\uafb2\uafb3\uafb4\uafb5\uafb6\uafb7\uafb8\uafb9\uafba\uafbb\uafbc\uafbd\uafbe\uafbf\uafc0\uafc1\uafc2\uafc3\uafc4\uafc5\uafc6\uafc7\uafc8\uafc9\uafca\uafcb\uafcc\uafcd\uafce\uafcf\uafd0\uafd1\uafd2\uafd3\uafd4\uafd5\uafd6\uafd7\uafd8\uafd9\uafda\uafdb\uafdc\uafdd\uafde\uafdf\uafe0\uafe1\uafe2\uafe3\uafe4\uafe5\uafe6\uafe7\uafe8\uafe9\uafea\uafeb\uafec\uafed\uafee\uafef\uaff0\uaff1\uaff2\uaff3\uaff4\uaff5\uaff6\uaff7\uaff8\uaff9\uaffa\uaffb\uaffc\uaffd\uaffe\uafff\ub000\ub001\ub002\ub003\ub004\ub005\ub006\ub007\ub008\ub009\ub00a\ub00b\ub00c\ub00d\ub00e\ub00f\ub010\ub011\ub012\ub013\ub014\ub015\ub016\ub017\ub018\ub019\ub01a\ub01b\ub01c\ub01d\ub01e\ub01f\ub020\ub021\ub022\ub023\ub024\ub025\ub026\ub027\ub028\ub029\ub02a\ub02b\ub02c\ub02d\ub02e\ub02f\ub030\ub031\ub032\ub033\ub034\ub035\ub036\ub037\ub038\ub039\ub03a\ub03b\ub03c\ub03d\ub03e\ub03f\ub040\ub041\ub042\ub043\ub044\ub045\ub046\ub047\ub048\ub049\ub04a\ub04b\ub04c\ub04d\ub04e\ub04f\ub050\ub051\ub052\ub053\ub054\ub055\ub056\ub057\ub058\ub059\ub05a\ub05b\ub05c\ub05d\ub05e\ub05f\ub060\ub061\ub062\ub063\ub064\ub065\ub066\ub067\ub068\ub069\ub06a\ub06b\ub06c\ub06d\ub06e\ub06f\ub070\ub071\ub072\ub073\ub074\ub075\ub076\ub077\ub078\ub079\ub07a\ub07b\ub07c\ub07d\ub07e\ub07f\ub080\ub081\ub082\ub083\ub084\ub085\ub086\ub087\ub088\ub089\ub08a\ub08b\ub08c\ub08d\ub08e\ub08f\ub090\ub091\ub092\ub093\ub094\ub095\ub096\ub097\ub098\ub099\ub09a\ub09b\ub09c\ub09d\ub09e\ub09f\ub0a0\ub0a1\ub0a2\ub0a3\ub0a4\ub0a5\ub0a6\ub0a7\ub0a8\ub0a9\ub0aa\ub0ab\ub0ac\ub0ad\ub0ae\ub0af\ub0b0\ub0b1\ub0b2\ub0b3\ub0b4\ub0b5\ub0b6\ub0b7\ub0b8\ub0b9\ub0ba\ub0bb\ub0bc\ub0bd\ub0be\ub0bf\ub0c0\ub0c1\ub0c2\ub0c3\ub0c4\ub0c5\ub0c6\ub0c7\ub0c8\ub0c9\ub0ca\ub0cb\ub0cc\ub0cd\ub0ce\ub0cf\ub0d0\ub0d1\ub0d2\ub0d3\ub0d4\ub0d5\ub0d6\ub0d7\ub0d8\ub0d9\ub0da\ub0db\ub0dc\ub0dd\ub0de\ub0df\ub0e0\ub0e1\ub0e2\ub0e3\ub0e4\ub0e5\ub0e6\ub0e7\ub0e8\ub0e9\ub0ea\ub0eb\ub0ec\ub0ed\ub0ee\ub0ef\ub0f0\ub0f1\ub0f2\ub0f3\ub0f4\ub0f5\ub0f6\ub0f7\ub0f8\ub0f9\ub0fa\ub0fb\ub0fc\ub0fd\ub0fe\ub0ff\ub100\ub101\ub102\ub103\ub104\ub105\ub106\ub107\ub108\ub109\ub10a\ub10b\ub10c\ub10d\ub10e\ub10f\ub110\ub111\ub112\ub113\ub114\ub115\ub116\ub117\ub118\ub119\ub11a\ub11b\ub11c\ub11d\ub11e\ub11f\ub120\ub121\ub122\ub123\ub124\ub125\ub126\ub127\ub128\ub129\ub12a\ub12b\ub12c\ub12d\ub12e\ub12f\ub130\ub131\ub132\ub133\ub134\ub135\ub136\ub137\ub138\ub139\ub13a\ub13b\ub13c\ub13d\ub13e\ub13f\ub140\ub141\ub142\ub143\ub144\ub145\ub146\ub147\ub148\ub149\ub14a\ub14b\ub14c\ub14d\ub14e\ub14f\ub150\ub151\ub152\ub153\ub154\ub155\ub156\ub157\ub158\ub159\ub15a\ub15b\ub15c\ub15d\ub15e\ub15f\ub160\ub161\ub162\ub163\ub164\ub165\ub166\ub167\ub168\ub169\ub16a\ub16b\ub16c\ub16d\ub16e\ub16f\ub170\ub171\ub172\ub173\ub174\ub175\ub176\ub177\ub178\ub179\ub17a\ub17b\ub17c\ub17d\ub17e\ub17f\ub180\ub181\ub182\ub183\ub184\ub185\ub186\ub187\ub188\ub189\ub18a\ub18b\ub18c\ub18d\ub18e\ub18f\ub190\ub191\ub192\ub193\ub194\ub195\ub196\ub197\ub198\ub199\ub19a\ub19b\ub19c\ub19d\ub19e\ub19f\ub1a0\ub1a1\ub1a2\ub1a3\ub1a4\ub1a5\ub1a6\ub1a7\ub1a8\ub1a9\ub1aa\ub1ab\ub1ac\ub1ad\ub1ae\ub1af\ub1b0\ub1b1\ub1b2\ub1b3\ub1b4\ub1b5\ub1b6\ub1b7\ub1b8\ub1b9\ub1ba\ub1bb\ub1bc\ub1bd\ub1be\ub1bf\ub1c0\ub1c1\ub1c2\ub1c3\ub1c4\ub1c5\ub1c6\ub1c7\ub1c8\ub1c9\ub1ca\ub1cb\ub1cc\ub1cd\ub1ce\ub1cf\ub1d0\ub1d1\ub1d2\ub1d3\ub1d4\ub1d5\ub1d6\ub1d7\ub1d8\ub1d9\ub1da\ub1db\ub1dc\ub1dd\ub1de\ub1df\ub1e0\ub1e1\ub1e2\ub1e3\ub1e4\ub1e5\ub1e6\ub1e7\ub1e8\ub1e9\ub1ea\ub1eb\ub1ec\ub1ed\ub1ee\ub1ef\ub1f0\ub1f1\ub1f2\ub1f3\ub1f4\ub1f5\ub1f6\ub1f7\ub1f8\ub1f9\ub1fa\ub1fb\ub1fc\ub1fd\ub1fe\ub1ff\ub200\ub201\ub202\ub203\ub204\ub205\ub206\ub207\ub208\ub209\ub20a\ub20b\ub20c\ub20d\ub20e\ub20f\ub210\ub211\ub212\ub213\ub214\ub215\ub216\ub217\ub218\ub219\ub21a\ub21b\ub21c\ub21d\ub21e\ub21f\ub220\ub221\ub222\ub223\ub224\ub225\ub226\ub227\ub228\ub229\ub22a\ub22b\ub22c\ub22d\ub22e\ub22f\ub230\ub231\ub232\ub233\ub234\ub235\ub236\ub237\ub238\ub239\ub23a\ub23b\ub23c\ub23d\ub23e\ub23f\ub240\ub241\ub242\ub243\ub244\ub245\ub246\ub247\ub248\ub249\ub24a\ub24b\ub24c\ub24d\ub24e\ub24f\ub250\ub251\ub252\ub253\ub254\ub255\ub256\ub257\ub258\ub259\ub25a\ub25b\ub25c\ub25d\ub25e\ub25f\ub260\ub261\ub262\ub263\ub264\ub265\ub266\ub267\ub268\ub269\ub26a\ub26b\ub26c\ub26d\ub26e\ub26f\ub270\ub271\ub272\ub273\ub274\ub275\ub276\ub277\ub278\ub279\ub27a\ub27b\ub27c\ub27d\ub27e\ub27f\ub280\ub281\ub282\ub283\ub284\ub285\ub286\ub287\ub288\ub289\ub28a\ub28b\ub28c\ub28d\ub28e\ub28f\ub290\ub291\ub292\ub293\ub294\ub295\ub296\ub297\ub298\ub299\ub29a\ub29b\ub29c\ub29d\ub29e\ub29f\ub2a0\ub2a1\ub2a2\ub2a3\ub2a4\ub2a5\ub2a6\ub2a7\ub2a8\ub2a9\ub2aa\ub2ab\ub2ac\ub2ad\ub2ae\ub2af\ub2b0\ub2b1\ub2b2\ub2b3\ub2b4\ub2b5\ub2b6\ub2b7\ub2b8\ub2b9\ub2ba\ub2bb\ub2bc\ub2bd\ub2be\ub2bf\ub2c0\ub2c1\ub2c2\ub2c3\ub2c4\ub2c5\ub2c6\ub2c7\ub2c8\ub2c9\ub2ca\ub2cb\ub2cc\ub2cd\ub2ce\ub2cf\ub2d0\ub2d1\ub2d2\ub2d3\ub2d4\ub2d5\ub2d6\ub2d7\ub2d8\ub2d9\ub2da\ub2db\ub2dc\ub2dd\ub2de\ub2df\ub2e0\ub2e1\ub2e2\ub2e3\ub2e4\ub2e5\ub2e6\ub2e7\ub2e8\ub2e9\ub2ea\ub2eb\ub2ec\ub2ed\ub2ee\ub2ef\ub2f0\ub2f1\ub2f2\ub2f3\ub2f4\ub2f5\ub2f6\ub2f7\ub2f8\ub2f9\ub2fa\ub2fb\ub2fc\ub2fd\ub2fe\ub2ff\ub300\ub301\ub302\ub303\ub304\ub305\ub306\ub307\ub308\ub309\ub30a\ub30b\ub30c\ub30d\ub30e\ub30f\ub310\ub311\ub312\ub313\ub314\ub315\ub316\ub317\ub318\ub319\ub31a\ub31b\ub31c\ub31d\ub31e\ub31f\ub320\ub321\ub322\ub323\ub324\ub325\ub326\ub327\ub328\ub329\ub32a\ub32b\ub32c\ub32d\ub32e\ub32f\ub330\ub331\ub332\ub333\ub334\ub335\ub336\ub337\ub338\ub339\ub33a\ub33b\ub33c\ub33d\ub33e\ub33f\ub340\ub341\ub342\ub343\ub344\ub345\ub346\ub347\ub348\ub349\ub34a\ub34b\ub34c\ub34d\ub34e\ub34f\ub350\ub351\ub352\ub353\ub354\ub355\ub356\ub357\ub358\ub359\ub35a\ub35b\ub35c\ub35d\ub35e\ub35f\ub360\ub361\ub362\ub363\ub364\ub365\ub366\ub367\ub368\ub369\ub36a\ub36b\ub36c\ub36d\ub36e\ub36f\ub370\ub371\ub372\ub373\ub374\ub375\ub376\ub377\ub378\ub379\ub37a\ub37b\ub37c\ub37d\ub37e\ub37f\ub380\ub381\ub382\ub383\ub384\ub385\ub386\ub387\ub388\ub389\ub38a\ub38b\ub38c\ub38d\ub38e\ub38f\ub390\ub391\ub392\ub393\ub394\ub395\ub396\ub397\ub398\ub399\ub39a\ub39b\ub39c\ub39d\ub39e\ub39f\ub3a0\ub3a1\ub3a2\ub3a3\ub3a4\ub3a5\ub3a6\ub3a7\ub3a8\ub3a9\ub3aa\ub3ab\ub3ac\ub3ad\ub3ae\ub3af\ub3b0\ub3b1\ub3b2\ub3b3\ub3b4\ub3b5\ub3b6\ub3b7\ub3b8\ub3b9\ub3ba\ub3bb\ub3bc\ub3bd\ub3be\ub3bf\ub3c0\ub3c1\ub3c2\ub3c3\ub3c4\ub3c5\ub3c6\ub3c7\ub3c8\ub3c9\ub3ca\ub3cb\ub3cc\ub3cd\ub3ce\ub3cf\ub3d0\ub3d1\ub3d2\ub3d3\ub3d4\ub3d5\ub3d6\ub3d7\ub3d8\ub3d9\ub3da\ub3db\ub3dc\ub3dd\ub3de\ub3df\ub3e0\ub3e1\ub3e2\ub3e3\ub3e4\ub3e5\ub3e6\ub3e7\ub3e8\ub3e9\ub3ea\ub3eb\ub3ec\ub3ed\ub3ee\ub3ef\ub3f0\ub3f1\ub3f2\ub3f3\ub3f4\ub3f5\ub3f6\ub3f7\ub3f8\ub3f9\ub3fa\ub3fb\ub3fc\ub3fd\ub3fe\ub3ff\ub400\ub401\ub402\ub403\ub404\ub405\ub406\ub407\ub408\ub409\ub40a\ub40b\ub40c\ub40d\ub40e\ub40f\ub410\ub411\ub412\ub413\ub414\ub415\ub416\ub417\ub418\ub419\ub41a\ub41b\ub41c\ub41d\ub41e\ub41f\ub420\ub421\ub422\ub423\ub424\ub425\ub426\ub427\ub428\ub429\ub42a\ub42b\ub42c\ub42d\ub42e\ub42f\ub430\ub431\ub432\ub433\ub434\ub435\ub436\ub437\ub438\ub439\ub43a\ub43b\ub43c\ub43d\ub43e\ub43f\ub440\ub441\ub442\ub443\ub444\ub445\ub446\ub447\ub448\ub449\ub44a\ub44b\ub44c\ub44d\ub44e\ub44f\ub450\ub451\ub452\ub453\ub454\ub455\ub456\ub457\ub458\ub459\ub45a\ub45b\ub45c\ub45d\ub45e\ub45f\ub460\ub461\ub462\ub463\ub464\ub465\ub466\ub467\ub468\ub469\ub46a\ub46b\ub46c\ub46d\ub46e\ub46f\ub470\ub471\ub472\ub473\ub474\ub475\ub476\ub477\ub478\ub479\ub47a\ub47b\ub47c\ub47d\ub47e\ub47f\ub480\ub481\ub482\ub483\ub484\ub485\ub486\ub487\ub488\ub489\ub48a\ub48b\ub48c\ub48d\ub48e\ub48f\ub490\ub491\ub492\ub493\ub494\ub495\ub496\ub497\ub498\ub499\ub49a\ub49b\ub49c\ub49d\ub49e\ub49f\ub4a0\ub4a1\ub4a2\ub4a3\ub4a4\ub4a5\ub4a6\ub4a7\ub4a8\ub4a9\ub4aa\ub4ab\ub4ac\ub4ad\ub4ae\ub4af\ub4b0\ub4b1\ub4b2\ub4b3\ub4b4\ub4b5\ub4b6\ub4b7\ub4b8\ub4b9\ub4ba\ub4bb\ub4bc\ub4bd\ub4be\ub4bf\ub4c0\ub4c1\ub4c2\ub4c3\ub4c4\ub4c5\ub4c6\ub4c7\ub4c8\ub4c9\ub4ca\ub4cb\ub4cc\ub4cd\ub4ce\ub4cf\ub4d0\ub4d1\ub4d2\ub4d3\ub4d4\ub4d5\ub4d6\ub4d7\ub4d8\ub4d9\ub4da\ub4db\ub4dc\ub4dd\ub4de\ub4df\ub4e0\ub4e1\ub4e2\ub4e3\ub4e4\ub4e5\ub4e6\ub4e7\ub4e8\ub4e9\ub4ea\ub4eb\ub4ec\ub4ed\ub4ee\ub4ef\ub4f0\ub4f1\ub4f2\ub4f3\ub4f4\ub4f5\ub4f6\ub4f7\ub4f8\ub4f9\ub4fa\ub4fb\ub4fc\ub4fd\ub4fe\ub4ff\ub500\ub501\ub502\ub503\ub504\ub505\ub506\ub507\ub508\ub509\ub50a\ub50b\ub50c\ub50d\ub50e\ub50f\ub510\ub511\ub512\ub513\ub514\ub515\ub516\ub517\ub518\ub519\ub51a\ub51b\ub51c\ub51d\ub51e\ub51f\ub520\ub521\ub522\ub523\ub524\ub525\ub526\ub527\ub528\ub529\ub52a\ub52b\ub52c\ub52d\ub52e\ub52f\ub530\ub531\ub532\ub533\ub534\ub535\ub536\ub537\ub538\ub539\ub53a\ub53b\ub53c\ub53d\ub53e\ub53f\ub540\ub541\ub542\ub543\ub544\ub545\ub546\ub547\ub548\ub549\ub54a\ub54b\ub54c\ub54d\ub54e\ub54f\ub550\ub551\ub552\ub553\ub554\ub555\ub556\ub557\ub558\ub559\ub55a\ub55b\ub55c\ub55d\ub55e\ub55f\ub560\ub561\ub562\ub563\ub564\ub565\ub566\ub567\ub568\ub569\ub56a\ub56b\ub56c\ub56d\ub56e\ub56f\ub570\ub571\ub572\ub573\ub574\ub575\ub576\ub577\ub578\ub579\ub57a\ub57b\ub57c\ub57d\ub57e\ub57f\ub580\ub581\ub582\ub583\ub584\ub585\ub586\ub587\ub588\ub589\ub58a\ub58b\ub58c\ub58d\ub58e\ub58f\ub590\ub591\ub592\ub593\ub594\ub595\ub596\ub597\ub598\ub599\ub59a\ub59b\ub59c\ub59d\ub59e\ub59f\ub5a0\ub5a1\ub5a2\ub5a3\ub5a4\ub5a5\ub5a6\ub5a7\ub5a8\ub5a9\ub5aa\ub5ab\ub5ac\ub5ad\ub5ae\ub5af\ub5b0\ub5b1\ub5b2\ub5b3\ub5b4\ub5b5\ub5b6\ub5b7\ub5b8\ub5b9\ub5ba\ub5bb\ub5bc\ub5bd\ub5be\ub5bf\ub5c0\ub5c1\ub5c2\ub5c3\ub5c4\ub5c5\ub5c6\ub5c7\ub5c8\ub5c9\ub5ca\ub5cb\ub5cc\ub5cd\ub5ce\ub5cf\ub5d0\ub5d1\ub5d2\ub5d3\ub5d4\ub5d5\ub5d6\ub5d7\ub5d8\ub5d9\ub5da\ub5db\ub5dc\ub5dd\ub5de\ub5df\ub5e0\ub5e1\ub5e2\ub5e3\ub5e4\ub5e5\ub5e6\ub5e7\ub5e8\ub5e9\ub5ea\ub5eb\ub5ec\ub5ed\ub5ee\ub5ef\ub5f0\ub5f1\ub5f2\ub5f3\ub5f4\ub5f5\ub5f6\ub5f7\ub5f8\ub5f9\ub5fa\ub5fb\ub5fc\ub5fd\ub5fe\ub5ff\ub600\ub601\ub602\ub603\ub604\ub605\ub606\ub607\ub608\ub609\ub60a\ub60b\ub60c\ub60d\ub60e\ub60f\ub610\ub611\ub612\ub613\ub614\ub615\ub616\ub617\ub618\ub619\ub61a\ub61b\ub61c\ub61d\ub61e\ub61f\ub620\ub621\ub622\ub623\ub624\ub625\ub626\ub627\ub628\ub629\ub62a\ub62b\ub62c\ub62d\ub62e\ub62f\ub630\ub631\ub632\ub633\ub634\ub635\ub636\ub637\ub638\ub639\ub63a\ub63b\ub63c\ub63d\ub63e\ub63f\ub640\ub641\ub642\ub643\ub644\ub645\ub646\ub647\ub648\ub649\ub64a\ub64b\ub64c\ub64d\ub64e\ub64f\ub650\ub651\ub652\ub653\ub654\ub655\ub656\ub657\ub658\ub659\ub65a\ub65b\ub65c\ub65d\ub65e\ub65f\ub660\ub661\ub662\ub663\ub664\ub665\ub666\ub667\ub668\ub669\ub66a\ub66b\ub66c\ub66d\ub66e\ub66f\ub670\ub671\ub672\ub673\ub674\ub675\ub676\ub677\ub678\ub679\ub67a\ub67b\ub67c\ub67d\ub67e\ub67f\ub680\ub681\ub682\ub683\ub684\ub685\ub686\ub687\ub688\ub689\ub68a\ub68b\ub68c\ub68d\ub68e\ub68f\ub690\ub691\ub692\ub693\ub694\ub695\ub696\ub697\ub698\ub699\ub69a\ub69b\ub69c\ub69d\ub69e\ub69f\ub6a0\ub6a1\ub6a2\ub6a3\ub6a4\ub6a5\ub6a6\ub6a7\ub6a8\ub6a9\ub6aa\ub6ab\ub6ac\ub6ad\ub6ae\ub6af\ub6b0\ub6b1\ub6b2\ub6b3\ub6b4\ub6b5\ub6b6\ub6b7\ub6b8\ub6b9\ub6ba\ub6bb\ub6bc\ub6bd\ub6be\ub6bf\ub6c0\ub6c1\ub6c2\ub6c3\ub6c4\ub6c5\ub6c6\ub6c7\ub6c8\ub6c9\ub6ca\ub6cb\ub6cc\ub6cd\ub6ce\ub6cf\ub6d0\ub6d1\ub6d2\ub6d3\ub6d4\ub6d5\ub6d6\ub6d7\ub6d8\ub6d9\ub6da\ub6db\ub6dc\ub6dd\ub6de\ub6df\ub6e0\ub6e1\ub6e2\ub6e3\ub6e4\ub6e5\ub6e6\ub6e7\ub6e8\ub6e9\ub6ea\ub6eb\ub6ec\ub6ed\ub6ee\ub6ef\ub6f0\ub6f1\ub6f2\ub6f3\ub6f4\ub6f5\ub6f6\ub6f7\ub6f8\ub6f9\ub6fa\ub6fb\ub6fc\ub6fd\ub6fe\ub6ff\ub700\ub701\ub702\ub703\ub704\ub705\ub706\ub707\ub708\ub709\ub70a\ub70b\ub70c\ub70d\ub70e\ub70f\ub710\ub711\ub712\ub713\ub714\ub715\ub716\ub717\ub718\ub719\ub71a\ub71b\ub71c\ub71d\ub71e\ub71f\ub720\ub721\ub722\ub723\ub724\ub725\ub726\ub727\ub728\ub729\ub72a\ub72b\ub72c\ub72d\ub72e\ub72f\ub730\ub731\ub732\ub733\ub734\ub735\ub736\ub737\ub738\ub739\ub73a\ub73b\ub73c\ub73d\ub73e\ub73f\ub740\ub741\ub742\ub743\ub744\ub745\ub746\ub747\ub748\ub749\ub74a\ub74b\ub74c\ub74d\ub74e\ub74f\ub750\ub751\ub752\ub753\ub754\ub755\ub756\ub757\ub758\ub759\ub75a\ub75b\ub75c\ub75d\ub75e\ub75f\ub760\ub761\ub762\ub763\ub764\ub765\ub766\ub767\ub768\ub769\ub76a\ub76b\ub76c\ub76d\ub76e\ub76f\ub770\ub771\ub772\ub773\ub774\ub775\ub776\ub777\ub778\ub779\ub77a\ub77b\ub77c\ub77d\ub77e\ub77f\ub780\ub781\ub782\ub783\ub784\ub785\ub786\ub787\ub788\ub789\ub78a\ub78b\ub78c\ub78d\ub78e\ub78f\ub790\ub791\ub792\ub793\ub794\ub795\ub796\ub797\ub798\ub799\ub79a\ub79b\ub79c\ub79d\ub79e\ub79f\ub7a0\ub7a1\ub7a2\ub7a3\ub7a4\ub7a5\ub7a6\ub7a7\ub7a8\ub7a9\ub7aa\ub7ab\ub7ac\ub7ad\ub7ae\ub7af\ub7b0\ub7b1\ub7b2\ub7b3\ub7b4\ub7b5\ub7b6\ub7b7\ub7b8\ub7b9\ub7ba\ub7bb\ub7bc\ub7bd\ub7be\ub7bf\ub7c0\ub7c1\ub7c2\ub7c3\ub7c4\ub7c5\ub7c6\ub7c7\ub7c8\ub7c9\ub7ca\ub7cb\ub7cc\ub7cd\ub7ce\ub7cf\ub7d0\ub7d1\ub7d2\ub7d3\ub7d4\ub7d5\ub7d6\ub7d7\ub7d8\ub7d9\ub7da\ub7db\ub7dc\ub7dd\ub7de\ub7df\ub7e0\ub7e1\ub7e2\ub7e3\ub7e4\ub7e5\ub7e6\ub7e7\ub7e8\ub7e9\ub7ea\ub7eb\ub7ec\ub7ed\ub7ee\ub7ef\ub7f0\ub7f1\ub7f2\ub7f3\ub7f4\ub7f5\ub7f6\ub7f7\ub7f8\ub7f9\ub7fa\ub7fb\ub7fc\ub7fd\ub7fe\ub7ff\ub800\ub801\ub802\ub803\ub804\ub805\ub806\ub807\ub808\ub809\ub80a\ub80b\ub80c\ub80d\ub80e\ub80f\ub810\ub811\ub812\ub813\ub814\ub815\ub816\ub817\ub818\ub819\ub81a\ub81b\ub81c\ub81d\ub81e\ub81f\ub820\ub821\ub822\ub823\ub824\ub825\ub826\ub827\ub828\ub829\ub82a\ub82b\ub82c\ub82d\ub82e\ub82f\ub830\ub831\ub832\ub833\ub834\ub835\ub836\ub837\ub838\ub839\ub83a\ub83b\ub83c\ub83d\ub83e\ub83f\ub840\ub841\ub842\ub843\ub844\ub845\ub846\ub847\ub848\ub849\ub84a\ub84b\ub84c\ub84d\ub84e\ub84f\ub850\ub851\ub852\ub853\ub854\ub855\ub856\ub857\ub858\ub859\ub85a\ub85b\ub85c\ub85d\ub85e\ub85f\ub860\ub861\ub862\ub863\ub864\ub865\ub866\ub867\ub868\ub869\ub86a\ub86b\ub86c\ub86d\ub86e\ub86f\ub870\ub871\ub872\ub873\ub874\ub875\ub876\ub877\ub878\ub879\ub87a\ub87b\ub87c\ub87d\ub87e\ub87f\ub880\ub881\ub882\ub883\ub884\ub885\ub886\ub887\ub888\ub889\ub88a\ub88b\ub88c\ub88d\ub88e\ub88f\ub890\ub891\ub892\ub893\ub894\ub895\ub896\ub897\ub898\ub899\ub89a\ub89b\ub89c\ub89d\ub89e\ub89f\ub8a0\ub8a1\ub8a2\ub8a3\ub8a4\ub8a5\ub8a6\ub8a7\ub8a8\ub8a9\ub8aa\ub8ab\ub8ac\ub8ad\ub8ae\ub8af\ub8b0\ub8b1\ub8b2\ub8b3\ub8b4\ub8b5\ub8b6\ub8b7\ub8b8\ub8b9\ub8ba\ub8bb\ub8bc\ub8bd\ub8be\ub8bf\ub8c0\ub8c1\ub8c2\ub8c3\ub8c4\ub8c5\ub8c6\ub8c7\ub8c8\ub8c9\ub8ca\ub8cb\ub8cc\ub8cd\ub8ce\ub8cf\ub8d0\ub8d1\ub8d2\ub8d3\ub8d4\ub8d5\ub8d6\ub8d7\ub8d8\ub8d9\ub8da\ub8db\ub8dc\ub8dd\ub8de\ub8df\ub8e0\ub8e1\ub8e2\ub8e3\ub8e4\ub8e5\ub8e6\ub8e7\ub8e8\ub8e9\ub8ea\ub8eb\ub8ec\ub8ed\ub8ee\ub8ef\ub8f0\ub8f1\ub8f2\ub8f3\ub8f4\ub8f5\ub8f6\ub8f7\ub8f8\ub8f9\ub8fa\ub8fb\ub8fc\ub8fd\ub8fe\ub8ff\ub900\ub901\ub902\ub903\ub904\ub905\ub906\ub907\ub908\ub909\ub90a\ub90b\ub90c\ub90d\ub90e\ub90f\ub910\ub911\ub912\ub913\ub914\ub915\ub916\ub917\ub918\ub919\ub91a\ub91b\ub91c\ub91d\ub91e\ub91f\ub920\ub921\ub922\ub923\ub924\ub925\ub926\ub927\ub928\ub929\ub92a\ub92b\ub92c\ub92d\ub92e\ub92f\ub930\ub931\ub932\ub933\ub934\ub935\ub936\ub937\ub938\ub939\ub93a\ub93b\ub93c\ub93d\ub93e\ub93f\ub940\ub941\ub942\ub943\ub944\ub945\ub946\ub947\ub948\ub949\ub94a\ub94b\ub94c\ub94d\ub94e\ub94f\ub950\ub951\ub952\ub953\ub954\ub955\ub956\ub957\ub958\ub959\ub95a\ub95b\ub95c\ub95d\ub95e\ub95f\ub960\ub961\ub962\ub963\ub964\ub965\ub966\ub967\ub968\ub969\ub96a\ub96b\ub96c\ub96d\ub96e\ub96f\ub970\ub971\ub972\ub973\ub974\ub975\ub976\ub977\ub978\ub979\ub97a\ub97b\ub97c\ub97d\ub97e\ub97f\ub980\ub981\ub982\ub983\ub984\ub985\ub986\ub987\ub988\ub989\ub98a\ub98b\ub98c\ub98d\ub98e\ub98f\ub990\ub991\ub992\ub993\ub994\ub995\ub996\ub997\ub998\ub999\ub99a\ub99b\ub99c\ub99d\ub99e\ub99f\ub9a0\ub9a1\ub9a2\ub9a3\ub9a4\ub9a5\ub9a6\ub9a7\ub9a8\ub9a9\ub9aa\ub9ab\ub9ac\ub9ad\ub9ae\ub9af\ub9b0\ub9b1\ub9b2\ub9b3\ub9b4\ub9b5\ub9b6\ub9b7\ub9b8\ub9b9\ub9ba\ub9bb\ub9bc\ub9bd\ub9be\ub9bf\ub9c0\ub9c1\ub9c2\ub9c3\ub9c4\ub9c5\ub9c6\ub9c7\ub9c8\ub9c9\ub9ca\ub9cb\ub9cc\ub9cd\ub9ce\ub9cf\ub9d0\ub9d1\ub9d2\ub9d3\ub9d4\ub9d5\ub9d6\ub9d7\ub9d8\ub9d9\ub9da\ub9db\ub9dc\ub9dd\ub9de\ub9df\ub9e0\ub9e1\ub9e2\ub9e3\ub9e4\ub9e5\ub9e6\ub9e7\ub9e8\ub9e9\ub9ea\ub9eb\ub9ec\ub9ed\ub9ee\ub9ef\ub9f0\ub9f1\ub9f2\ub9f3\ub9f4\ub9f5\ub9f6\ub9f7\ub9f8\ub9f9\ub9fa\ub9fb\ub9fc\ub9fd\ub9fe\ub9ff\uba00\uba01\uba02\uba03\uba04\uba05\uba06\uba07\uba08\uba09\uba0a\uba0b\uba0c\uba0d\uba0e\uba0f\uba10\uba11\uba12\uba13\uba14\uba15\uba16\uba17\uba18\uba19\uba1a\uba1b\uba1c\uba1d\uba1e\uba1f\uba20\uba21\uba22\uba23\uba24\uba25\uba26\uba27\uba28\uba29\uba2a\uba2b\uba2c\uba2d\uba2e\uba2f\uba30\uba31\uba32\uba33\uba34\uba35\uba36\uba37\uba38\uba39\uba3a\uba3b\uba3c\uba3d\uba3e\uba3f\uba40\uba41\uba42\uba43\uba44\uba45\uba46\uba47\uba48\uba49\uba4a\uba4b\uba4c\uba4d\uba4e\uba4f\uba50\uba51\uba52\uba53\uba54\uba55\uba56\uba57\uba58\uba59\uba5a\uba5b\uba5c\uba5d\uba5e\uba5f\uba60\uba61\uba62\uba63\uba64\uba65\uba66\uba67\uba68\uba69\uba6a\uba6b\uba6c\uba6d\uba6e\uba6f\uba70\uba71\uba72\uba73\uba74\uba75\uba76\uba77\uba78\uba79\uba7a\uba7b\uba7c\uba7d\uba7e\uba7f\uba80\uba81\uba82\uba83\uba84\uba85\uba86\uba87\uba88\uba89\uba8a\uba8b\uba8c\uba8d\uba8e\uba8f\uba90\uba91\uba92\uba93\uba94\uba95\uba96\uba97\uba98\uba99\uba9a\uba9b\uba9c\uba9d\uba9e\uba9f\ubaa0\ubaa1\ubaa2\ubaa3\ubaa4\ubaa5\ubaa6\ubaa7\ubaa8\ubaa9\ubaaa\ubaab\ubaac\ubaad\ubaae\ubaaf\ubab0\ubab1\ubab2\ubab3\ubab4\ubab5\ubab6\ubab7\ubab8\ubab9\ubaba\ubabb\ubabc\ubabd\ubabe\ubabf\ubac0\ubac1\ubac2\ubac3\ubac4\ubac5\ubac6\ubac7\ubac8\ubac9\ubaca\ubacb\ubacc\ubacd\ubace\ubacf\ubad0\ubad1\ubad2\ubad3\ubad4\ubad5\ubad6\ubad7\ubad8\ubad9\ubada\ubadb\ubadc\ubadd\ubade\ubadf\ubae0\ubae1\ubae2\ubae3\ubae4\ubae5\ubae6\ubae7\ubae8\ubae9\ubaea\ubaeb\ubaec\ubaed\ubaee\ubaef\ubaf0\ubaf1\ubaf2\ubaf3\ubaf4\ubaf5\ubaf6\ubaf7\ubaf8\ubaf9\ubafa\ubafb\ubafc\ubafd\ubafe\ubaff\ubb00\ubb01\ubb02\ubb03\ubb04\ubb05\ubb06\ubb07\ubb08\ubb09\ubb0a\ubb0b\ubb0c\ubb0d\ubb0e\ubb0f\ubb10\ubb11\ubb12\ubb13\ubb14\ubb15\ubb16\ubb17\ubb18\ubb19\ubb1a\ubb1b\ubb1c\ubb1d\ubb1e\ubb1f\ubb20\ubb21\ubb22\ubb23\ubb24\ubb25\ubb26\ubb27\ubb28\ubb29\ubb2a\ubb2b\ubb2c\ubb2d\ubb2e\ubb2f\ubb30\ubb31\ubb32\ubb33\ubb34\ubb35\ubb36\ubb37\ubb38\ubb39\ubb3a\ubb3b\ubb3c\ubb3d\ubb3e\ubb3f\ubb40\ubb41\ubb42\ubb43\ubb44\ubb45\ubb46\ubb47\ubb48\ubb49\ubb4a\ubb4b\ubb4c\ubb4d\ubb4e\ubb4f\ubb50\ubb51\ubb52\ubb53\ubb54\ubb55\ubb56\ubb57\ubb58\ubb59\ubb5a\ubb5b\ubb5c\ubb5d\ubb5e\ubb5f\ubb60\ubb61\ubb62\ubb63\ubb64\ubb65\ubb66\ubb67\ubb68\ubb69\ubb6a\ubb6b\ubb6c\ubb6d\ubb6e\ubb6f\ubb70\ubb71\ubb72\ubb73\ubb74\ubb75\ubb76\ubb77\ubb78\ubb79\ubb7a\ubb7b\ubb7c\ubb7d\ubb7e\ubb7f\ubb80\ubb81\ubb82\ubb83\ubb84\ubb85\ubb86\ubb87\ubb88\ubb89\ubb8a\ubb8b\ubb8c\ubb8d\ubb8e\ubb8f\ubb90\ubb91\ubb92\ubb93\ubb94\ubb95\ubb96\ubb97\ubb98\ubb99\ubb9a\ubb9b\ubb9c\ubb9d\ubb9e\ubb9f\ubba0\ubba1\ubba2\ubba3\ubba4\ubba5\ubba6\ubba7\ubba8\ubba9\ubbaa\ubbab\ubbac\ubbad\ubbae\ubbaf\ubbb0\ubbb1\ubbb2\ubbb3\ubbb4\ubbb5\ubbb6\ubbb7\ubbb8\ubbb9\ubbba\ubbbb\ubbbc\ubbbd\ubbbe\ubbbf\ubbc0\ubbc1\ubbc2\ubbc3\ubbc4\ubbc5\ubbc6\ubbc7\ubbc8\ubbc9\ubbca\ubbcb\ubbcc\ubbcd\ubbce\ubbcf\ubbd0\ubbd1\ubbd2\ubbd3\ubbd4\ubbd5\ubbd6\ubbd7\ubbd8\ubbd9\ubbda\ubbdb\ubbdc\ubbdd\ubbde\ubbdf\ubbe0\ubbe1\ubbe2\ubbe3\ubbe4\ubbe5\ubbe6\ubbe7\ubbe8\ubbe9\ubbea\ubbeb\ubbec\ubbed\ubbee\ubbef\ubbf0\ubbf1\ubbf2\ubbf3\ubbf4\ubbf5\ubbf6\ubbf7\ubbf8\ubbf9\ubbfa\ubbfb\ubbfc\ubbfd\ubbfe\ubbff\ubc00\ubc01\ubc02\ubc03\ubc04\ubc05\ubc06\ubc07\ubc08\ubc09\ubc0a\ubc0b\ubc0c\ubc0d\ubc0e\ubc0f\ubc10\ubc11\ubc12\ubc13\ubc14\ubc15\ubc16\ubc17\ubc18\ubc19\ubc1a\ubc1b\ubc1c\ubc1d\ubc1e\ubc1f\ubc20\ubc21\ubc22\ubc23\ubc24\ubc25\ubc26\ubc27\ubc28\ubc29\ubc2a\ubc2b\ubc2c\ubc2d\ubc2e\ubc2f\ubc30\ubc31\ubc32\ubc33\ubc34\ubc35\ubc36\ubc37\ubc38\ubc39\ubc3a\ubc3b\ubc3c\ubc3d\ubc3e\ubc3f\ubc40\ubc41\ubc42\ubc43\ubc44\ubc45\ubc46\ubc47\ubc48\ubc49\ubc4a\ubc4b\ubc4c\ubc4d\ubc4e\ubc4f\ubc50\ubc51\ubc52\ubc53\ubc54\ubc55\ubc56\ubc57\ubc58\ubc59\ubc5a\ubc5b\ubc5c\ubc5d\ubc5e\ubc5f\ubc60\ubc61\ubc62\ubc63\ubc64\ubc65\ubc66\ubc67\ubc68\ubc69\ubc6a\ubc6b\ubc6c\ubc6d\ubc6e\ubc6f\ubc70\ubc71\ubc72\ubc73\ubc74\ubc75\ubc76\ubc77\ubc78\ubc79\ubc7a\ubc7b\ubc7c\ubc7d\ubc7e\ubc7f\ubc80\ubc81\ubc82\ubc83\ubc84\ubc85\ubc86\ubc87\ubc88\ubc89\ubc8a\ubc8b\ubc8c\ubc8d\ubc8e\ubc8f\ubc90\ubc91\ubc92\ubc93\ubc94\ubc95\ubc96\ubc97\ubc98\ubc99\ubc9a\ubc9b\ubc9c\ubc9d\ubc9e\ubc9f\ubca0\ubca1\ubca2\ubca3\ubca4\ubca5\ubca6\ubca7\ubca8\ubca9\ubcaa\ubcab\ubcac\ubcad\ubcae\ubcaf\ubcb0\ubcb1\ubcb2\ubcb3\ubcb4\ubcb5\ubcb6\ubcb7\ubcb8\ubcb9\ubcba\ubcbb\ubcbc\ubcbd\ubcbe\ubcbf\ubcc0\ubcc1\ubcc2\ubcc3\ubcc4\ubcc5\ubcc6\ubcc7\ubcc8\ubcc9\ubcca\ubccb\ubccc\ubccd\ubcce\ubccf\ubcd0\ubcd1\ubcd2\ubcd3\ubcd4\ubcd5\ubcd6\ubcd7\ubcd8\ubcd9\ubcda\ubcdb\ubcdc\ubcdd\ubcde\ubcdf\ubce0\ubce1\ubce2\ubce3\ubce4\ubce5\ubce6\ubce7\ubce8\ubce9\ubcea\ubceb\ubcec\ubced\ubcee\ubcef\ubcf0\ubcf1\ubcf2\ubcf3\ubcf4\ubcf5\ubcf6\ubcf7\ubcf8\ubcf9\ubcfa\ubcfb\ubcfc\ubcfd\ubcfe\ubcff\ubd00\ubd01\ubd02\ubd03\ubd04\ubd05\ubd06\ubd07\ubd08\ubd09\ubd0a\ubd0b\ubd0c\ubd0d\ubd0e\ubd0f\ubd10\ubd11\ubd12\ubd13\ubd14\ubd15\ubd16\ubd17\ubd18\ubd19\ubd1a\ubd1b\ubd1c\ubd1d\ubd1e\ubd1f\ubd20\ubd21\ubd22\ubd23\ubd24\ubd25\ubd26\ubd27\ubd28\ubd29\ubd2a\ubd2b\ubd2c\ubd2d\ubd2e\ubd2f\ubd30\ubd31\ubd32\ubd33\ubd34\ubd35\ubd36\ubd37\ubd38\ubd39\ubd3a\ubd3b\ubd3c\ubd3d\ubd3e\ubd3f\ubd40\ubd41\ubd42\ubd43\ubd44\ubd45\ubd46\ubd47\ubd48\ubd49\ubd4a\ubd4b\ubd4c\ubd4d\ubd4e\ubd4f\ubd50\ubd51\ubd52\ubd53\ubd54\ubd55\ubd56\ubd57\ubd58\ubd59\ubd5a\ubd5b\ubd5c\ubd5d\ubd5e\ubd5f\ubd60\ubd61\ubd62\ubd63\ubd64\ubd65\ubd66\ubd67\ubd68\ubd69\ubd6a\ubd6b\ubd6c\ubd6d\ubd6e\ubd6f\ubd70\ubd71\ubd72\ubd73\ubd74\ubd75\ubd76\ubd77\ubd78\ubd79\ubd7a\ubd7b\ubd7c\ubd7d\ubd7e\ubd7f\ubd80\ubd81\ubd82\ubd83\ubd84\ubd85\ubd86\ubd87\ubd88\ubd89\ubd8a\ubd8b\ubd8c\ubd8d\ubd8e\ubd8f\ubd90\ubd91\ubd92\ubd93\ubd94\ubd95\ubd96\ubd97\ubd98\ubd99\ubd9a\ubd9b\ubd9c\ubd9d\ubd9e\ubd9f\ubda0\ubda1\ubda2\ubda3\ubda4\ubda5\ubda6\ubda7\ubda8\ubda9\ubdaa\ubdab\ubdac\ubdad\ubdae\ubdaf\ubdb0\ubdb1\ubdb2\ubdb3\ubdb4\ubdb5\ubdb6\ubdb7\ubdb8\ubdb9\ubdba\ubdbb\ubdbc\ubdbd\ubdbe\ubdbf\ubdc0\ubdc1\ubdc2\ubdc3\ubdc4\ubdc5\ubdc6\ubdc7\ubdc8\ubdc9\ubdca\ubdcb\ubdcc\ubdcd\ubdce\ubdcf\ubdd0\ubdd1\ubdd2\ubdd3\ubdd4\ubdd5\ubdd6\ubdd7\ubdd8\ubdd9\ubdda\ubddb\ubddc\ubddd\ubdde\ubddf\ubde0\ubde1\ubde2\ubde3\ubde4\ubde5\ubde6\ubde7\ubde8\ubde9\ubdea\ubdeb\ubdec\ubded\ubdee\ubdef\ubdf0\ubdf1\ubdf2\ubdf3\ubdf4\ubdf5\ubdf6\ubdf7\ubdf8\ubdf9\ubdfa\ubdfb\ubdfc\ubdfd\ubdfe\ubdff\ube00\ube01\ube02\ube03\ube04\ube05\ube06\ube07\ube08\ube09\ube0a\ube0b\ube0c\ube0d\ube0e\ube0f\ube10\ube11\ube12\ube13\ube14\ube15\ube16\ube17\ube18\ube19\ube1a\ube1b\ube1c\ube1d\ube1e\ube1f\ube20\ube21\ube22\ube23\ube24\ube25\ube26\ube27\ube28\ube29\ube2a\ube2b\ube2c\ube2d\ube2e\ube2f\ube30\ube31\ube32\ube33\ube34\ube35\ube36\ube37\ube38\ube39\ube3a\ube3b\ube3c\ube3d\ube3e\ube3f\ube40\ube41\ube42\ube43\ube44\ube45\ube46\ube47\ube48\ube49\ube4a\ube4b\ube4c\ube4d\ube4e\ube4f\ube50\ube51\ube52\ube53\ube54\ube55\ube56\ube57\ube58\ube59\ube5a\ube5b\ube5c\ube5d\ube5e\ube5f\ube60\ube61\ube62\ube63\ube64\ube65\ube66\ube67\ube68\ube69\ube6a\ube6b\ube6c\ube6d\ube6e\ube6f\ube70\ube71\ube72\ube73\ube74\ube75\ube76\ube77\ube78\ube79\ube7a\ube7b\ube7c\ube7d\ube7e\ube7f\ube80\ube81\ube82\ube83\ube84\ube85\ube86\ube87\ube88\ube89\ube8a\ube8b\ube8c\ube8d\ube8e\ube8f\ube90\ube91\ube92\ube93\ube94\ube95\ube96\ube97\ube98\ube99\ube9a\ube9b\ube9c\ube9d\ube9e\ube9f\ubea0\ubea1\ubea2\ubea3\ubea4\ubea5\ubea6\ubea7\ubea8\ubea9\ubeaa\ubeab\ubeac\ubead\ubeae\ubeaf\ubeb0\ubeb1\ubeb2\ubeb3\ubeb4\ubeb5\ubeb6\ubeb7\ubeb8\ubeb9\ubeba\ubebb\ubebc\ubebd\ubebe\ubebf\ubec0\ubec1\ubec2\ubec3\ubec4\ubec5\ubec6\ubec7\ubec8\ubec9\ubeca\ubecb\ubecc\ubecd\ubece\ubecf\ubed0\ubed1\ubed2\ubed3\ubed4\ubed5\ubed6\ubed7\ubed8\ubed9\ubeda\ubedb\ubedc\ubedd\ubede\ubedf\ubee0\ubee1\ubee2\ubee3\ubee4\ubee5\ubee6\ubee7\ubee8\ubee9\ubeea\ubeeb\ubeec\ubeed\ubeee\ubeef\ubef0\ubef1\ubef2\ubef3\ubef4\ubef5\ubef6\ubef7\ubef8\ubef9\ubefa\ubefb\ubefc\ubefd\ubefe\ubeff\ubf00\ubf01\ubf02\ubf03\ubf04\ubf05\ubf06\ubf07\ubf08\ubf09\ubf0a\ubf0b\ubf0c\ubf0d\ubf0e\ubf0f\ubf10\ubf11\ubf12\ubf13\ubf14\ubf15\ubf16\ubf17\ubf18\ubf19\ubf1a\ubf1b\ubf1c\ubf1d\ubf1e\ubf1f\ubf20\ubf21\ubf22\ubf23\ubf24\ubf25\ubf26\ubf27\ubf28\ubf29\ubf2a\ubf2b\ubf2c\ubf2d\ubf2e\ubf2f\ubf30\ubf31\ubf32\ubf33\ubf34\ubf35\ubf36\ubf37\ubf38\ubf39\ubf3a\ubf3b\ubf3c\ubf3d\ubf3e\ubf3f\ubf40\ubf41\ubf42\ubf43\ubf44\ubf45\ubf46\ubf47\ubf48\ubf49\ubf4a\ubf4b\ubf4c\ubf4d\ubf4e\ubf4f\ubf50\ubf51\ubf52\ubf53\ubf54\ubf55\ubf56\ubf57\ubf58\ubf59\ubf5a\ubf5b\ubf5c\ubf5d\ubf5e\ubf5f\ubf60\ubf61\ubf62\ubf63\ubf64\ubf65\ubf66\ubf67\ubf68\ubf69\ubf6a\ubf6b\ubf6c\ubf6d\ubf6e\ubf6f\ubf70\ubf71\ubf72\ubf73\ubf74\ubf75\ubf76\ubf77\ubf78\ubf79\ubf7a\ubf7b\ubf7c\ubf7d\ubf7e\ubf7f\ubf80\ubf81\ubf82\ubf83\ubf84\ubf85\ubf86\ubf87\ubf88\ubf89\ubf8a\ubf8b\ubf8c\ubf8d\ubf8e\ubf8f\ubf90\ubf91\ubf92\ubf93\ubf94\ubf95\ubf96\ubf97\ubf98\ubf99\ubf9a\ubf9b\ubf9c\ubf9d\ubf9e\ubf9f\ubfa0\ubfa1\ubfa2\ubfa3\ubfa4\ubfa5\ubfa6\ubfa7\ubfa8\ubfa9\ubfaa\ubfab\ubfac\ubfad\ubfae\ubfaf\ubfb0\ubfb1\ubfb2\ubfb3\ubfb4\ubfb5\ubfb6\ubfb7\ubfb8\ubfb9\ubfba\ubfbb\ubfbc\ubfbd\ubfbe\ubfbf\ubfc0\ubfc1\ubfc2\ubfc3\ubfc4\ubfc5\ubfc6\ubfc7\ubfc8\ubfc9\ubfca\ubfcb\ubfcc\ubfcd\ubfce\ubfcf\ubfd0\ubfd1\ubfd2\ubfd3\ubfd4\ubfd5\ubfd6\ubfd7\ubfd8\ubfd9\ubfda\ubfdb\ubfdc\ubfdd\ubfde\ubfdf\ubfe0\ubfe1\ubfe2\ubfe3\ubfe4\ubfe5\ubfe6\ubfe7\ubfe8\ubfe9\ubfea\ubfeb\ubfec\ubfed\ubfee\ubfef\ubff0\ubff1\ubff2\ubff3\ubff4\ubff5\ubff6\ubff7\ubff8\ubff9\ubffa\ubffb\ubffc\ubffd\ubffe\ubfff\uc000\uc001\uc002\uc003\uc004\uc005\uc006\uc007\uc008\uc009\uc00a\uc00b\uc00c\uc00d\uc00e\uc00f\uc010\uc011\uc012\uc013\uc014\uc015\uc016\uc017\uc018\uc019\uc01a\uc01b\uc01c\uc01d\uc01e\uc01f\uc020\uc021\uc022\uc023\uc024\uc025\uc026\uc027\uc028\uc029\uc02a\uc02b\uc02c\uc02d\uc02e\uc02f\uc030\uc031\uc032\uc033\uc034\uc035\uc036\uc037\uc038\uc039\uc03a\uc03b\uc03c\uc03d\uc03e\uc03f\uc040\uc041\uc042\uc043\uc044\uc045\uc046\uc047\uc048\uc049\uc04a\uc04b\uc04c\uc04d\uc04e\uc04f\uc050\uc051\uc052\uc053\uc054\uc055\uc056\uc057\uc058\uc059\uc05a\uc05b\uc05c\uc05d\uc05e\uc05f\uc060\uc061\uc062\uc063\uc064\uc065\uc066\uc067\uc068\uc069\uc06a\uc06b\uc06c\uc06d\uc06e\uc06f\uc070\uc071\uc072\uc073\uc074\uc075\uc076\uc077\uc078\uc079\uc07a\uc07b\uc07c\uc07d\uc07e\uc07f\uc080\uc081\uc082\uc083\uc084\uc085\uc086\uc087\uc088\uc089\uc08a\uc08b\uc08c\uc08d\uc08e\uc08f\uc090\uc091\uc092\uc093\uc094\uc095\uc096\uc097\uc098\uc099\uc09a\uc09b\uc09c\uc09d\uc09e\uc09f\uc0a0\uc0a1\uc0a2\uc0a3\uc0a4\uc0a5\uc0a6\uc0a7\uc0a8\uc0a9\uc0aa\uc0ab\uc0ac\uc0ad\uc0ae\uc0af\uc0b0\uc0b1\uc0b2\uc0b3\uc0b4\uc0b5\uc0b6\uc0b7\uc0b8\uc0b9\uc0ba\uc0bb\uc0bc\uc0bd\uc0be\uc0bf\uc0c0\uc0c1\uc0c2\uc0c3\uc0c4\uc0c5\uc0c6\uc0c7\uc0c8\uc0c9\uc0ca\uc0cb\uc0cc\uc0cd\uc0ce\uc0cf\uc0d0\uc0d1\uc0d2\uc0d3\uc0d4\uc0d5\uc0d6\uc0d7\uc0d8\uc0d9\uc0da\uc0db\uc0dc\uc0dd\uc0de\uc0df\uc0e0\uc0e1\uc0e2\uc0e3\uc0e4\uc0e5\uc0e6\uc0e7\uc0e8\uc0e9\uc0ea\uc0eb\uc0ec\uc0ed\uc0ee\uc0ef\uc0f0\uc0f1\uc0f2\uc0f3\uc0f4\uc0f5\uc0f6\uc0f7\uc0f8\uc0f9\uc0fa\uc0fb\uc0fc\uc0fd\uc0fe\uc0ff\uc100\uc101\uc102\uc103\uc104\uc105\uc106\uc107\uc108\uc109\uc10a\uc10b\uc10c\uc10d\uc10e\uc10f\uc110\uc111\uc112\uc113\uc114\uc115\uc116\uc117\uc118\uc119\uc11a\uc11b\uc11c\uc11d\uc11e\uc11f\uc120\uc121\uc122\uc123\uc124\uc125\uc126\uc127\uc128\uc129\uc12a\uc12b\uc12c\uc12d\uc12e\uc12f\uc130\uc131\uc132\uc133\uc134\uc135\uc136\uc137\uc138\uc139\uc13a\uc13b\uc13c\uc13d\uc13e\uc13f\uc140\uc141\uc142\uc143\uc144\uc145\uc146\uc147\uc148\uc149\uc14a\uc14b\uc14c\uc14d\uc14e\uc14f\uc150\uc151\uc152\uc153\uc154\uc155\uc156\uc157\uc158\uc159\uc15a\uc15b\uc15c\uc15d\uc15e\uc15f\uc160\uc161\uc162\uc163\uc164\uc165\uc166\uc167\uc168\uc169\uc16a\uc16b\uc16c\uc16d\uc16e\uc16f\uc170\uc171\uc172\uc173\uc174\uc175\uc176\uc177\uc178\uc179\uc17a\uc17b\uc17c\uc17d\uc17e\uc17f\uc180\uc181\uc182\uc183\uc184\uc185\uc186\uc187\uc188\uc189\uc18a\uc18b\uc18c\uc18d\uc18e\uc18f\uc190\uc191\uc192\uc193\uc194\uc195\uc196\uc197\uc198\uc199\uc19a\uc19b\uc19c\uc19d\uc19e\uc19f\uc1a0\uc1a1\uc1a2\uc1a3\uc1a4\uc1a5\uc1a6\uc1a7\uc1a8\uc1a9\uc1aa\uc1ab\uc1ac\uc1ad\uc1ae\uc1af\uc1b0\uc1b1\uc1b2\uc1b3\uc1b4\uc1b5\uc1b6\uc1b7\uc1b8\uc1b9\uc1ba\uc1bb\uc1bc\uc1bd\uc1be\uc1bf\uc1c0\uc1c1\uc1c2\uc1c3\uc1c4\uc1c5\uc1c6\uc1c7\uc1c8\uc1c9\uc1ca\uc1cb\uc1cc\uc1cd\uc1ce\uc1cf\uc1d0\uc1d1\uc1d2\uc1d3\uc1d4\uc1d5\uc1d6\uc1d7\uc1d8\uc1d9\uc1da\uc1db\uc1dc\uc1dd\uc1de\uc1df\uc1e0\uc1e1\uc1e2\uc1e3\uc1e4\uc1e5\uc1e6\uc1e7\uc1e8\uc1e9\uc1ea\uc1eb\uc1ec\uc1ed\uc1ee\uc1ef\uc1f0\uc1f1\uc1f2\uc1f3\uc1f4\uc1f5\uc1f6\uc1f7\uc1f8\uc1f9\uc1fa\uc1fb\uc1fc\uc1fd\uc1fe\uc1ff\uc200\uc201\uc202\uc203\uc204\uc205\uc206\uc207\uc208\uc209\uc20a\uc20b\uc20c\uc20d\uc20e\uc20f\uc210\uc211\uc212\uc213\uc214\uc215\uc216\uc217\uc218\uc219\uc21a\uc21b\uc21c\uc21d\uc21e\uc21f\uc220\uc221\uc222\uc223\uc224\uc225\uc226\uc227\uc228\uc229\uc22a\uc22b\uc22c\uc22d\uc22e\uc22f\uc230\uc231\uc232\uc233\uc234\uc235\uc236\uc237\uc238\uc239\uc23a\uc23b\uc23c\uc23d\uc23e\uc23f\uc240\uc241\uc242\uc243\uc244\uc245\uc246\uc247\uc248\uc249\uc24a\uc24b\uc24c\uc24d\uc24e\uc24f\uc250\uc251\uc252\uc253\uc254\uc255\uc256\uc257\uc258\uc259\uc25a\uc25b\uc25c\uc25d\uc25e\uc25f\uc260\uc261\uc262\uc263\uc264\uc265\uc266\uc267\uc268\uc269\uc26a\uc26b\uc26c\uc26d\uc26e\uc26f\uc270\uc271\uc272\uc273\uc274\uc275\uc276\uc277\uc278\uc279\uc27a\uc27b\uc27c\uc27d\uc27e\uc27f\uc280\uc281\uc282\uc283\uc284\uc285\uc286\uc287\uc288\uc289\uc28a\uc28b\uc28c\uc28d\uc28e\uc28f\uc290\uc291\uc292\uc293\uc294\uc295\uc296\uc297\uc298\uc299\uc29a\uc29b\uc29c\uc29d\uc29e\uc29f\uc2a0\uc2a1\uc2a2\uc2a3\uc2a4\uc2a5\uc2a6\uc2a7\uc2a8\uc2a9\uc2aa\uc2ab\uc2ac\uc2ad\uc2ae\uc2af\uc2b0\uc2b1\uc2b2\uc2b3\uc2b4\uc2b5\uc2b6\uc2b7\uc2b8\uc2b9\uc2ba\uc2bb\uc2bc\uc2bd\uc2be\uc2bf\uc2c0\uc2c1\uc2c2\uc2c3\uc2c4\uc2c5\uc2c6\uc2c7\uc2c8\uc2c9\uc2ca\uc2cb\uc2cc\uc2cd\uc2ce\uc2cf\uc2d0\uc2d1\uc2d2\uc2d3\uc2d4\uc2d5\uc2d6\uc2d7\uc2d8\uc2d9\uc2da\uc2db\uc2dc\uc2dd\uc2de\uc2df\uc2e0\uc2e1\uc2e2\uc2e3\uc2e4\uc2e5\uc2e6\uc2e7\uc2e8\uc2e9\uc2ea\uc2eb\uc2ec\uc2ed\uc2ee\uc2ef\uc2f0\uc2f1\uc2f2\uc2f3\uc2f4\uc2f5\uc2f6\uc2f7\uc2f8\uc2f9\uc2fa\uc2fb\uc2fc\uc2fd\uc2fe\uc2ff\uc300\uc301\uc302\uc303\uc304\uc305\uc306\uc307\uc308\uc309\uc30a\uc30b\uc30c\uc30d\uc30e\uc30f\uc310\uc311\uc312\uc313\uc314\uc315\uc316\uc317\uc318\uc319\uc31a\uc31b\uc31c\uc31d\uc31e\uc31f\uc320\uc321\uc322\uc323\uc324\uc325\uc326\uc327\uc328\uc329\uc32a\uc32b\uc32c\uc32d\uc32e\uc32f\uc330\uc331\uc332\uc333\uc334\uc335\uc336\uc337\uc338\uc339\uc33a\uc33b\uc33c\uc33d\uc33e\uc33f\uc340\uc341\uc342\uc343\uc344\uc345\uc346\uc347\uc348\uc349\uc34a\uc34b\uc34c\uc34d\uc34e\uc34f\uc350\uc351\uc352\uc353\uc354\uc355\uc356\uc357\uc358\uc359\uc35a\uc35b\uc35c\uc35d\uc35e\uc35f\uc360\uc361\uc362\uc363\uc364\uc365\uc366\uc367\uc368\uc369\uc36a\uc36b\uc36c\uc36d\uc36e\uc36f\uc370\uc371\uc372\uc373\uc374\uc375\uc376\uc377\uc378\uc379\uc37a\uc37b\uc37c\uc37d\uc37e\uc37f\uc380\uc381\uc382\uc383\uc384\uc385\uc386\uc387\uc388\uc389\uc38a\uc38b\uc38c\uc38d\uc38e\uc38f\uc390\uc391\uc392\uc393\uc394\uc395\uc396\uc397\uc398\uc399\uc39a\uc39b\uc39c\uc39d\uc39e\uc39f\uc3a0\uc3a1\uc3a2\uc3a3\uc3a4\uc3a5\uc3a6\uc3a7\uc3a8\uc3a9\uc3aa\uc3ab\uc3ac\uc3ad\uc3ae\uc3af\uc3b0\uc3b1\uc3b2\uc3b3\uc3b4\uc3b5\uc3b6\uc3b7\uc3b8\uc3b9\uc3ba\uc3bb\uc3bc\uc3bd\uc3be\uc3bf\uc3c0\uc3c1\uc3c2\uc3c3\uc3c4\uc3c5\uc3c6\uc3c7\uc3c8\uc3c9\uc3ca\uc3cb\uc3cc\uc3cd\uc3ce\uc3cf\uc3d0\uc3d1\uc3d2\uc3d3\uc3d4\uc3d5\uc3d6\uc3d7\uc3d8\uc3d9\uc3da\uc3db\uc3dc\uc3dd\uc3de\uc3df\uc3e0\uc3e1\uc3e2\uc3e3\uc3e4\uc3e5\uc3e6\uc3e7\uc3e8\uc3e9\uc3ea\uc3eb\uc3ec\uc3ed\uc3ee\uc3ef\uc3f0\uc3f1\uc3f2\uc3f3\uc3f4\uc3f5\uc3f6\uc3f7\uc3f8\uc3f9\uc3fa\uc3fb\uc3fc\uc3fd\uc3fe\uc3ff\uc400\uc401\uc402\uc403\uc404\uc405\uc406\uc407\uc408\uc409\uc40a\uc40b\uc40c\uc40d\uc40e\uc40f\uc410\uc411\uc412\uc413\uc414\uc415\uc416\uc417\uc418\uc419\uc41a\uc41b\uc41c\uc41d\uc41e\uc41f\uc420\uc421\uc422\uc423\uc424\uc425\uc426\uc427\uc428\uc429\uc42a\uc42b\uc42c\uc42d\uc42e\uc42f\uc430\uc431\uc432\uc433\uc434\uc435\uc436\uc437\uc438\uc439\uc43a\uc43b\uc43c\uc43d\uc43e\uc43f\uc440\uc441\uc442\uc443\uc444\uc445\uc446\uc447\uc448\uc449\uc44a\uc44b\uc44c\uc44d\uc44e\uc44f\uc450\uc451\uc452\uc453\uc454\uc455\uc456\uc457\uc458\uc459\uc45a\uc45b\uc45c\uc45d\uc45e\uc45f\uc460\uc461\uc462\uc463\uc464\uc465\uc466\uc467\uc468\uc469\uc46a\uc46b\uc46c\uc46d\uc46e\uc46f\uc470\uc471\uc472\uc473\uc474\uc475\uc476\uc477\uc478\uc479\uc47a\uc47b\uc47c\uc47d\uc47e\uc47f\uc480\uc481\uc482\uc483\uc484\uc485\uc486\uc487\uc488\uc489\uc48a\uc48b\uc48c\uc48d\uc48e\uc48f\uc490\uc491\uc492\uc493\uc494\uc495\uc496\uc497\uc498\uc499\uc49a\uc49b\uc49c\uc49d\uc49e\uc49f\uc4a0\uc4a1\uc4a2\uc4a3\uc4a4\uc4a5\uc4a6\uc4a7\uc4a8\uc4a9\uc4aa\uc4ab\uc4ac\uc4ad\uc4ae\uc4af\uc4b0\uc4b1\uc4b2\uc4b3\uc4b4\uc4b5\uc4b6\uc4b7\uc4b8\uc4b9\uc4ba\uc4bb\uc4bc\uc4bd\uc4be\uc4bf\uc4c0\uc4c1\uc4c2\uc4c3\uc4c4\uc4c5\uc4c6\uc4c7\uc4c8\uc4c9\uc4ca\uc4cb\uc4cc\uc4cd\uc4ce\uc4cf\uc4d0\uc4d1\uc4d2\uc4d3\uc4d4\uc4d5\uc4d6\uc4d7\uc4d8\uc4d9\uc4da\uc4db\uc4dc\uc4dd\uc4de\uc4df\uc4e0\uc4e1\uc4e2\uc4e3\uc4e4\uc4e5\uc4e6\uc4e7\uc4e8\uc4e9\uc4ea\uc4eb\uc4ec\uc4ed\uc4ee\uc4ef\uc4f0\uc4f1\uc4f2\uc4f3\uc4f4\uc4f5\uc4f6\uc4f7\uc4f8\uc4f9\uc4fa\uc4fb\uc4fc\uc4fd\uc4fe\uc4ff\uc500\uc501\uc502\uc503\uc504\uc505\uc506\uc507\uc508\uc509\uc50a\uc50b\uc50c\uc50d\uc50e\uc50f\uc510\uc511\uc512\uc513\uc514\uc515\uc516\uc517\uc518\uc519\uc51a\uc51b\uc51c\uc51d\uc51e\uc51f\uc520\uc521\uc522\uc523\uc524\uc525\uc526\uc527\uc528\uc529\uc52a\uc52b\uc52c\uc52d\uc52e\uc52f\uc530\uc531\uc532\uc533\uc534\uc535\uc536\uc537\uc538\uc539\uc53a\uc53b\uc53c\uc53d\uc53e\uc53f\uc540\uc541\uc542\uc543\uc544\uc545\uc546\uc547\uc548\uc549\uc54a\uc54b\uc54c\uc54d\uc54e\uc54f\uc550\uc551\uc552\uc553\uc554\uc555\uc556\uc557\uc558\uc559\uc55a\uc55b\uc55c\uc55d\uc55e\uc55f\uc560\uc561\uc562\uc563\uc564\uc565\uc566\uc567\uc568\uc569\uc56a\uc56b\uc56c\uc56d\uc56e\uc56f\uc570\uc571\uc572\uc573\uc574\uc575\uc576\uc577\uc578\uc579\uc57a\uc57b\uc57c\uc57d\uc57e\uc57f\uc580\uc581\uc582\uc583\uc584\uc585\uc586\uc587\uc588\uc589\uc58a\uc58b\uc58c\uc58d\uc58e\uc58f\uc590\uc591\uc592\uc593\uc594\uc595\uc596\uc597\uc598\uc599\uc59a\uc59b\uc59c\uc59d\uc59e\uc59f\uc5a0\uc5a1\uc5a2\uc5a3\uc5a4\uc5a5\uc5a6\uc5a7\uc5a8\uc5a9\uc5aa\uc5ab\uc5ac\uc5ad\uc5ae\uc5af\uc5b0\uc5b1\uc5b2\uc5b3\uc5b4\uc5b5\uc5b6\uc5b7\uc5b8\uc5b9\uc5ba\uc5bb\uc5bc\uc5bd\uc5be\uc5bf\uc5c0\uc5c1\uc5c2\uc5c3\uc5c4\uc5c5\uc5c6\uc5c7\uc5c8\uc5c9\uc5ca\uc5cb\uc5cc\uc5cd\uc5ce\uc5cf\uc5d0\uc5d1\uc5d2\uc5d3\uc5d4\uc5d5\uc5d6\uc5d7\uc5d8\uc5d9\uc5da\uc5db\uc5dc\uc5dd\uc5de\uc5df\uc5e0\uc5e1\uc5e2\uc5e3\uc5e4\uc5e5\uc5e6\uc5e7\uc5e8\uc5e9\uc5ea\uc5eb\uc5ec\uc5ed\uc5ee\uc5ef\uc5f0\uc5f1\uc5f2\uc5f3\uc5f4\uc5f5\uc5f6\uc5f7\uc5f8\uc5f9\uc5fa\uc5fb\uc5fc\uc5fd\uc5fe\uc5ff\uc600\uc601\uc602\uc603\uc604\uc605\uc606\uc607\uc608\uc609\uc60a\uc60b\uc60c\uc60d\uc60e\uc60f\uc610\uc611\uc612\uc613\uc614\uc615\uc616\uc617\uc618\uc619\uc61a\uc61b\uc61c\uc61d\uc61e\uc61f\uc620\uc621\uc622\uc623\uc624\uc625\uc626\uc627\uc628\uc629\uc62a\uc62b\uc62c\uc62d\uc62e\uc62f\uc630\uc631\uc632\uc633\uc634\uc635\uc636\uc637\uc638\uc639\uc63a\uc63b\uc63c\uc63d\uc63e\uc63f\uc640\uc641\uc642\uc643\uc644\uc645\uc646\uc647\uc648\uc649\uc64a\uc64b\uc64c\uc64d\uc64e\uc64f\uc650\uc651\uc652\uc653\uc654\uc655\uc656\uc657\uc658\uc659\uc65a\uc65b\uc65c\uc65d\uc65e\uc65f\uc660\uc661\uc662\uc663\uc664\uc665\uc666\uc667\uc668\uc669\uc66a\uc66b\uc66c\uc66d\uc66e\uc66f\uc670\uc671\uc672\uc673\uc674\uc675\uc676\uc677\uc678\uc679\uc67a\uc67b\uc67c\uc67d\uc67e\uc67f\uc680\uc681\uc682\uc683\uc684\uc685\uc686\uc687\uc688\uc689\uc68a\uc68b\uc68c\uc68d\uc68e\uc68f\uc690\uc691\uc692\uc693\uc694\uc695\uc696\uc697\uc698\uc699\uc69a\uc69b\uc69c\uc69d\uc69e\uc69f\uc6a0\uc6a1\uc6a2\uc6a3\uc6a4\uc6a5\uc6a6\uc6a7\uc6a8\uc6a9\uc6aa\uc6ab\uc6ac\uc6ad\uc6ae\uc6af\uc6b0\uc6b1\uc6b2\uc6b3\uc6b4\uc6b5\uc6b6\uc6b7\uc6b8\uc6b9\uc6ba\uc6bb\uc6bc\uc6bd\uc6be\uc6bf\uc6c0\uc6c1\uc6c2\uc6c3\uc6c4\uc6c5\uc6c6\uc6c7\uc6c8\uc6c9\uc6ca\uc6cb\uc6cc\uc6cd\uc6ce\uc6cf\uc6d0\uc6d1\uc6d2\uc6d3\uc6d4\uc6d5\uc6d6\uc6d7\uc6d8\uc6d9\uc6da\uc6db\uc6dc\uc6dd\uc6de\uc6df\uc6e0\uc6e1\uc6e2\uc6e3\uc6e4\uc6e5\uc6e6\uc6e7\uc6e8\uc6e9\uc6ea\uc6eb\uc6ec\uc6ed\uc6ee\uc6ef\uc6f0\uc6f1\uc6f2\uc6f3\uc6f4\uc6f5\uc6f6\uc6f7\uc6f8\uc6f9\uc6fa\uc6fb\uc6fc\uc6fd\uc6fe\uc6ff\uc700\uc701\uc702\uc703\uc704\uc705\uc706\uc707\uc708\uc709\uc70a\uc70b\uc70c\uc70d\uc70e\uc70f\uc710\uc711\uc712\uc713\uc714\uc715\uc716\uc717\uc718\uc719\uc71a\uc71b\uc71c\uc71d\uc71e\uc71f\uc720\uc721\uc722\uc723\uc724\uc725\uc726\uc727\uc728\uc729\uc72a\uc72b\uc72c\uc72d\uc72e\uc72f\uc730\uc731\uc732\uc733\uc734\uc735\uc736\uc737\uc738\uc739\uc73a\uc73b\uc73c\uc73d\uc73e\uc73f\uc740\uc741\uc742\uc743\uc744\uc745\uc746\uc747\uc748\uc749\uc74a\uc74b\uc74c\uc74d\uc74e\uc74f\uc750\uc751\uc752\uc753\uc754\uc755\uc756\uc757\uc758\uc759\uc75a\uc75b\uc75c\uc75d\uc75e\uc75f\uc760\uc761\uc762\uc763\uc764\uc765\uc766\uc767\uc768\uc769\uc76a\uc76b\uc76c\uc76d\uc76e\uc76f\uc770\uc771\uc772\uc773\uc774\uc775\uc776\uc777\uc778\uc779\uc77a\uc77b\uc77c\uc77d\uc77e\uc77f\uc780\uc781\uc782\uc783\uc784\uc785\uc786\uc787\uc788\uc789\uc78a\uc78b\uc78c\uc78d\uc78e\uc78f\uc790\uc791\uc792\uc793\uc794\uc795\uc796\uc797\uc798\uc799\uc79a\uc79b\uc79c\uc79d\uc79e\uc79f\uc7a0\uc7a1\uc7a2\uc7a3\uc7a4\uc7a5\uc7a6\uc7a7\uc7a8\uc7a9\uc7aa\uc7ab\uc7ac\uc7ad\uc7ae\uc7af\uc7b0\uc7b1\uc7b2\uc7b3\uc7b4\uc7b5\uc7b6\uc7b7\uc7b8\uc7b9\uc7ba\uc7bb\uc7bc\uc7bd\uc7be\uc7bf\uc7c0\uc7c1\uc7c2\uc7c3\uc7c4\uc7c5\uc7c6\uc7c7\uc7c8\uc7c9\uc7ca\uc7cb\uc7cc\uc7cd\uc7ce\uc7cf\uc7d0\uc7d1\uc7d2\uc7d3\uc7d4\uc7d5\uc7d6\uc7d7\uc7d8\uc7d9\uc7da\uc7db\uc7dc\uc7dd\uc7de\uc7df\uc7e0\uc7e1\uc7e2\uc7e3\uc7e4\uc7e5\uc7e6\uc7e7\uc7e8\uc7e9\uc7ea\uc7eb\uc7ec\uc7ed\uc7ee\uc7ef\uc7f0\uc7f1\uc7f2\uc7f3\uc7f4\uc7f5\uc7f6\uc7f7\uc7f8\uc7f9\uc7fa\uc7fb\uc7fc\uc7fd\uc7fe\uc7ff\uc800\uc801\uc802\uc803\uc804\uc805\uc806\uc807\uc808\uc809\uc80a\uc80b\uc80c\uc80d\uc80e\uc80f\uc810\uc811\uc812\uc813\uc814\uc815\uc816\uc817\uc818\uc819\uc81a\uc81b\uc81c\uc81d\uc81e\uc81f\uc820\uc821\uc822\uc823\uc824\uc825\uc826\uc827\uc828\uc829\uc82a\uc82b\uc82c\uc82d\uc82e\uc82f\uc830\uc831\uc832\uc833\uc834\uc835\uc836\uc837\uc838\uc839\uc83a\uc83b\uc83c\uc83d\uc83e\uc83f\uc840\uc841\uc842\uc843\uc844\uc845\uc846\uc847\uc848\uc849\uc84a\uc84b\uc84c\uc84d\uc84e\uc84f\uc850\uc851\uc852\uc853\uc854\uc855\uc856\uc857\uc858\uc859\uc85a\uc85b\uc85c\uc85d\uc85e\uc85f\uc860\uc861\uc862\uc863\uc864\uc865\uc866\uc867\uc868\uc869\uc86a\uc86b\uc86c\uc86d\uc86e\uc86f\uc870\uc871\uc872\uc873\uc874\uc875\uc876\uc877\uc878\uc879\uc87a\uc87b\uc87c\uc87d\uc87e\uc87f\uc880\uc881\uc882\uc883\uc884\uc885\uc886\uc887\uc888\uc889\uc88a\uc88b\uc88c\uc88d\uc88e\uc88f\uc890\uc891\uc892\uc893\uc894\uc895\uc896\uc897\uc898\uc899\uc89a\uc89b\uc89c\uc89d\uc89e\uc89f\uc8a0\uc8a1\uc8a2\uc8a3\uc8a4\uc8a5\uc8a6\uc8a7\uc8a8\uc8a9\uc8aa\uc8ab\uc8ac\uc8ad\uc8ae\uc8af\uc8b0\uc8b1\uc8b2\uc8b3\uc8b4\uc8b5\uc8b6\uc8b7\uc8b8\uc8b9\uc8ba\uc8bb\uc8bc\uc8bd\uc8be\uc8bf\uc8c0\uc8c1\uc8c2\uc8c3\uc8c4\uc8c5\uc8c6\uc8c7\uc8c8\uc8c9\uc8ca\uc8cb\uc8cc\uc8cd\uc8ce\uc8cf\uc8d0\uc8d1\uc8d2\uc8d3\uc8d4\uc8d5\uc8d6\uc8d7\uc8d8\uc8d9\uc8da\uc8db\uc8dc\uc8dd\uc8de\uc8df\uc8e0\uc8e1\uc8e2\uc8e3\uc8e4\uc8e5\uc8e6\uc8e7\uc8e8\uc8e9\uc8ea\uc8eb\uc8ec\uc8ed\uc8ee\uc8ef\uc8f0\uc8f1\uc8f2\uc8f3\uc8f4\uc8f5\uc8f6\uc8f7\uc8f8\uc8f9\uc8fa\uc8fb\uc8fc\uc8fd\uc8fe\uc8ff\uc900\uc901\uc902\uc903\uc904\uc905\uc906\uc907\uc908\uc909\uc90a\uc90b\uc90c\uc90d\uc90e\uc90f\uc910\uc911\uc912\uc913\uc914\uc915\uc916\uc917\uc918\uc919\uc91a\uc91b\uc91c\uc91d\uc91e\uc91f\uc920\uc921\uc922\uc923\uc924\uc925\uc926\uc927\uc928\uc929\uc92a\uc92b\uc92c\uc92d\uc92e\uc92f\uc930\uc931\uc932\uc933\uc934\uc935\uc936\uc937\uc938\uc939\uc93a\uc93b\uc93c\uc93d\uc93e\uc93f\uc940\uc941\uc942\uc943\uc944\uc945\uc946\uc947\uc948\uc949\uc94a\uc94b\uc94c\uc94d\uc94e\uc94f\uc950\uc951\uc952\uc953\uc954\uc955\uc956\uc957\uc958\uc959\uc95a\uc95b\uc95c\uc95d\uc95e\uc95f\uc960\uc961\uc962\uc963\uc964\uc965\uc966\uc967\uc968\uc969\uc96a\uc96b\uc96c\uc96d\uc96e\uc96f\uc970\uc971\uc972\uc973\uc974\uc975\uc976\uc977\uc978\uc979\uc97a\uc97b\uc97c\uc97d\uc97e\uc97f\uc980\uc981\uc982\uc983\uc984\uc985\uc986\uc987\uc988\uc989\uc98a\uc98b\uc98c\uc98d\uc98e\uc98f\uc990\uc991\uc992\uc993\uc994\uc995\uc996\uc997\uc998\uc999\uc99a\uc99b\uc99c\uc99d\uc99e\uc99f\uc9a0\uc9a1\uc9a2\uc9a3\uc9a4\uc9a5\uc9a6\uc9a7\uc9a8\uc9a9\uc9aa\uc9ab\uc9ac\uc9ad\uc9ae\uc9af\uc9b0\uc9b1\uc9b2\uc9b3\uc9b4\uc9b5\uc9b6\uc9b7\uc9b8\uc9b9\uc9ba\uc9bb\uc9bc\uc9bd\uc9be\uc9bf\uc9c0\uc9c1\uc9c2\uc9c3\uc9c4\uc9c5\uc9c6\uc9c7\uc9c8\uc9c9\uc9ca\uc9cb\uc9cc\uc9cd\uc9ce\uc9cf\uc9d0\uc9d1\uc9d2\uc9d3\uc9d4\uc9d5\uc9d6\uc9d7\uc9d8\uc9d9\uc9da\uc9db\uc9dc\uc9dd\uc9de\uc9df\uc9e0\uc9e1\uc9e2\uc9e3\uc9e4\uc9e5\uc9e6\uc9e7\uc9e8\uc9e9\uc9ea\uc9eb\uc9ec\uc9ed\uc9ee\uc9ef\uc9f0\uc9f1\uc9f2\uc9f3\uc9f4\uc9f5\uc9f6\uc9f7\uc9f8\uc9f9\uc9fa\uc9fb\uc9fc\uc9fd\uc9fe\uc9ff\uca00\uca01\uca02\uca03\uca04\uca05\uca06\uca07\uca08\uca09\uca0a\uca0b\uca0c\uca0d\uca0e\uca0f\uca10\uca11\uca12\uca13\uca14\uca15\uca16\uca17\uca18\uca19\uca1a\uca1b\uca1c\uca1d\uca1e\uca1f\uca20\uca21\uca22\uca23\uca24\uca25\uca26\uca27\uca28\uca29\uca2a\uca2b\uca2c\uca2d\uca2e\uca2f\uca30\uca31\uca32\uca33\uca34\uca35\uca36\uca37\uca38\uca39\uca3a\uca3b\uca3c\uca3d\uca3e\uca3f\uca40\uca41\uca42\uca43\uca44\uca45\uca46\uca47\uca48\uca49\uca4a\uca4b\uca4c\uca4d\uca4e\uca4f\uca50\uca51\uca52\uca53\uca54\uca55\uca56\uca57\uca58\uca59\uca5a\uca5b\uca5c\uca5d\uca5e\uca5f\uca60\uca61\uca62\uca63\uca64\uca65\uca66\uca67\uca68\uca69\uca6a\uca6b\uca6c\uca6d\uca6e\uca6f\uca70\uca71\uca72\uca73\uca74\uca75\uca76\uca77\uca78\uca79\uca7a\uca7b\uca7c\uca7d\uca7e\uca7f\uca80\uca81\uca82\uca83\uca84\uca85\uca86\uca87\uca88\uca89\uca8a\uca8b\uca8c\uca8d\uca8e\uca8f\uca90\uca91\uca92\uca93\uca94\uca95\uca96\uca97\uca98\uca99\uca9a\uca9b\uca9c\uca9d\uca9e\uca9f\ucaa0\ucaa1\ucaa2\ucaa3\ucaa4\ucaa5\ucaa6\ucaa7\ucaa8\ucaa9\ucaaa\ucaab\ucaac\ucaad\ucaae\ucaaf\ucab0\ucab1\ucab2\ucab3\ucab4\ucab5\ucab6\ucab7\ucab8\ucab9\ucaba\ucabb\ucabc\ucabd\ucabe\ucabf\ucac0\ucac1\ucac2\ucac3\ucac4\ucac5\ucac6\ucac7\ucac8\ucac9\ucaca\ucacb\ucacc\ucacd\ucace\ucacf\ucad0\ucad1\ucad2\ucad3\ucad4\ucad5\ucad6\ucad7\ucad8\ucad9\ucada\ucadb\ucadc\ucadd\ucade\ucadf\ucae0\ucae1\ucae2\ucae3\ucae4\ucae5\ucae6\ucae7\ucae8\ucae9\ucaea\ucaeb\ucaec\ucaed\ucaee\ucaef\ucaf0\ucaf1\ucaf2\ucaf3\ucaf4\ucaf5\ucaf6\ucaf7\ucaf8\ucaf9\ucafa\ucafb\ucafc\ucafd\ucafe\ucaff\ucb00\ucb01\ucb02\ucb03\ucb04\ucb05\ucb06\ucb07\ucb08\ucb09\ucb0a\ucb0b\ucb0c\ucb0d\ucb0e\ucb0f\ucb10\ucb11\ucb12\ucb13\ucb14\ucb15\ucb16\ucb17\ucb18\ucb19\ucb1a\ucb1b\ucb1c\ucb1d\ucb1e\ucb1f\ucb20\ucb21\ucb22\ucb23\ucb24\ucb25\ucb26\ucb27\ucb28\ucb29\ucb2a\ucb2b\ucb2c\ucb2d\ucb2e\ucb2f\ucb30\ucb31\ucb32\ucb33\ucb34\ucb35\ucb36\ucb37\ucb38\ucb39\ucb3a\ucb3b\ucb3c\ucb3d\ucb3e\ucb3f\ucb40\ucb41\ucb42\ucb43\ucb44\ucb45\ucb46\ucb47\ucb48\ucb49\ucb4a\ucb4b\ucb4c\ucb4d\ucb4e\ucb4f\ucb50\ucb51\ucb52\ucb53\ucb54\ucb55\ucb56\ucb57\ucb58\ucb59\ucb5a\ucb5b\ucb5c\ucb5d\ucb5e\ucb5f\ucb60\ucb61\ucb62\ucb63\ucb64\ucb65\ucb66\ucb67\ucb68\ucb69\ucb6a\ucb6b\ucb6c\ucb6d\ucb6e\ucb6f\ucb70\ucb71\ucb72\ucb73\ucb74\ucb75\ucb76\ucb77\ucb78\ucb79\ucb7a\ucb7b\ucb7c\ucb7d\ucb7e\ucb7f\ucb80\ucb81\ucb82\ucb83\ucb84\ucb85\ucb86\ucb87\ucb88\ucb89\ucb8a\ucb8b\ucb8c\ucb8d\ucb8e\ucb8f\ucb90\ucb91\ucb92\ucb93\ucb94\ucb95\ucb96\ucb97\ucb98\ucb99\ucb9a\ucb9b\ucb9c\ucb9d\ucb9e\ucb9f\ucba0\ucba1\ucba2\ucba3\ucba4\ucba5\ucba6\ucba7\ucba8\ucba9\ucbaa\ucbab\ucbac\ucbad\ucbae\ucbaf\ucbb0\ucbb1\ucbb2\ucbb3\ucbb4\ucbb5\ucbb6\ucbb7\ucbb8\ucbb9\ucbba\ucbbb\ucbbc\ucbbd\ucbbe\ucbbf\ucbc0\ucbc1\ucbc2\ucbc3\ucbc4\ucbc5\ucbc6\ucbc7\ucbc8\ucbc9\ucbca\ucbcb\ucbcc\ucbcd\ucbce\ucbcf\ucbd0\ucbd1\ucbd2\ucbd3\ucbd4\ucbd5\ucbd6\ucbd7\ucbd8\ucbd9\ucbda\ucbdb\ucbdc\ucbdd\ucbde\ucbdf\ucbe0\ucbe1\ucbe2\ucbe3\ucbe4\ucbe5\ucbe6\ucbe7\ucbe8\ucbe9\ucbea\ucbeb\ucbec\ucbed\ucbee\ucbef\ucbf0\ucbf1\ucbf2\ucbf3\ucbf4\ucbf5\ucbf6\ucbf7\ucbf8\ucbf9\ucbfa\ucbfb\ucbfc\ucbfd\ucbfe\ucbff\ucc00\ucc01\ucc02\ucc03\ucc04\ucc05\ucc06\ucc07\ucc08\ucc09\ucc0a\ucc0b\ucc0c\ucc0d\ucc0e\ucc0f\ucc10\ucc11\ucc12\ucc13\ucc14\ucc15\ucc16\ucc17\ucc18\ucc19\ucc1a\ucc1b\ucc1c\ucc1d\ucc1e\ucc1f\ucc20\ucc21\ucc22\ucc23\ucc24\ucc25\ucc26\ucc27\ucc28\ucc29\ucc2a\ucc2b\ucc2c\ucc2d\ucc2e\ucc2f\ucc30\ucc31\ucc32\ucc33\ucc34\ucc35\ucc36\ucc37\ucc38\ucc39\ucc3a\ucc3b\ucc3c\ucc3d\ucc3e\ucc3f\ucc40\ucc41\ucc42\ucc43\ucc44\ucc45\ucc46\ucc47\ucc48\ucc49\ucc4a\ucc4b\ucc4c\ucc4d\ucc4e\ucc4f\ucc50\ucc51\ucc52\ucc53\ucc54\ucc55\ucc56\ucc57\ucc58\ucc59\ucc5a\ucc5b\ucc5c\ucc5d\ucc5e\ucc5f\ucc60\ucc61\ucc62\ucc63\ucc64\ucc65\ucc66\ucc67\ucc68\ucc69\ucc6a\ucc6b\ucc6c\ucc6d\ucc6e\ucc6f\ucc70\ucc71\ucc72\ucc73\ucc74\ucc75\ucc76\ucc77\ucc78\ucc79\ucc7a\ucc7b\ucc7c\ucc7d\ucc7e\ucc7f\ucc80\ucc81\ucc82\ucc83\ucc84\ucc85\ucc86\ucc87\ucc88\ucc89\ucc8a\ucc8b\ucc8c\ucc8d\ucc8e\ucc8f\ucc90\ucc91\ucc92\ucc93\ucc94\ucc95\ucc96\ucc97\ucc98\ucc99\ucc9a\ucc9b\ucc9c\ucc9d\ucc9e\ucc9f\ucca0\ucca1\ucca2\ucca3\ucca4\ucca5\ucca6\ucca7\ucca8\ucca9\uccaa\uccab\uccac\uccad\uccae\uccaf\uccb0\uccb1\uccb2\uccb3\uccb4\uccb5\uccb6\uccb7\uccb8\uccb9\uccba\uccbb\uccbc\uccbd\uccbe\uccbf\uccc0\uccc1\uccc2\uccc3\uccc4\uccc5\uccc6\uccc7\uccc8\uccc9\uccca\ucccb\ucccc\ucccd\uccce\ucccf\uccd0\uccd1\uccd2\uccd3\uccd4\uccd5\uccd6\uccd7\uccd8\uccd9\uccda\uccdb\uccdc\uccdd\uccde\uccdf\ucce0\ucce1\ucce2\ucce3\ucce4\ucce5\ucce6\ucce7\ucce8\ucce9\uccea\ucceb\uccec\ucced\uccee\uccef\uccf0\uccf1\uccf2\uccf3\uccf4\uccf5\uccf6\uccf7\uccf8\uccf9\uccfa\uccfb\uccfc\uccfd\uccfe\uccff\ucd00\ucd01\ucd02\ucd03\ucd04\ucd05\ucd06\ucd07\ucd08\ucd09\ucd0a\ucd0b\ucd0c\ucd0d\ucd0e\ucd0f\ucd10\ucd11\ucd12\ucd13\ucd14\ucd15\ucd16\ucd17\ucd18\ucd19\ucd1a\ucd1b\ucd1c\ucd1d\ucd1e\ucd1f\ucd20\ucd21\ucd22\ucd23\ucd24\ucd25\ucd26\ucd27\ucd28\ucd29\ucd2a\ucd2b\ucd2c\ucd2d\ucd2e\ucd2f\ucd30\ucd31\ucd32\ucd33\ucd34\ucd35\ucd36\ucd37\ucd38\ucd39\ucd3a\ucd3b\ucd3c\ucd3d\ucd3e\ucd3f\ucd40\ucd41\ucd42\ucd43\ucd44\ucd45\ucd46\ucd47\ucd48\ucd49\ucd4a\ucd4b\ucd4c\ucd4d\ucd4e\ucd4f\ucd50\ucd51\ucd52\ucd53\ucd54\ucd55\ucd56\ucd57\ucd58\ucd59\ucd5a\ucd5b\ucd5c\ucd5d\ucd5e\ucd5f\ucd60\ucd61\ucd62\ucd63\ucd64\ucd65\ucd66\ucd67\ucd68\ucd69\ucd6a\ucd6b\ucd6c\ucd6d\ucd6e\ucd6f\ucd70\ucd71\ucd72\ucd73\ucd74\ucd75\ucd76\ucd77\ucd78\ucd79\ucd7a\ucd7b\ucd7c\ucd7d\ucd7e\ucd7f\ucd80\ucd81\ucd82\ucd83\ucd84\ucd85\ucd86\ucd87\ucd88\ucd89\ucd8a\ucd8b\ucd8c\ucd8d\ucd8e\ucd8f\ucd90\ucd91\ucd92\ucd93\ucd94\ucd95\ucd96\ucd97\ucd98\ucd99\ucd9a\ucd9b\ucd9c\ucd9d\ucd9e\ucd9f\ucda0\ucda1\ucda2\ucda3\ucda4\ucda5\ucda6\ucda7\ucda8\ucda9\ucdaa\ucdab\ucdac\ucdad\ucdae\ucdaf\ucdb0\ucdb1\ucdb2\ucdb3\ucdb4\ucdb5\ucdb6\ucdb7\ucdb8\ucdb9\ucdba\ucdbb\ucdbc\ucdbd\ucdbe\ucdbf\ucdc0\ucdc1\ucdc2\ucdc3\ucdc4\ucdc5\ucdc6\ucdc7\ucdc8\ucdc9\ucdca\ucdcb\ucdcc\ucdcd\ucdce\ucdcf\ucdd0\ucdd1\ucdd2\ucdd3\ucdd4\ucdd5\ucdd6\ucdd7\ucdd8\ucdd9\ucdda\ucddb\ucddc\ucddd\ucdde\ucddf\ucde0\ucde1\ucde2\ucde3\ucde4\ucde5\ucde6\ucde7\ucde8\ucde9\ucdea\ucdeb\ucdec\ucded\ucdee\ucdef\ucdf0\ucdf1\ucdf2\ucdf3\ucdf4\ucdf5\ucdf6\ucdf7\ucdf8\ucdf9\ucdfa\ucdfb\ucdfc\ucdfd\ucdfe\ucdff\uce00\uce01\uce02\uce03\uce04\uce05\uce06\uce07\uce08\uce09\uce0a\uce0b\uce0c\uce0d\uce0e\uce0f\uce10\uce11\uce12\uce13\uce14\uce15\uce16\uce17\uce18\uce19\uce1a\uce1b\uce1c\uce1d\uce1e\uce1f\uce20\uce21\uce22\uce23\uce24\uce25\uce26\uce27\uce28\uce29\uce2a\uce2b\uce2c\uce2d\uce2e\uce2f\uce30\uce31\uce32\uce33\uce34\uce35\uce36\uce37\uce38\uce39\uce3a\uce3b\uce3c\uce3d\uce3e\uce3f\uce40\uce41\uce42\uce43\uce44\uce45\uce46\uce47\uce48\uce49\uce4a\uce4b\uce4c\uce4d\uce4e\uce4f\uce50\uce51\uce52\uce53\uce54\uce55\uce56\uce57\uce58\uce59\uce5a\uce5b\uce5c\uce5d\uce5e\uce5f\uce60\uce61\uce62\uce63\uce64\uce65\uce66\uce67\uce68\uce69\uce6a\uce6b\uce6c\uce6d\uce6e\uce6f\uce70\uce71\uce72\uce73\uce74\uce75\uce76\uce77\uce78\uce79\uce7a\uce7b\uce7c\uce7d\uce7e\uce7f\uce80\uce81\uce82\uce83\uce84\uce85\uce86\uce87\uce88\uce89\uce8a\uce8b\uce8c\uce8d\uce8e\uce8f\uce90\uce91\uce92\uce93\uce94\uce95\uce96\uce97\uce98\uce99\uce9a\uce9b\uce9c\uce9d\uce9e\uce9f\ucea0\ucea1\ucea2\ucea3\ucea4\ucea5\ucea6\ucea7\ucea8\ucea9\uceaa\uceab\uceac\ucead\uceae\uceaf\uceb0\uceb1\uceb2\uceb3\uceb4\uceb5\uceb6\uceb7\uceb8\uceb9\uceba\ucebb\ucebc\ucebd\ucebe\ucebf\ucec0\ucec1\ucec2\ucec3\ucec4\ucec5\ucec6\ucec7\ucec8\ucec9\uceca\ucecb\ucecc\ucecd\ucece\ucecf\uced0\uced1\uced2\uced3\uced4\uced5\uced6\uced7\uced8\uced9\uceda\ucedb\ucedc\ucedd\ucede\ucedf\ucee0\ucee1\ucee2\ucee3\ucee4\ucee5\ucee6\ucee7\ucee8\ucee9\uceea\uceeb\uceec\uceed\uceee\uceef\ucef0\ucef1\ucef2\ucef3\ucef4\ucef5\ucef6\ucef7\ucef8\ucef9\ucefa\ucefb\ucefc\ucefd\ucefe\uceff\ucf00\ucf01\ucf02\ucf03\ucf04\ucf05\ucf06\ucf07\ucf08\ucf09\ucf0a\ucf0b\ucf0c\ucf0d\ucf0e\ucf0f\ucf10\ucf11\ucf12\ucf13\ucf14\ucf15\ucf16\ucf17\ucf18\ucf19\ucf1a\ucf1b\ucf1c\ucf1d\ucf1e\ucf1f\ucf20\ucf21\ucf22\ucf23\ucf24\ucf25\ucf26\ucf27\ucf28\ucf29\ucf2a\ucf2b\ucf2c\ucf2d\ucf2e\ucf2f\ucf30\ucf31\ucf32\ucf33\ucf34\ucf35\ucf36\ucf37\ucf38\ucf39\ucf3a\ucf3b\ucf3c\ucf3d\ucf3e\ucf3f\ucf40\ucf41\ucf42\ucf43\ucf44\ucf45\ucf46\ucf47\ucf48\ucf49\ucf4a\ucf4b\ucf4c\ucf4d\ucf4e\ucf4f\ucf50\ucf51\ucf52\ucf53\ucf54\ucf55\ucf56\ucf57\ucf58\ucf59\ucf5a\ucf5b\ucf5c\ucf5d\ucf5e\ucf5f\ucf60\ucf61\ucf62\ucf63\ucf64\ucf65\ucf66\ucf67\ucf68\ucf69\ucf6a\ucf6b\ucf6c\ucf6d\ucf6e\ucf6f\ucf70\ucf71\ucf72\ucf73\ucf74\ucf75\ucf76\ucf77\ucf78\ucf79\ucf7a\ucf7b\ucf7c\ucf7d\ucf7e\ucf7f\ucf80\ucf81\ucf82\ucf83\ucf84\ucf85\ucf86\ucf87\ucf88\ucf89\ucf8a\ucf8b\ucf8c\ucf8d\ucf8e\ucf8f\ucf90\ucf91\ucf92\ucf93\ucf94\ucf95\ucf96\ucf97\ucf98\ucf99\ucf9a\ucf9b\ucf9c\ucf9d\ucf9e\ucf9f\ucfa0\ucfa1\ucfa2\ucfa3\ucfa4\ucfa5\ucfa6\ucfa7\ucfa8\ucfa9\ucfaa\ucfab\ucfac\ucfad\ucfae\ucfaf\ucfb0\ucfb1\ucfb2\ucfb3\ucfb4\ucfb5\ucfb6\ucfb7\ucfb8\ucfb9\ucfba\ucfbb\ucfbc\ucfbd\ucfbe\ucfbf\ucfc0\ucfc1\ucfc2\ucfc3\ucfc4\ucfc5\ucfc6\ucfc7\ucfc8\ucfc9\ucfca\ucfcb\ucfcc\ucfcd\ucfce\ucfcf\ucfd0\ucfd1\ucfd2\ucfd3\ucfd4\ucfd5\ucfd6\ucfd7\ucfd8\ucfd9\ucfda\ucfdb\ucfdc\ucfdd\ucfde\ucfdf\ucfe0\ucfe1\ucfe2\ucfe3\ucfe4\ucfe5\ucfe6\ucfe7\ucfe8\ucfe9\ucfea\ucfeb\ucfec\ucfed\ucfee\ucfef\ucff0\ucff1\ucff2\ucff3\ucff4\ucff5\ucff6\ucff7\ucff8\ucff9\ucffa\ucffb\ucffc\ucffd\ucffe\ucfff\ud000\ud001\ud002\ud003\ud004\ud005\ud006\ud007\ud008\ud009\ud00a\ud00b\ud00c\ud00d\ud00e\ud00f\ud010\ud011\ud012\ud013\ud014\ud015\ud016\ud017\ud018\ud019\ud01a\ud01b\ud01c\ud01d\ud01e\ud01f\ud020\ud021\ud022\ud023\ud024\ud025\ud026\ud027\ud028\ud029\ud02a\ud02b\ud02c\ud02d\ud02e\ud02f\ud030\ud031\ud032\ud033\ud034\ud035\ud036\ud037\ud038\ud039\ud03a\ud03b\ud03c\ud03d\ud03e\ud03f\ud040\ud041\ud042\ud043\ud044\ud045\ud046\ud047\ud048\ud049\ud04a\ud04b\ud04c\ud04d\ud04e\ud04f\ud050\ud051\ud052\ud053\ud054\ud055\ud056\ud057\ud058\ud059\ud05a\ud05b\ud05c\ud05d\ud05e\ud05f\ud060\ud061\ud062\ud063\ud064\ud065\ud066\ud067\ud068\ud069\ud06a\ud06b\ud06c\ud06d\ud06e\ud06f\ud070\ud071\ud072\ud073\ud074\ud075\ud076\ud077\ud078\ud079\ud07a\ud07b\ud07c\ud07d\ud07e\ud07f\ud080\ud081\ud082\ud083\ud084\ud085\ud086\ud087\ud088\ud089\ud08a\ud08b\ud08c\ud08d\ud08e\ud08f\ud090\ud091\ud092\ud093\ud094\ud095\ud096\ud097\ud098\ud099\ud09a\ud09b\ud09c\ud09d\ud09e\ud09f\ud0a0\ud0a1\ud0a2\ud0a3\ud0a4\ud0a5\ud0a6\ud0a7\ud0a8\ud0a9\ud0aa\ud0ab\ud0ac\ud0ad\ud0ae\ud0af\ud0b0\ud0b1\ud0b2\ud0b3\ud0b4\ud0b5\ud0b6\ud0b7\ud0b8\ud0b9\ud0ba\ud0bb\ud0bc\ud0bd\ud0be\ud0bf\ud0c0\ud0c1\ud0c2\ud0c3\ud0c4\ud0c5\ud0c6\ud0c7\ud0c8\ud0c9\ud0ca\ud0cb\ud0cc\ud0cd\ud0ce\ud0cf\ud0d0\ud0d1\ud0d2\ud0d3\ud0d4\ud0d5\ud0d6\ud0d7\ud0d8\ud0d9\ud0da\ud0db\ud0dc\ud0dd\ud0de\ud0df\ud0e0\ud0e1\ud0e2\ud0e3\ud0e4\ud0e5\ud0e6\ud0e7\ud0e8\ud0e9\ud0ea\ud0eb\ud0ec\ud0ed\ud0ee\ud0ef\ud0f0\ud0f1\ud0f2\ud0f3\ud0f4\ud0f5\ud0f6\ud0f7\ud0f8\ud0f9\ud0fa\ud0fb\ud0fc\ud0fd\ud0fe\ud0ff\ud100\ud101\ud102\ud103\ud104\ud105\ud106\ud107\ud108\ud109\ud10a\ud10b\ud10c\ud10d\ud10e\ud10f\ud110\ud111\ud112\ud113\ud114\ud115\ud116\ud117\ud118\ud119\ud11a\ud11b\ud11c\ud11d\ud11e\ud11f\ud120\ud121\ud122\ud123\ud124\ud125\ud126\ud127\ud128\ud129\ud12a\ud12b\ud12c\ud12d\ud12e\ud12f\ud130\ud131\ud132\ud133\ud134\ud135\ud136\ud137\ud138\ud139\ud13a\ud13b\ud13c\ud13d\ud13e\ud13f\ud140\ud141\ud142\ud143\ud144\ud145\ud146\ud147\ud148\ud149\ud14a\ud14b\ud14c\ud14d\ud14e\ud14f\ud150\ud151\ud152\ud153\ud154\ud155\ud156\ud157\ud158\ud159\ud15a\ud15b\ud15c\ud15d\ud15e\ud15f\ud160\ud161\ud162\ud163\ud164\ud165\ud166\ud167\ud168\ud169\ud16a\ud16b\ud16c\ud16d\ud16e\ud16f\ud170\ud171\ud172\ud173\ud174\ud175\ud176\ud177\ud178\ud179\ud17a\ud17b\ud17c\ud17d\ud17e\ud17f\ud180\ud181\ud182\ud183\ud184\ud185\ud186\ud187\ud188\ud189\ud18a\ud18b\ud18c\ud18d\ud18e\ud18f\ud190\ud191\ud192\ud193\ud194\ud195\ud196\ud197\ud198\ud199\ud19a\ud19b\ud19c\ud19d\ud19e\ud19f\ud1a0\ud1a1\ud1a2\ud1a3\ud1a4\ud1a5\ud1a6\ud1a7\ud1a8\ud1a9\ud1aa\ud1ab\ud1ac\ud1ad\ud1ae\ud1af\ud1b0\ud1b1\ud1b2\ud1b3\ud1b4\ud1b5\ud1b6\ud1b7\ud1b8\ud1b9\ud1ba\ud1bb\ud1bc\ud1bd\ud1be\ud1bf\ud1c0\ud1c1\ud1c2\ud1c3\ud1c4\ud1c5\ud1c6\ud1c7\ud1c8\ud1c9\ud1ca\ud1cb\ud1cc\ud1cd\ud1ce\ud1cf\ud1d0\ud1d1\ud1d2\ud1d3\ud1d4\ud1d5\ud1d6\ud1d7\ud1d8\ud1d9\ud1da\ud1db\ud1dc\ud1dd\ud1de\ud1df\ud1e0\ud1e1\ud1e2\ud1e3\ud1e4\ud1e5\ud1e6\ud1e7\ud1e8\ud1e9\ud1ea\ud1eb\ud1ec\ud1ed\ud1ee\ud1ef\ud1f0\ud1f1\ud1f2\ud1f3\ud1f4\ud1f5\ud1f6\ud1f7\ud1f8\ud1f9\ud1fa\ud1fb\ud1fc\ud1fd\ud1fe\ud1ff\ud200\ud201\ud202\ud203\ud204\ud205\ud206\ud207\ud208\ud209\ud20a\ud20b\ud20c\ud20d\ud20e\ud20f\ud210\ud211\ud212\ud213\ud214\ud215\ud216\ud217\ud218\ud219\ud21a\ud21b\ud21c\ud21d\ud21e\ud21f\ud220\ud221\ud222\ud223\ud224\ud225\ud226\ud227\ud228\ud229\ud22a\ud22b\ud22c\ud22d\ud22e\ud22f\ud230\ud231\ud232\ud233\ud234\ud235\ud236\ud237\ud238\ud239\ud23a\ud23b\ud23c\ud23d\ud23e\ud23f\ud240\ud241\ud242\ud243\ud244\ud245\ud246\ud247\ud248\ud249\ud24a\ud24b\ud24c\ud24d\ud24e\ud24f\ud250\ud251\ud252\ud253\ud254\ud255\ud256\ud257\ud258\ud259\ud25a\ud25b\ud25c\ud25d\ud25e\ud25f\ud260\ud261\ud262\ud263\ud264\ud265\ud266\ud267\ud268\ud269\ud26a\ud26b\ud26c\ud26d\ud26e\ud26f\ud270\ud271\ud272\ud273\ud274\ud275\ud276\ud277\ud278\ud279\ud27a\ud27b\ud27c\ud27d\ud27e\ud27f\ud280\ud281\ud282\ud283\ud284\ud285\ud286\ud287\ud288\ud289\ud28a\ud28b\ud28c\ud28d\ud28e\ud28f\ud290\ud291\ud292\ud293\ud294\ud295\ud296\ud297\ud298\ud299\ud29a\ud29b\ud29c\ud29d\ud29e\ud29f\ud2a0\ud2a1\ud2a2\ud2a3\ud2a4\ud2a5\ud2a6\ud2a7\ud2a8\ud2a9\ud2aa\ud2ab\ud2ac\ud2ad\ud2ae\ud2af\ud2b0\ud2b1\ud2b2\ud2b3\ud2b4\ud2b5\ud2b6\ud2b7\ud2b8\ud2b9\ud2ba\ud2bb\ud2bc\ud2bd\ud2be\ud2bf\ud2c0\ud2c1\ud2c2\ud2c3\ud2c4\ud2c5\ud2c6\ud2c7\ud2c8\ud2c9\ud2ca\ud2cb\ud2cc\ud2cd\ud2ce\ud2cf\ud2d0\ud2d1\ud2d2\ud2d3\ud2d4\ud2d5\ud2d6\ud2d7\ud2d8\ud2d9\ud2da\ud2db\ud2dc\ud2dd\ud2de\ud2df\ud2e0\ud2e1\ud2e2\ud2e3\ud2e4\ud2e5\ud2e6\ud2e7\ud2e8\ud2e9\ud2ea\ud2eb\ud2ec\ud2ed\ud2ee\ud2ef\ud2f0\ud2f1\ud2f2\ud2f3\ud2f4\ud2f5\ud2f6\ud2f7\ud2f8\ud2f9\ud2fa\ud2fb\ud2fc\ud2fd\ud2fe\ud2ff\ud300\ud301\ud302\ud303\ud304\ud305\ud306\ud307\ud308\ud309\ud30a\ud30b\ud30c\ud30d\ud30e\ud30f\ud310\ud311\ud312\ud313\ud314\ud315\ud316\ud317\ud318\ud319\ud31a\ud31b\ud31c\ud31d\ud31e\ud31f\ud320\ud321\ud322\ud323\ud324\ud325\ud326\ud327\ud328\ud329\ud32a\ud32b\ud32c\ud32d\ud32e\ud32f\ud330\ud331\ud332\ud333\ud334\ud335\ud336\ud337\ud338\ud339\ud33a\ud33b\ud33c\ud33d\ud33e\ud33f\ud340\ud341\ud342\ud343\ud344\ud345\ud346\ud347\ud348\ud349\ud34a\ud34b\ud34c\ud34d\ud34e\ud34f\ud350\ud351\ud352\ud353\ud354\ud355\ud356\ud357\ud358\ud359\ud35a\ud35b\ud35c\ud35d\ud35e\ud35f\ud360\ud361\ud362\ud363\ud364\ud365\ud366\ud367\ud368\ud369\ud36a\ud36b\ud36c\ud36d\ud36e\ud36f\ud370\ud371\ud372\ud373\ud374\ud375\ud376\ud377\ud378\ud379\ud37a\ud37b\ud37c\ud37d\ud37e\ud37f\ud380\ud381\ud382\ud383\ud384\ud385\ud386\ud387\ud388\ud389\ud38a\ud38b\ud38c\ud38d\ud38e\ud38f\ud390\ud391\ud392\ud393\ud394\ud395\ud396\ud397\ud398\ud399\ud39a\ud39b\ud39c\ud39d\ud39e\ud39f\ud3a0\ud3a1\ud3a2\ud3a3\ud3a4\ud3a5\ud3a6\ud3a7\ud3a8\ud3a9\ud3aa\ud3ab\ud3ac\ud3ad\ud3ae\ud3af\ud3b0\ud3b1\ud3b2\ud3b3\ud3b4\ud3b5\ud3b6\ud3b7\ud3b8\ud3b9\ud3ba\ud3bb\ud3bc\ud3bd\ud3be\ud3bf\ud3c0\ud3c1\ud3c2\ud3c3\ud3c4\ud3c5\ud3c6\ud3c7\ud3c8\ud3c9\ud3ca\ud3cb\ud3cc\ud3cd\ud3ce\ud3cf\ud3d0\ud3d1\ud3d2\ud3d3\ud3d4\ud3d5\ud3d6\ud3d7\ud3d8\ud3d9\ud3da\ud3db\ud3dc\ud3dd\ud3de\ud3df\ud3e0\ud3e1\ud3e2\ud3e3\ud3e4\ud3e5\ud3e6\ud3e7\ud3e8\ud3e9\ud3ea\ud3eb\ud3ec\ud3ed\ud3ee\ud3ef\ud3f0\ud3f1\ud3f2\ud3f3\ud3f4\ud3f5\ud3f6\ud3f7\ud3f8\ud3f9\ud3fa\ud3fb\ud3fc\ud3fd\ud3fe\ud3ff\ud400\ud401\ud402\ud403\ud404\ud405\ud406\ud407\ud408\ud409\ud40a\ud40b\ud40c\ud40d\ud40e\ud40f\ud410\ud411\ud412\ud413\ud414\ud415\ud416\ud417\ud418\ud419\ud41a\ud41b\ud41c\ud41d\ud41e\ud41f\ud420\ud421\ud422\ud423\ud424\ud425\ud426\ud427\ud428\ud429\ud42a\ud42b\ud42c\ud42d\ud42e\ud42f\ud430\ud431\ud432\ud433\ud434\ud435\ud436\ud437\ud438\ud439\ud43a\ud43b\ud43c\ud43d\ud43e\ud43f\ud440\ud441\ud442\ud443\ud444\ud445\ud446\ud447\ud448\ud449\ud44a\ud44b\ud44c\ud44d\ud44e\ud44f\ud450\ud451\ud452\ud453\ud454\ud455\ud456\ud457\ud458\ud459\ud45a\ud45b\ud45c\ud45d\ud45e\ud45f\ud460\ud461\ud462\ud463\ud464\ud465\ud466\ud467\ud468\ud469\ud46a\ud46b\ud46c\ud46d\ud46e\ud46f\ud470\ud471\ud472\ud473\ud474\ud475\ud476\ud477\ud478\ud479\ud47a\ud47b\ud47c\ud47d\ud47e\ud47f\ud480\ud481\ud482\ud483\ud484\ud485\ud486\ud487\ud488\ud489\ud48a\ud48b\ud48c\ud48d\ud48e\ud48f\ud490\ud491\ud492\ud493\ud494\ud495\ud496\ud497\ud498\ud499\ud49a\ud49b\ud49c\ud49d\ud49e\ud49f\ud4a0\ud4a1\ud4a2\ud4a3\ud4a4\ud4a5\ud4a6\ud4a7\ud4a8\ud4a9\ud4aa\ud4ab\ud4ac\ud4ad\ud4ae\ud4af\ud4b0\ud4b1\ud4b2\ud4b3\ud4b4\ud4b5\ud4b6\ud4b7\ud4b8\ud4b9\ud4ba\ud4bb\ud4bc\ud4bd\ud4be\ud4bf\ud4c0\ud4c1\ud4c2\ud4c3\ud4c4\ud4c5\ud4c6\ud4c7\ud4c8\ud4c9\ud4ca\ud4cb\ud4cc\ud4cd\ud4ce\ud4cf\ud4d0\ud4d1\ud4d2\ud4d3\ud4d4\ud4d5\ud4d6\ud4d7\ud4d8\ud4d9\ud4da\ud4db\ud4dc\ud4dd\ud4de\ud4df\ud4e0\ud4e1\ud4e2\ud4e3\ud4e4\ud4e5\ud4e6\ud4e7\ud4e8\ud4e9\ud4ea\ud4eb\ud4ec\ud4ed\ud4ee\ud4ef\ud4f0\ud4f1\ud4f2\ud4f3\ud4f4\ud4f5\ud4f6\ud4f7\ud4f8\ud4f9\ud4fa\ud4fb\ud4fc\ud4fd\ud4fe\ud4ff\ud500\ud501\ud502\ud503\ud504\ud505\ud506\ud507\ud508\ud509\ud50a\ud50b\ud50c\ud50d\ud50e\ud50f\ud510\ud511\ud512\ud513\ud514\ud515\ud516\ud517\ud518\ud519\ud51a\ud51b\ud51c\ud51d\ud51e\ud51f\ud520\ud521\ud522\ud523\ud524\ud525\ud526\ud527\ud528\ud529\ud52a\ud52b\ud52c\ud52d\ud52e\ud52f\ud530\ud531\ud532\ud533\ud534\ud535\ud536\ud537\ud538\ud539\ud53a\ud53b\ud53c\ud53d\ud53e\ud53f\ud540\ud541\ud542\ud543\ud544\ud545\ud546\ud547\ud548\ud549\ud54a\ud54b\ud54c\ud54d\ud54e\ud54f\ud550\ud551\ud552\ud553\ud554\ud555\ud556\ud557\ud558\ud559\ud55a\ud55b\ud55c\ud55d\ud55e\ud55f\ud560\ud561\ud562\ud563\ud564\ud565\ud566\ud567\ud568\ud569\ud56a\ud56b\ud56c\ud56d\ud56e\ud56f\ud570\ud571\ud572\ud573\ud574\ud575\ud576\ud577\ud578\ud579\ud57a\ud57b\ud57c\ud57d\ud57e\ud57f\ud580\ud581\ud582\ud583\ud584\ud585\ud586\ud587\ud588\ud589\ud58a\ud58b\ud58c\ud58d\ud58e\ud58f\ud590\ud591\ud592\ud593\ud594\ud595\ud596\ud597\ud598\ud599\ud59a\ud59b\ud59c\ud59d\ud59e\ud59f\ud5a0\ud5a1\ud5a2\ud5a3\ud5a4\ud5a5\ud5a6\ud5a7\ud5a8\ud5a9\ud5aa\ud5ab\ud5ac\ud5ad\ud5ae\ud5af\ud5b0\ud5b1\ud5b2\ud5b3\ud5b4\ud5b5\ud5b6\ud5b7\ud5b8\ud5b9\ud5ba\ud5bb\ud5bc\ud5bd\ud5be\ud5bf\ud5c0\ud5c1\ud5c2\ud5c3\ud5c4\ud5c5\ud5c6\ud5c7\ud5c8\ud5c9\ud5ca\ud5cb\ud5cc\ud5cd\ud5ce\ud5cf\ud5d0\ud5d1\ud5d2\ud5d3\ud5d4\ud5d5\ud5d6\ud5d7\ud5d8\ud5d9\ud5da\ud5db\ud5dc\ud5dd\ud5de\ud5df\ud5e0\ud5e1\ud5e2\ud5e3\ud5e4\ud5e5\ud5e6\ud5e7\ud5e8\ud5e9\ud5ea\ud5eb\ud5ec\ud5ed\ud5ee\ud5ef\ud5f0\ud5f1\ud5f2\ud5f3\ud5f4\ud5f5\ud5f6\ud5f7\ud5f8\ud5f9\ud5fa\ud5fb\ud5fc\ud5fd\ud5fe\ud5ff\ud600\ud601\ud602\ud603\ud604\ud605\ud606\ud607\ud608\ud609\ud60a\ud60b\ud60c\ud60d\ud60e\ud60f\ud610\ud611\ud612\ud613\ud614\ud615\ud616\ud617\ud618\ud619\ud61a\ud61b\ud61c\ud61d\ud61e\ud61f\ud620\ud621\ud622\ud623\ud624\ud625\ud626\ud627\ud628\ud629\ud62a\ud62b\ud62c\ud62d\ud62e\ud62f\ud630\ud631\ud632\ud633\ud634\ud635\ud636\ud637\ud638\ud639\ud63a\ud63b\ud63c\ud63d\ud63e\ud63f\ud640\ud641\ud642\ud643\ud644\ud645\ud646\ud647\ud648\ud649\ud64a\ud64b\ud64c\ud64d\ud64e\ud64f\ud650\ud651\ud652\ud653\ud654\ud655\ud656\ud657\ud658\ud659\ud65a\ud65b\ud65c\ud65d\ud65e\ud65f\ud660\ud661\ud662\ud663\ud664\ud665\ud666\ud667\ud668\ud669\ud66a\ud66b\ud66c\ud66d\ud66e\ud66f\ud670\ud671\ud672\ud673\ud674\ud675\ud676\ud677\ud678\ud679\ud67a\ud67b\ud67c\ud67d\ud67e\ud67f\ud680\ud681\ud682\ud683\ud684\ud685\ud686\ud687\ud688\ud689\ud68a\ud68b\ud68c\ud68d\ud68e\ud68f\ud690\ud691\ud692\ud693\ud694\ud695\ud696\ud697\ud698\ud699\ud69a\ud69b\ud69c\ud69d\ud69e\ud69f\ud6a0\ud6a1\ud6a2\ud6a3\ud6a4\ud6a5\ud6a6\ud6a7\ud6a8\ud6a9\ud6aa\ud6ab\ud6ac\ud6ad\ud6ae\ud6af\ud6b0\ud6b1\ud6b2\ud6b3\ud6b4\ud6b5\ud6b6\ud6b7\ud6b8\ud6b9\ud6ba\ud6bb\ud6bc\ud6bd\ud6be\ud6bf\ud6c0\ud6c1\ud6c2\ud6c3\ud6c4\ud6c5\ud6c6\ud6c7\ud6c8\ud6c9\ud6ca\ud6cb\ud6cc\ud6cd\ud6ce\ud6cf\ud6d0\ud6d1\ud6d2\ud6d3\ud6d4\ud6d5\ud6d6\ud6d7\ud6d8\ud6d9\ud6da\ud6db\ud6dc\ud6dd\ud6de\ud6df\ud6e0\ud6e1\ud6e2\ud6e3\ud6e4\ud6e5\ud6e6\ud6e7\ud6e8\ud6e9\ud6ea\ud6eb\ud6ec\ud6ed\ud6ee\ud6ef\ud6f0\ud6f1\ud6f2\ud6f3\ud6f4\ud6f5\ud6f6\ud6f7\ud6f8\ud6f9\ud6fa\ud6fb\ud6fc\ud6fd\ud6fe\ud6ff\ud700\ud701\ud702\ud703\ud704\ud705\ud706\ud707\ud708\ud709\ud70a\ud70b\ud70c\ud70d\ud70e\ud70f\ud710\ud711\ud712\ud713\ud714\ud715\ud716\ud717\ud718\ud719\ud71a\ud71b\ud71c\ud71d\ud71e\ud71f\ud720\ud721\ud722\ud723\ud724\ud725\ud726\ud727\ud728\ud729\ud72a\ud72b\ud72c\ud72d\ud72e\ud72f\ud730\ud731\ud732\ud733\ud734\ud735\ud736\ud737\ud738\ud739\ud73a\ud73b\ud73c\ud73d\ud73e\ud73f\ud740\ud741\ud742\ud743\ud744\ud745\ud746\ud747\ud748\ud749\ud74a\ud74b\ud74c\ud74d\ud74e\ud74f\ud750\ud751\ud752\ud753\ud754\ud755\ud756\ud757\ud758\ud759\ud75a\ud75b\ud75c\ud75d\ud75e\ud75f\ud760\ud761\ud762\ud763\ud764\ud765\ud766\ud767\ud768\ud769\ud76a\ud76b\ud76c\ud76d\ud76e\ud76f\ud770\ud771\ud772\ud773\ud774\ud775\ud776\ud777\ud778\ud779\ud77a\ud77b\ud77c\ud77d\ud77e\ud77f\ud780\ud781\ud782\ud783\ud784\ud785\ud786\ud787\ud788\ud789\ud78a\ud78b\ud78c\ud78d\ud78e\ud78f\ud790\ud791\ud792\ud793\ud794\ud795\ud796\ud797\ud798\ud799\ud79a\ud79b\ud79c\ud79d\ud79e\ud79f\ud7a0\ud7a1\ud7a2\ud7a3\uf900\uf901\uf902\uf903\uf904\uf905\uf906\uf907\uf908\uf909\uf90a\uf90b\uf90c\uf90d\uf90e\uf90f\uf910\uf911\uf912\uf913\uf914\uf915\uf916\uf917\uf918\uf919\uf91a\uf91b\uf91c\uf91d\uf91e\uf91f\uf920\uf921\uf922\uf923\uf924\uf925\uf926\uf927\uf928\uf929\uf92a\uf92b\uf92c\uf92d\uf92e\uf92f\uf930\uf931\uf932\uf933\uf934\uf935\uf936\uf937\uf938\uf939\uf93a\uf93b\uf93c\uf93d\uf93e\uf93f\uf940\uf941\uf942\uf943\uf944\uf945\uf946\uf947\uf948\uf949\uf94a\uf94b\uf94c\uf94d\uf94e\uf94f\uf950\uf951\uf952\uf953\uf954\uf955\uf956\uf957\uf958\uf959\uf95a\uf95b\uf95c\uf95d\uf95e\uf95f\uf960\uf961\uf962\uf963\uf964\uf965\uf966\uf967\uf968\uf969\uf96a\uf96b\uf96c\uf96d\uf96e\uf96f\uf970\uf971\uf972\uf973\uf974\uf975\uf976\uf977\uf978\uf979\uf97a\uf97b\uf97c\uf97d\uf97e\uf97f\uf980\uf981\uf982\uf983\uf984\uf985\uf986\uf987\uf988\uf989\uf98a\uf98b\uf98c\uf98d\uf98e\uf98f\uf990\uf991\uf992\uf993\uf994\uf995\uf996\uf997\uf998\uf999\uf99a\uf99b\uf99c\uf99d\uf99e\uf99f\uf9a0\uf9a1\uf9a2\uf9a3\uf9a4\uf9a5\uf9a6\uf9a7\uf9a8\uf9a9\uf9aa\uf9ab\uf9ac\uf9ad\uf9ae\uf9af\uf9b0\uf9b1\uf9b2\uf9b3\uf9b4\uf9b5\uf9b6\uf9b7\uf9b8\uf9b9\uf9ba\uf9bb\uf9bc\uf9bd\uf9be\uf9bf\uf9c0\uf9c1\uf9c2\uf9c3\uf9c4\uf9c5\uf9c6\uf9c7\uf9c8\uf9c9\uf9ca\uf9cb\uf9cc\uf9cd\uf9ce\uf9cf\uf9d0\uf9d1\uf9d2\uf9d3\uf9d4\uf9d5\uf9d6\uf9d7\uf9d8\uf9d9\uf9da\uf9db\uf9dc\uf9dd\uf9de\uf9df\uf9e0\uf9e1\uf9e2\uf9e3\uf9e4\uf9e5\uf9e6\uf9e7\uf9e8\uf9e9\uf9ea\uf9eb\uf9ec\uf9ed\uf9ee\uf9ef\uf9f0\uf9f1\uf9f2\uf9f3\uf9f4\uf9f5\uf9f6\uf9f7\uf9f8\uf9f9\uf9fa\uf9fb\uf9fc\uf9fd\uf9fe\uf9ff\ufa00\ufa01\ufa02\ufa03\ufa04\ufa05\ufa06\ufa07\ufa08\ufa09\ufa0a\ufa0b\ufa0c\ufa0d\ufa0e\ufa0f\ufa10\ufa11\ufa12\ufa13\ufa14\ufa15\ufa16\ufa17\ufa18\ufa19\ufa1a\ufa1b\ufa1c\ufa1d\ufa1e\ufa1f\ufa20\ufa21\ufa22\ufa23\ufa24\ufa25\ufa26\ufa27\ufa28\ufa29\ufa2a\ufa2b\ufa2c\ufa2d\ufa30\ufa31\ufa32\ufa33\ufa34\ufa35\ufa36\ufa37\ufa38\ufa39\ufa3a\ufa3b\ufa3c\ufa3d\ufa3e\ufa3f\ufa40\ufa41\ufa42\ufa43\ufa44\ufa45\ufa46\ufa47\ufa48\ufa49\ufa4a\ufa4b\ufa4c\ufa4d\ufa4e\ufa4f\ufa50\ufa51\ufa52\ufa53\ufa54\ufa55\ufa56\ufa57\ufa58\ufa59\ufa5a\ufa5b\ufa5c\ufa5d\ufa5e\ufa5f\ufa60\ufa61\ufa62\ufa63\ufa64\ufa65\ufa66\ufa67\ufa68\ufa69\ufa6a\ufa70\ufa71\ufa72\ufa73\ufa74\ufa75\ufa76\ufa77\ufa78\ufa79\ufa7a\ufa7b\ufa7c\ufa7d\ufa7e\ufa7f\ufa80\ufa81\ufa82\ufa83\ufa84\ufa85\ufa86\ufa87\ufa88\ufa89\ufa8a\ufa8b\ufa8c\ufa8d\ufa8e\ufa8f\ufa90\ufa91\ufa92\ufa93\ufa94\ufa95\ufa96\ufa97\ufa98\ufa99\ufa9a\ufa9b\ufa9c\ufa9d\ufa9e\ufa9f\ufaa0\ufaa1\ufaa2\ufaa3\ufaa4\ufaa5\ufaa6\ufaa7\ufaa8\ufaa9\ufaaa\ufaab\ufaac\ufaad\ufaae\ufaaf\ufab0\ufab1\ufab2\ufab3\ufab4\ufab5\ufab6\ufab7\ufab8\ufab9\ufaba\ufabb\ufabc\ufabd\ufabe\ufabf\ufac0\ufac1\ufac2\ufac3\ufac4\ufac5\ufac6\ufac7\ufac8\ufac9\ufaca\ufacb\ufacc\ufacd\uface\ufacf\ufad0\ufad1\ufad2\ufad3\ufad4\ufad5\ufad6\ufad7\ufad8\ufad9\ufb1d\ufb1f\ufb20\ufb21\ufb22\ufb23\ufb24\ufb25\ufb26\ufb27\ufb28\ufb2a\ufb2b\ufb2c\ufb2d\ufb2e\ufb2f\ufb30\ufb31\ufb32\ufb33\ufb34\ufb35\ufb36\ufb38\ufb39\ufb3a\ufb3b\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46\ufb47\ufb48\ufb49\ufb4a\ufb4b\ufb4c\ufb4d\ufb4e\ufb4f\ufb50\ufb51\ufb52\ufb53\ufb54\ufb55\ufb56\ufb57\ufb58\ufb59\ufb5a\ufb5b\ufb5c\ufb5d\ufb5e\ufb5f\ufb60\ufb61\ufb62\ufb63\ufb64\ufb65\ufb66\ufb67\ufb68\ufb69\ufb6a\ufb6b\ufb6c\ufb6d\ufb6e\ufb6f\ufb70\ufb71\ufb72\ufb73\ufb74\ufb75\ufb76\ufb77\ufb78\ufb79\ufb7a\ufb7b\ufb7c\ufb7d\ufb7e\ufb7f\ufb80\ufb81\ufb82\ufb83\ufb84\ufb85\ufb86\ufb87\ufb88\ufb89\ufb8a\ufb8b\ufb8c\ufb8d\ufb8e\ufb8f\ufb90\ufb91\ufb92\ufb93\ufb94\ufb95\ufb96\ufb97\ufb98\ufb99\ufb9a\ufb9b\ufb9c\ufb9d\ufb9e\ufb9f\ufba0\ufba1\ufba2\ufba3\ufba4\ufba5\ufba6\ufba7\ufba8\ufba9\ufbaa\ufbab\ufbac\ufbad\ufbae\ufbaf\ufbb0\ufbb1\ufbd3\ufbd4\ufbd5\ufbd6\ufbd7\ufbd8\ufbd9\ufbda\ufbdb\ufbdc\ufbdd\ufbde\ufbdf\ufbe0\ufbe1\ufbe2\ufbe3\ufbe4\ufbe5\ufbe6\ufbe7\ufbe8\ufbe9\ufbea\ufbeb\ufbec\ufbed\ufbee\ufbef\ufbf0\ufbf1\ufbf2\ufbf3\ufbf4\ufbf5\ufbf6\ufbf7\ufbf8\ufbf9\ufbfa\ufbfb\ufbfc\ufbfd\ufbfe\ufbff\ufc00\ufc01\ufc02\ufc03\ufc04\ufc05\ufc06\ufc07\ufc08\ufc09\ufc0a\ufc0b\ufc0c\ufc0d\ufc0e\ufc0f\ufc10\ufc11\ufc12\ufc13\ufc14\ufc15\ufc16\ufc17\ufc18\ufc19\ufc1a\ufc1b\ufc1c\ufc1d\ufc1e\ufc1f\ufc20\ufc21\ufc22\ufc23\ufc24\ufc25\ufc26\ufc27\ufc28\ufc29\ufc2a\ufc2b\ufc2c\ufc2d\ufc2e\ufc2f\ufc30\ufc31\ufc32\ufc33\ufc34\ufc35\ufc36\ufc37\ufc38\ufc39\ufc3a\ufc3b\ufc3c\ufc3d\ufc3e\ufc3f\ufc40\ufc41\ufc42\ufc43\ufc44\ufc45\ufc46\ufc47\ufc48\ufc49\ufc4a\ufc4b\ufc4c\ufc4d\ufc4e\ufc4f\ufc50\ufc51\ufc52\ufc53\ufc54\ufc55\ufc56\ufc57\ufc58\ufc59\ufc5a\ufc5b\ufc5c\ufc5d\ufc5e\ufc5f\ufc60\ufc61\ufc62\ufc63\ufc64\ufc65\ufc66\ufc67\ufc68\ufc69\ufc6a\ufc6b\ufc6c\ufc6d\ufc6e\ufc6f\ufc70\ufc71\ufc72\ufc73\ufc74\ufc75\ufc76\ufc77\ufc78\ufc79\ufc7a\ufc7b\ufc7c\ufc7d\ufc7e\ufc7f\ufc80\ufc81\ufc82\ufc83\ufc84\ufc85\ufc86\ufc87\ufc88\ufc89\ufc8a\ufc8b\ufc8c\ufc8d\ufc8e\ufc8f\ufc90\ufc91\ufc92\ufc93\ufc94\ufc95\ufc96\ufc97\ufc98\ufc99\ufc9a\ufc9b\ufc9c\ufc9d\ufc9e\ufc9f\ufca0\ufca1\ufca2\ufca3\ufca4\ufca5\ufca6\ufca7\ufca8\ufca9\ufcaa\ufcab\ufcac\ufcad\ufcae\ufcaf\ufcb0\ufcb1\ufcb2\ufcb3\ufcb4\ufcb5\ufcb6\ufcb7\ufcb8\ufcb9\ufcba\ufcbb\ufcbc\ufcbd\ufcbe\ufcbf\ufcc0\ufcc1\ufcc2\ufcc3\ufcc4\ufcc5\ufcc6\ufcc7\ufcc8\ufcc9\ufcca\ufccb\ufccc\ufccd\ufcce\ufccf\ufcd0\ufcd1\ufcd2\ufcd3\ufcd4\ufcd5\ufcd6\ufcd7\ufcd8\ufcd9\ufcda\ufcdb\ufcdc\ufcdd\ufcde\ufcdf\ufce0\ufce1\ufce2\ufce3\ufce4\ufce5\ufce6\ufce7\ufce8\ufce9\ufcea\ufceb\ufcec\ufced\ufcee\ufcef\ufcf0\ufcf1\ufcf2\ufcf3\ufcf4\ufcf5\ufcf6\ufcf7\ufcf8\ufcf9\ufcfa\ufcfb\ufcfc\ufcfd\ufcfe\ufcff\ufd00\ufd01\ufd02\ufd03\ufd04\ufd05\ufd06\ufd07\ufd08\ufd09\ufd0a\ufd0b\ufd0c\ufd0d\ufd0e\ufd0f\ufd10\ufd11\ufd12\ufd13\ufd14\ufd15\ufd16\ufd17\ufd18\ufd19\ufd1a\ufd1b\ufd1c\ufd1d\ufd1e\ufd1f\ufd20\ufd21\ufd22\ufd23\ufd24\ufd25\ufd26\ufd27\ufd28\ufd29\ufd2a\ufd2b\ufd2c\ufd2d\ufd2e\ufd2f\ufd30\ufd31\ufd32\ufd33\ufd34\ufd35\ufd36\ufd37\ufd38\ufd39\ufd3a\ufd3b\ufd3c\ufd3d\ufd50\ufd51\ufd52\ufd53\ufd54\ufd55\ufd56\ufd57\ufd58\ufd59\ufd5a\ufd5b\ufd5c\ufd5d\ufd5e\ufd5f\ufd60\ufd61\ufd62\ufd63\ufd64\ufd65\ufd66\ufd67\ufd68\ufd69\ufd6a\ufd6b\ufd6c\ufd6d\ufd6e\ufd6f\ufd70\ufd71\ufd72\ufd73\ufd74\ufd75\ufd76\ufd77\ufd78\ufd79\ufd7a\ufd7b\ufd7c\ufd7d\ufd7e\ufd7f\ufd80\ufd81\ufd82\ufd83\ufd84\ufd85\ufd86\ufd87\ufd88\ufd89\ufd8a\ufd8b\ufd8c\ufd8d\ufd8e\ufd8f\ufd92\ufd93\ufd94\ufd95\ufd96\ufd97\ufd98\ufd99\ufd9a\ufd9b\ufd9c\ufd9d\ufd9e\ufd9f\ufda0\ufda1\ufda2\ufda3\ufda4\ufda5\ufda6\ufda7\ufda8\ufda9\ufdaa\ufdab\ufdac\ufdad\ufdae\ufdaf\ufdb0\ufdb1\ufdb2\ufdb3\ufdb4\ufdb5\ufdb6\ufdb7\ufdb8\ufdb9\ufdba\ufdbb\ufdbc\ufdbd\ufdbe\ufdbf\ufdc0\ufdc1\ufdc2\ufdc3\ufdc4\ufdc5\ufdc6\ufdc7\ufdf0\ufdf1\ufdf2\ufdf3\ufdf4\ufdf5\ufdf6\ufdf7\ufdf8\ufdf9\ufdfa\ufdfb\ufe70\ufe71\ufe72\ufe73\ufe74\ufe76\ufe77\ufe78\ufe79\ufe7a\ufe7b\ufe7c\ufe7d\ufe7e\ufe7f\ufe80\ufe81\ufe82\ufe83\ufe84\ufe85\ufe86\ufe87\ufe88\ufe89\ufe8a\ufe8b\ufe8c\ufe8d\ufe8e\ufe8f\ufe90\ufe91\ufe92\ufe93\ufe94\ufe95\ufe96\ufe97\ufe98\ufe99\ufe9a\ufe9b\ufe9c\ufe9d\ufe9e\ufe9f\ufea0\ufea1\ufea2\ufea3\ufea4\ufea5\ufea6\ufea7\ufea8\ufea9\ufeaa\ufeab\ufeac\ufead\ufeae\ufeaf\ufeb0\ufeb1\ufeb2\ufeb3\ufeb4\ufeb5\ufeb6\ufeb7\ufeb8\ufeb9\ufeba\ufebb\ufebc\ufebd\ufebe\ufebf\ufec0\ufec1\ufec2\ufec3\ufec4\ufec5\ufec6\ufec7\ufec8\ufec9\ufeca\ufecb\ufecc\ufecd\ufece\ufecf\ufed0\ufed1\ufed2\ufed3\ufed4\ufed5\ufed6\ufed7\ufed8\ufed9\ufeda\ufedb\ufedc\ufedd\ufede\ufedf\ufee0\ufee1\ufee2\ufee3\ufee4\ufee5\ufee6\ufee7\ufee8\ufee9\ufeea\ufeeb\ufeec\ufeed\ufeee\ufeef\ufef0\ufef1\ufef2\ufef3\ufef4\ufef5\ufef6\ufef7\ufef8\ufef9\ufefa\ufefb\ufefc\uff66\uff67\uff68\uff69\uff6a\uff6b\uff6c\uff6d\uff6e\uff6f\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\uff7b\uff7c\uff7d\uff7e\uff7f\uff80\uff81\uff82\uff83\uff84\uff85\uff86\uff87\uff88\uff89\uff8a\uff8b\uff8c\uff8d\uff8e\uff8f\uff90\uff91\uff92\uff93\uff94\uff95\uff96\uff97\uff98\uff99\uff9a\uff9b\uff9c\uff9d\uffa0\uffa1\uffa2\uffa3\uffa4\uffa5\uffa6\uffa7\uffa8\uffa9\uffaa\uffab\uffac\uffad\uffae\uffaf\uffb0\uffb1\uffb2\uffb3\uffb4\uffb5\uffb6\uffb7\uffb8\uffb9\uffba\uffbb\uffbc\uffbd\uffbe\uffc2\uffc3\uffc4\uffc5\uffc6\uffc7\uffca\uffcb\uffcc\uffcd\uffce\uffcf\uffd2\uffd3\uffd4\uffd5\uffd6\uffd7\uffda\uffdb\uffdc' + +Lt = u'\u01c5\u01c8\u01cb\u01f2\u1f88\u1f89\u1f8a\u1f8b\u1f8c\u1f8d\u1f8e\u1f8f\u1f98\u1f99\u1f9a\u1f9b\u1f9c\u1f9d\u1f9e\u1f9f\u1fa8\u1fa9\u1faa\u1fab\u1fac\u1fad\u1fae\u1faf\u1fbc\u1fcc\u1ffc' + +Lu = u'ABCDEFGHIJKLMNOPQRSTUVWXYZ\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0139\u013b\u013d\u013f\u0141\u0143\u0145\u0147\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u0179\u017b\u017d\u0181\u0182\u0184\u0186\u0187\u0189\u018a\u018b\u018e\u018f\u0190\u0191\u0193\u0194\u0196\u0197\u0198\u019c\u019d\u019f\u01a0\u01a2\u01a4\u01a6\u01a7\u01a9\u01ac\u01ae\u01af\u01b1\u01b2\u01b3\u01b5\u01b7\u01b8\u01bc\u01c4\u01c7\u01ca\u01cd\u01cf\u01d1\u01d3\u01d5\u01d7\u01d9\u01db\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f1\u01f4\u01f6\u01f7\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u023a\u023b\u023d\u023e\u0241\u0386\u0388\u0389\u038a\u038c\u038e\u038f\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03aa\u03ab\u03d2\u03d3\u03d4\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u03f4\u03f7\u03f9\u03fa\u03fd\u03fe\u03ff\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040a\u040b\u040c\u040d\u040e\u040f\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0460\u0462\u0464\u0466\u0468\u046a\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a\u047c\u047e\u0480\u048a\u048c\u048e\u0490\u0492\u0494\u0496\u0498\u049a\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa\u04ac\u04ae\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c0\u04c1\u04c3\u04c5\u04c7\u04c9\u04cb\u04cd\u04d0\u04d2\u04d4\u04d6\u04d8\u04da\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea\u04ec\u04ee\u04f0\u04f2\u04f4\u04f6\u04f8\u0500\u0502\u0504\u0506\u0508\u050a\u050c\u050e\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053a\u053b\u053c\u053d\u053e\u053f\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054a\u054b\u054c\u054d\u054e\u054f\u0550\u0551\u0552\u0553\u0554\u0555\u0556\u10a0\u10a1\u10a2\u10a3\u10a4\u10a5\u10a6\u10a7\u10a8\u10a9\u10aa\u10ab\u10ac\u10ad\u10ae\u10af\u10b0\u10b1\u10b2\u10b3\u10b4\u10b5\u10b6\u10b7\u10b8\u10b9\u10ba\u10bb\u10bc\u10bd\u10be\u10bf\u10c0\u10c1\u10c2\u10c3\u10c4\u10c5\u1e00\u1e02\u1e04\u1e06\u1e08\u1e0a\u1e0c\u1e0e\u1e10\u1e12\u1e14\u1e16\u1e18\u1e1a\u1e1c\u1e1e\u1e20\u1e22\u1e24\u1e26\u1e28\u1e2a\u1e2c\u1e2e\u1e30\u1e32\u1e34\u1e36\u1e38\u1e3a\u1e3c\u1e3e\u1e40\u1e42\u1e44\u1e46\u1e48\u1e4a\u1e4c\u1e4e\u1e50\u1e52\u1e54\u1e56\u1e58\u1e5a\u1e5c\u1e5e\u1e60\u1e62\u1e64\u1e66\u1e68\u1e6a\u1e6c\u1e6e\u1e70\u1e72\u1e74\u1e76\u1e78\u1e7a\u1e7c\u1e7e\u1e80\u1e82\u1e84\u1e86\u1e88\u1e8a\u1e8c\u1e8e\u1e90\u1e92\u1e94\u1ea0\u1ea2\u1ea4\u1ea6\u1ea8\u1eaa\u1eac\u1eae\u1eb0\u1eb2\u1eb4\u1eb6\u1eb8\u1eba\u1ebc\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ec8\u1eca\u1ecc\u1ece\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1eda\u1edc\u1ede\u1ee0\u1ee2\u1ee4\u1ee6\u1ee8\u1eea\u1eec\u1eee\u1ef0\u1ef2\u1ef4\u1ef6\u1ef8\u1f08\u1f09\u1f0a\u1f0b\u1f0c\u1f0d\u1f0e\u1f0f\u1f18\u1f19\u1f1a\u1f1b\u1f1c\u1f1d\u1f28\u1f29\u1f2a\u1f2b\u1f2c\u1f2d\u1f2e\u1f2f\u1f38\u1f39\u1f3a\u1f3b\u1f3c\u1f3d\u1f3e\u1f3f\u1f48\u1f49\u1f4a\u1f4b\u1f4c\u1f4d\u1f59\u1f5b\u1f5d\u1f5f\u1f68\u1f69\u1f6a\u1f6b\u1f6c\u1f6d\u1f6e\u1f6f\u1fb8\u1fb9\u1fba\u1fbb\u1fc8\u1fc9\u1fca\u1fcb\u1fd8\u1fd9\u1fda\u1fdb\u1fe8\u1fe9\u1fea\u1feb\u1fec\u1ff8\u1ff9\u1ffa\u1ffb\u2102\u2107\u210b\u210c\u210d\u2110\u2111\u2112\u2115\u2119\u211a\u211b\u211c\u211d\u2124\u2126\u2128\u212a\u212b\u212c\u212d\u2130\u2131\u2133\u213e\u213f\u2145\u2c00\u2c01\u2c02\u2c03\u2c04\u2c05\u2c06\u2c07\u2c08\u2c09\u2c0a\u2c0b\u2c0c\u2c0d\u2c0e\u2c0f\u2c10\u2c11\u2c12\u2c13\u2c14\u2c15\u2c16\u2c17\u2c18\u2c19\u2c1a\u2c1b\u2c1c\u2c1d\u2c1e\u2c1f\u2c20\u2c21\u2c22\u2c23\u2c24\u2c25\u2c26\u2c27\u2c28\u2c29\u2c2a\u2c2b\u2c2c\u2c2d\u2c2e\u2c80\u2c82\u2c84\u2c86\u2c88\u2c8a\u2c8c\u2c8e\u2c90\u2c92\u2c94\u2c96\u2c98\u2c9a\u2c9c\u2c9e\u2ca0\u2ca2\u2ca4\u2ca6\u2ca8\u2caa\u2cac\u2cae\u2cb0\u2cb2\u2cb4\u2cb6\u2cb8\u2cba\u2cbc\u2cbe\u2cc0\u2cc2\u2cc4\u2cc6\u2cc8\u2cca\u2ccc\u2cce\u2cd0\u2cd2\u2cd4\u2cd6\u2cd8\u2cda\u2cdc\u2cde\u2ce0\u2ce2\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a' + +Mc = u'\u0903\u093e\u093f\u0940\u0949\u094a\u094b\u094c\u0982\u0983\u09be\u09bf\u09c0\u09c7\u09c8\u09cb\u09cc\u09d7\u0a03\u0a3e\u0a3f\u0a40\u0a83\u0abe\u0abf\u0ac0\u0ac9\u0acb\u0acc\u0b02\u0b03\u0b3e\u0b40\u0b47\u0b48\u0b4b\u0b4c\u0b57\u0bbe\u0bbf\u0bc1\u0bc2\u0bc6\u0bc7\u0bc8\u0bca\u0bcb\u0bcc\u0bd7\u0c01\u0c02\u0c03\u0c41\u0c42\u0c43\u0c44\u0c82\u0c83\u0cbe\u0cc0\u0cc1\u0cc2\u0cc3\u0cc4\u0cc7\u0cc8\u0cca\u0ccb\u0cd5\u0cd6\u0d02\u0d03\u0d3e\u0d3f\u0d40\u0d46\u0d47\u0d48\u0d4a\u0d4b\u0d4c\u0d57\u0d82\u0d83\u0dcf\u0dd0\u0dd1\u0dd8\u0dd9\u0dda\u0ddb\u0ddc\u0ddd\u0dde\u0ddf\u0df2\u0df3\u0f3e\u0f3f\u0f7f\u102c\u1031\u1038\u1056\u1057\u17b6\u17be\u17bf\u17c0\u17c1\u17c2\u17c3\u17c4\u17c5\u17c7\u17c8\u1923\u1924\u1925\u1926\u1929\u192a\u192b\u1930\u1931\u1933\u1934\u1935\u1936\u1937\u1938\u19b0\u19b1\u19b2\u19b3\u19b4\u19b5\u19b6\u19b7\u19b8\u19b9\u19ba\u19bb\u19bc\u19bd\u19be\u19bf\u19c0\u19c8\u19c9\u1a19\u1a1a\u1a1b\ua802\ua823\ua824\ua827' + +Me = u'\u0488\u0489\u06de\u20dd\u20de\u20df\u20e0\u20e2\u20e3\u20e4' + +Mn = u'\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030a\u030b\u030c\u030d\u030e\u030f\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031a\u031b\u031c\u031d\u031e\u031f\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032a\u032b\u032c\u032d\u032e\u032f\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033a\u033b\u033c\u033d\u033e\u033f\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034a\u034b\u034c\u034d\u034e\u034f\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035a\u035b\u035c\u035d\u035e\u035f\u0360\u0361\u0362\u0363\u0364\u0365\u0366\u0367\u0368\u0369\u036a\u036b\u036c\u036d\u036e\u036f\u0483\u0484\u0485\u0486\u0591\u0592\u0593\u0594\u0595\u0596\u0597\u0598\u0599\u059a\u059b\u059c\u059d\u059e\u059f\u05a0\u05a1\u05a2\u05a3\u05a4\u05a5\u05a6\u05a7\u05a8\u05a9\u05aa\u05ab\u05ac\u05ad\u05ae\u05af\u05b0\u05b1\u05b2\u05b3\u05b4\u05b5\u05b6\u05b7\u05b8\u05b9\u05bb\u05bc\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610\u0611\u0612\u0613\u0614\u0615\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\u0653\u0654\u0655\u0656\u0657\u0658\u0659\u065a\u065b\u065c\u065d\u065e\u0670\u06d6\u06d7\u06d8\u06d9\u06da\u06db\u06dc\u06df\u06e0\u06e1\u06e2\u06e3\u06e4\u06e7\u06e8\u06ea\u06eb\u06ec\u06ed\u0711\u0730\u0731\u0732\u0733\u0734\u0735\u0736\u0737\u0738\u0739\u073a\u073b\u073c\u073d\u073e\u073f\u0740\u0741\u0742\u0743\u0744\u0745\u0746\u0747\u0748\u0749\u074a\u07a6\u07a7\u07a8\u07a9\u07aa\u07ab\u07ac\u07ad\u07ae\u07af\u07b0\u0901\u0902\u093c\u0941\u0942\u0943\u0944\u0945\u0946\u0947\u0948\u094d\u0951\u0952\u0953\u0954\u0962\u0963\u0981\u09bc\u09c1\u09c2\u09c3\u09c4\u09cd\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b\u0a4c\u0a4d\u0a70\u0a71\u0a81\u0a82\u0abc\u0ac1\u0ac2\u0ac3\u0ac4\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3f\u0b41\u0b42\u0b43\u0b4d\u0b56\u0b82\u0bc0\u0bcd\u0c3e\u0c3f\u0c40\u0c46\u0c47\u0c48\u0c4a\u0c4b\u0c4c\u0c4d\u0c55\u0c56\u0cbc\u0cbf\u0cc6\u0ccc\u0ccd\u0d41\u0d42\u0d43\u0d4d\u0dca\u0dd2\u0dd3\u0dd4\u0dd6\u0e31\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0e4e\u0eb1\u0eb4\u0eb5\u0eb6\u0eb7\u0eb8\u0eb9\u0ebb\u0ebc\u0ec8\u0ec9\u0eca\u0ecb\u0ecc\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71\u0f72\u0f73\u0f74\u0f75\u0f76\u0f77\u0f78\u0f79\u0f7a\u0f7b\u0f7c\u0f7d\u0f7e\u0f80\u0f81\u0f82\u0f83\u0f84\u0f86\u0f87\u0f90\u0f91\u0f92\u0f93\u0f94\u0f95\u0f96\u0f97\u0f99\u0f9a\u0f9b\u0f9c\u0f9d\u0f9e\u0f9f\u0fa0\u0fa1\u0fa2\u0fa3\u0fa4\u0fa5\u0fa6\u0fa7\u0fa8\u0fa9\u0faa\u0fab\u0fac\u0fad\u0fae\u0faf\u0fb0\u0fb1\u0fb2\u0fb3\u0fb4\u0fb5\u0fb6\u0fb7\u0fb8\u0fb9\u0fba\u0fbb\u0fbc\u0fc6\u102d\u102e\u102f\u1030\u1032\u1036\u1037\u1039\u1058\u1059\u135f\u1712\u1713\u1714\u1732\u1733\u1734\u1752\u1753\u1772\u1773\u17b7\u17b8\u17b9\u17ba\u17bb\u17bc\u17bd\u17c6\u17c9\u17ca\u17cb\u17cc\u17cd\u17ce\u17cf\u17d0\u17d1\u17d2\u17d3\u17dd\u180b\u180c\u180d\u18a9\u1920\u1921\u1922\u1927\u1928\u1932\u1939\u193a\u193b\u1a17\u1a18\u1dc0\u1dc1\u1dc2\u1dc3\u20d0\u20d1\u20d2\u20d3\u20d4\u20d5\u20d6\u20d7\u20d8\u20d9\u20da\u20db\u20dc\u20e1\u20e5\u20e6\u20e7\u20e8\u20e9\u20ea\u20eb\u302a\u302b\u302c\u302d\u302e\u302f\u3099\u309a\ua806\ua80b\ua825\ua826\ufb1e\ufe00\ufe01\ufe02\ufe03\ufe04\ufe05\ufe06\ufe07\ufe08\ufe09\ufe0a\ufe0b\ufe0c\ufe0d\ufe0e\ufe0f\ufe20\ufe21\ufe22\ufe23' + +Nd = u'0123456789\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u0a66\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0ae6\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0b66\u0b67\u0b68\u0b69\u0b6a\u0b6b\u0b6c\u0b6d\u0b6e\u0b6f\u0be6\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0c66\u0c67\u0c68\u0c69\u0c6a\u0c6b\u0c6c\u0c6d\u0c6e\u0c6f\u0ce6\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0d66\u0d67\u0d68\u0d69\u0d6a\u0d6b\u0d6c\u0d6d\u0d6e\u0d6f\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\u0ed0\u0ed1\u0ed2\u0ed3\u0ed4\u0ed5\u0ed6\u0ed7\u0ed8\u0ed9\u0f20\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u1040\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u17e0\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u1810\u1811\u1812\u1813\u1814\u1815\u1816\u1817\u1818\u1819\u1946\u1947\u1948\u1949\u194a\u194b\u194c\u194d\u194e\u194f\u19d0\u19d1\u19d2\u19d3\u19d4\u19d5\u19d6\u19d7\u19d8\u19d9\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19' + +Nl = u'\u16ee\u16ef\u16f0\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216a\u216b\u216c\u216d\u216e\u216f\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217a\u217b\u217c\u217d\u217e\u217f\u2180\u2181\u2182\u2183\u3007\u3021\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u3038\u3039\u303a' + +No = u'\xb2\xb3\xb9\xbc\xbd\xbe\u09f4\u09f5\u09f6\u09f7\u09f8\u09f9\u0bf0\u0bf1\u0bf2\u0f2a\u0f2b\u0f2c\u0f2d\u0f2e\u0f2f\u0f30\u0f31\u0f32\u0f33\u1369\u136a\u136b\u136c\u136d\u136e\u136f\u1370\u1371\u1372\u1373\u1374\u1375\u1376\u1377\u1378\u1379\u137a\u137b\u137c\u17f0\u17f1\u17f2\u17f3\u17f4\u17f5\u17f6\u17f7\u17f8\u17f9\u2070\u2074\u2075\u2076\u2077\u2078\u2079\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215a\u215b\u215c\u215d\u215e\u215f\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b\u246c\u246d\u246e\u246f\u2470\u2471\u2472\u2473\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2487\u2488\u2489\u248a\u248b\u248c\u248d\u248e\u248f\u2490\u2491\u2492\u2493\u2494\u2495\u2496\u2497\u2498\u2499\u249a\u249b\u24ea\u24eb\u24ec\u24ed\u24ee\u24ef\u24f0\u24f1\u24f2\u24f3\u24f4\u24f5\u24f6\u24f7\u24f8\u24f9\u24fa\u24fb\u24fc\u24fd\u24fe\u24ff\u2776\u2777\u2778\u2779\u277a\u277b\u277c\u277d\u277e\u277f\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787\u2788\u2789\u278a\u278b\u278c\u278d\u278e\u278f\u2790\u2791\u2792\u2793\u2cfd\u3192\u3193\u3194\u3195\u3220\u3221\u3222\u3223\u3224\u3225\u3226\u3227\u3228\u3229\u3251\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259\u325a\u325b\u325c\u325d\u325e\u325f\u3280\u3281\u3282\u3283\u3284\u3285\u3286\u3287\u3288\u3289\u32b1\u32b2\u32b3\u32b4\u32b5\u32b6\u32b7\u32b8\u32b9\u32ba\u32bb\u32bc\u32bd\u32be\u32bf' + +Pc = u'_\u203f\u2040\u2054\ufe33\ufe34\ufe4d\ufe4e\ufe4f\uff3f' + +Pd = u'-\u058a\u1806\u2010\u2011\u2012\u2013\u2014\u2015\u2e17\u301c\u3030\u30a0\ufe31\ufe32\ufe58\ufe63\uff0d' + +Pe = u')]}\u0f3b\u0f3d\u169c\u2046\u207e\u208e\u232a\u23b5\u2769\u276b\u276d\u276f\u2771\u2773\u2775\u27c6\u27e7\u27e9\u27eb\u2984\u2986\u2988\u298a\u298c\u298e\u2990\u2992\u2994\u2996\u2998\u29d9\u29db\u29fd\u3009\u300b\u300d\u300f\u3011\u3015\u3017\u3019\u301b\u301e\u301f\ufd3f\ufe18\ufe36\ufe38\ufe3a\ufe3c\ufe3e\ufe40\ufe42\ufe44\ufe48\ufe5a\ufe5c\ufe5e\uff09\uff3d\uff5d\uff60\uff63' + +Pf = u'\xbb\u2019\u201d\u203a\u2e03\u2e05\u2e0a\u2e0d\u2e1d' + +Pi = u'\xab\u2018\u201b\u201c\u201f\u2039\u2e02\u2e04\u2e09\u2e0c\u2e1c' + +Po = u'!"#%&\'*,./:;?@\\\xa1\xb7\xbf\u037e\u0387\u055a\u055b\u055c\u055d\u055e\u055f\u0589\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u060c\u060d\u061b\u061e\u061f\u066a\u066b\u066c\u066d\u06d4\u0700\u0701\u0702\u0703\u0704\u0705\u0706\u0707\u0708\u0709\u070a\u070b\u070c\u070d\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04\u0f05\u0f06\u0f07\u0f08\u0f09\u0f0a\u0f0b\u0f0c\u0f0d\u0f0e\u0f0f\u0f10\u0f11\u0f12\u0f85\u0fd0\u0fd1\u104a\u104b\u104c\u104d\u104e\u104f\u10fb\u1361\u1362\u1363\u1364\u1365\u1366\u1367\u1368\u166d\u166e\u16eb\u16ec\u16ed\u1735\u1736\u17d4\u17d5\u17d6\u17d8\u17d9\u17da\u1800\u1801\u1802\u1803\u1804\u1805\u1807\u1808\u1809\u180a\u1944\u1945\u19de\u19df\u1a1e\u1a1f\u2016\u2017\u2020\u2021\u2022\u2023\u2024\u2025\u2026\u2027\u2030\u2031\u2032\u2033\u2034\u2035\u2036\u2037\u2038\u203b\u203c\u203d\u203e\u2041\u2042\u2043\u2047\u2048\u2049\u204a\u204b\u204c\u204d\u204e\u204f\u2050\u2051\u2053\u2055\u2056\u2057\u2058\u2059\u205a\u205b\u205c\u205d\u205e\u23b6\u2cf9\u2cfa\u2cfb\u2cfc\u2cfe\u2cff\u2e00\u2e01\u2e06\u2e07\u2e08\u2e0b\u2e0e\u2e0f\u2e10\u2e11\u2e12\u2e13\u2e14\u2e15\u2e16\u3001\u3002\u3003\u303d\u30fb\ufe10\ufe11\ufe12\ufe13\ufe14\ufe15\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49\ufe4a\ufe4b\ufe4c\ufe50\ufe51\ufe52\ufe54\ufe55\ufe56\ufe57\ufe5f\ufe60\ufe61\ufe68\ufe6a\ufe6b\uff01\uff02\uff03\uff05\uff06\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65' + +Ps = u'([{\u0f3a\u0f3c\u169b\u201a\u201e\u2045\u207d\u208d\u2329\u23b4\u2768\u276a\u276c\u276e\u2770\u2772\u2774\u27c5\u27e6\u27e8\u27ea\u2983\u2985\u2987\u2989\u298b\u298d\u298f\u2991\u2993\u2995\u2997\u29d8\u29da\u29fc\u3008\u300a\u300c\u300e\u3010\u3014\u3016\u3018\u301a\u301d\ufd3e\ufe17\ufe35\ufe37\ufe39\ufe3b\ufe3d\ufe3f\ufe41\ufe43\ufe47\ufe59\ufe5b\ufe5d\uff08\uff3b\uff5b\uff5f\uff62' + +Sc = u'$\xa2\xa3\xa4\xa5\u060b\u09f2\u09f3\u0af1\u0bf9\u0e3f\u17db\u20a0\u20a1\u20a2\u20a3\u20a4\u20a5\u20a6\u20a7\u20a8\u20a9\u20aa\u20ab\u20ac\u20ad\u20ae\u20af\u20b0\u20b1\u20b2\u20b3\u20b4\u20b5\ufdfc\ufe69\uff04\uffe0\uffe1\uffe5\uffe6' + +Sk = u'^`\xa8\xaf\xb4\xb8\u02c2\u02c3\u02c4\u02c5\u02d2\u02d3\u02d4\u02d5\u02d6\u02d7\u02d8\u02d9\u02da\u02db\u02dc\u02dd\u02de\u02df\u02e5\u02e6\u02e7\u02e8\u02e9\u02ea\u02eb\u02ec\u02ed\u02ef\u02f0\u02f1\u02f2\u02f3\u02f4\u02f5\u02f6\u02f7\u02f8\u02f9\u02fa\u02fb\u02fc\u02fd\u02fe\u02ff\u0374\u0375\u0384\u0385\u1fbd\u1fbf\u1fc0\u1fc1\u1fcd\u1fce\u1fcf\u1fdd\u1fde\u1fdf\u1fed\u1fee\u1fef\u1ffd\u1ffe\u309b\u309c\ua700\ua701\ua702\ua703\ua704\ua705\ua706\ua707\ua708\ua709\ua70a\ua70b\ua70c\ua70d\ua70e\ua70f\ua710\ua711\ua712\ua713\ua714\ua715\ua716\uff3e\uff40\uffe3' + +Sm = u'+<=>|~\xac\xb1\xd7\xf7\u03f6\u2044\u2052\u207a\u207b\u207c\u208a\u208b\u208c\u2140\u2141\u2142\u2143\u2144\u214b\u2190\u2191\u2192\u2193\u2194\u219a\u219b\u21a0\u21a3\u21a6\u21ae\u21ce\u21cf\u21d2\u21d4\u21f4\u21f5\u21f6\u21f7\u21f8\u21f9\u21fa\u21fb\u21fc\u21fd\u21fe\u21ff\u2200\u2201\u2202\u2203\u2204\u2205\u2206\u2207\u2208\u2209\u220a\u220b\u220c\u220d\u220e\u220f\u2210\u2211\u2212\u2213\u2214\u2215\u2216\u2217\u2218\u2219\u221a\u221b\u221c\u221d\u221e\u221f\u2220\u2221\u2222\u2223\u2224\u2225\u2226\u2227\u2228\u2229\u222a\u222b\u222c\u222d\u222e\u222f\u2230\u2231\u2232\u2233\u2234\u2235\u2236\u2237\u2238\u2239\u223a\u223b\u223c\u223d\u223e\u223f\u2240\u2241\u2242\u2243\u2244\u2245\u2246\u2247\u2248\u2249\u224a\u224b\u224c\u224d\u224e\u224f\u2250\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225a\u225b\u225c\u225d\u225e\u225f\u2260\u2261\u2262\u2263\u2264\u2265\u2266\u2267\u2268\u2269\u226a\u226b\u226c\u226d\u226e\u226f\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227a\u227b\u227c\u227d\u227e\u227f\u2280\u2281\u2282\u2283\u2284\u2285\u2286\u2287\u2288\u2289\u228a\u228b\u228c\u228d\u228e\u228f\u2290\u2291\u2292\u2293\u2294\u2295\u2296\u2297\u2298\u2299\u229a\u229b\u229c\u229d\u229e\u229f\u22a0\u22a1\u22a2\u22a3\u22a4\u22a5\u22a6\u22a7\u22a8\u22a9\u22aa\u22ab\u22ac\u22ad\u22ae\u22af\u22b0\u22b1\u22b2\u22b3\u22b4\u22b5\u22b6\u22b7\u22b8\u22b9\u22ba\u22bb\u22bc\u22bd\u22be\u22bf\u22c0\u22c1\u22c2\u22c3\u22c4\u22c5\u22c6\u22c7\u22c8\u22c9\u22ca\u22cb\u22cc\u22cd\u22ce\u22cf\u22d0\u22d1\u22d2\u22d3\u22d4\u22d5\u22d6\u22d7\u22d8\u22d9\u22da\u22db\u22dc\u22dd\u22de\u22df\u22e0\u22e1\u22e2\u22e3\u22e4\u22e5\u22e6\u22e7\u22e8\u22e9\u22ea\u22eb\u22ec\u22ed\u22ee\u22ef\u22f0\u22f1\u22f2\u22f3\u22f4\u22f5\u22f6\u22f7\u22f8\u22f9\u22fa\u22fb\u22fc\u22fd\u22fe\u22ff\u2308\u2309\u230a\u230b\u2320\u2321\u237c\u239b\u239c\u239d\u239e\u239f\u23a0\u23a1\u23a2\u23a3\u23a4\u23a5\u23a6\u23a7\u23a8\u23a9\u23aa\u23ab\u23ac\u23ad\u23ae\u23af\u23b0\u23b1\u23b2\u23b3\u25b7\u25c1\u25f8\u25f9\u25fa\u25fb\u25fc\u25fd\u25fe\u25ff\u266f\u27c0\u27c1\u27c2\u27c3\u27c4\u27d0\u27d1\u27d2\u27d3\u27d4\u27d5\u27d6\u27d7\u27d8\u27d9\u27da\u27db\u27dc\u27dd\u27de\u27df\u27e0\u27e1\u27e2\u27e3\u27e4\u27e5\u27f0\u27f1\u27f2\u27f3\u27f4\u27f5\u27f6\u27f7\u27f8\u27f9\u27fa\u27fb\u27fc\u27fd\u27fe\u27ff\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909\u290a\u290b\u290c\u290d\u290e\u290f\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919\u291a\u291b\u291c\u291d\u291e\u291f\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929\u292a\u292b\u292c\u292d\u292e\u292f\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939\u293a\u293b\u293c\u293d\u293e\u293f\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949\u294a\u294b\u294c\u294d\u294e\u294f\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959\u295a\u295b\u295c\u295d\u295e\u295f\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969\u296a\u296b\u296c\u296d\u296e\u296f\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979\u297a\u297b\u297c\u297d\u297e\u297f\u2980\u2981\u2982\u2999\u299a\u299b\u299c\u299d\u299e\u299f\u29a0\u29a1\u29a2\u29a3\u29a4\u29a5\u29a6\u29a7\u29a8\u29a9\u29aa\u29ab\u29ac\u29ad\u29ae\u29af\u29b0\u29b1\u29b2\u29b3\u29b4\u29b5\u29b6\u29b7\u29b8\u29b9\u29ba\u29bb\u29bc\u29bd\u29be\u29bf\u29c0\u29c1\u29c2\u29c3\u29c4\u29c5\u29c6\u29c7\u29c8\u29c9\u29ca\u29cb\u29cc\u29cd\u29ce\u29cf\u29d0\u29d1\u29d2\u29d3\u29d4\u29d5\u29d6\u29d7\u29dc\u29dd\u29de\u29df\u29e0\u29e1\u29e2\u29e3\u29e4\u29e5\u29e6\u29e7\u29e8\u29e9\u29ea\u29eb\u29ec\u29ed\u29ee\u29ef\u29f0\u29f1\u29f2\u29f3\u29f4\u29f5\u29f6\u29f7\u29f8\u29f9\u29fa\u29fb\u29fe\u29ff\u2a00\u2a01\u2a02\u2a03\u2a04\u2a05\u2a06\u2a07\u2a08\u2a09\u2a0a\u2a0b\u2a0c\u2a0d\u2a0e\u2a0f\u2a10\u2a11\u2a12\u2a13\u2a14\u2a15\u2a16\u2a17\u2a18\u2a19\u2a1a\u2a1b\u2a1c\u2a1d\u2a1e\u2a1f\u2a20\u2a21\u2a22\u2a23\u2a24\u2a25\u2a26\u2a27\u2a28\u2a29\u2a2a\u2a2b\u2a2c\u2a2d\u2a2e\u2a2f\u2a30\u2a31\u2a32\u2a33\u2a34\u2a35\u2a36\u2a37\u2a38\u2a39\u2a3a\u2a3b\u2a3c\u2a3d\u2a3e\u2a3f\u2a40\u2a41\u2a42\u2a43\u2a44\u2a45\u2a46\u2a47\u2a48\u2a49\u2a4a\u2a4b\u2a4c\u2a4d\u2a4e\u2a4f\u2a50\u2a51\u2a52\u2a53\u2a54\u2a55\u2a56\u2a57\u2a58\u2a59\u2a5a\u2a5b\u2a5c\u2a5d\u2a5e\u2a5f\u2a60\u2a61\u2a62\u2a63\u2a64\u2a65\u2a66\u2a67\u2a68\u2a69\u2a6a\u2a6b\u2a6c\u2a6d\u2a6e\u2a6f\u2a70\u2a71\u2a72\u2a73\u2a74\u2a75\u2a76\u2a77\u2a78\u2a79\u2a7a\u2a7b\u2a7c\u2a7d\u2a7e\u2a7f\u2a80\u2a81\u2a82\u2a83\u2a84\u2a85\u2a86\u2a87\u2a88\u2a89\u2a8a\u2a8b\u2a8c\u2a8d\u2a8e\u2a8f\u2a90\u2a91\u2a92\u2a93\u2a94\u2a95\u2a96\u2a97\u2a98\u2a99\u2a9a\u2a9b\u2a9c\u2a9d\u2a9e\u2a9f\u2aa0\u2aa1\u2aa2\u2aa3\u2aa4\u2aa5\u2aa6\u2aa7\u2aa8\u2aa9\u2aaa\u2aab\u2aac\u2aad\u2aae\u2aaf\u2ab0\u2ab1\u2ab2\u2ab3\u2ab4\u2ab5\u2ab6\u2ab7\u2ab8\u2ab9\u2aba\u2abb\u2abc\u2abd\u2abe\u2abf\u2ac0\u2ac1\u2ac2\u2ac3\u2ac4\u2ac5\u2ac6\u2ac7\u2ac8\u2ac9\u2aca\u2acb\u2acc\u2acd\u2ace\u2acf\u2ad0\u2ad1\u2ad2\u2ad3\u2ad4\u2ad5\u2ad6\u2ad7\u2ad8\u2ad9\u2ada\u2adb\u2adc\u2add\u2ade\u2adf\u2ae0\u2ae1\u2ae2\u2ae3\u2ae4\u2ae5\u2ae6\u2ae7\u2ae8\u2ae9\u2aea\u2aeb\u2aec\u2aed\u2aee\u2aef\u2af0\u2af1\u2af2\u2af3\u2af4\u2af5\u2af6\u2af7\u2af8\u2af9\u2afa\u2afb\u2afc\u2afd\u2afe\u2aff\ufb29\ufe62\ufe64\ufe65\ufe66\uff0b\uff1c\uff1d\uff1e\uff5c\uff5e\uffe2\uffe9\uffea\uffeb\uffec' + +So = u'\xa6\xa7\xa9\xae\xb0\xb6\u0482\u060e\u060f\u06e9\u06fd\u06fe\u09fa\u0b70\u0bf3\u0bf4\u0bf5\u0bf6\u0bf7\u0bf8\u0bfa\u0f01\u0f02\u0f03\u0f13\u0f14\u0f15\u0f16\u0f17\u0f1a\u0f1b\u0f1c\u0f1d\u0f1e\u0f1f\u0f34\u0f36\u0f38\u0fbe\u0fbf\u0fc0\u0fc1\u0fc2\u0fc3\u0fc4\u0fc5\u0fc7\u0fc8\u0fc9\u0fca\u0fcb\u0fcc\u0fcf\u1360\u1390\u1391\u1392\u1393\u1394\u1395\u1396\u1397\u1398\u1399\u1940\u19e0\u19e1\u19e2\u19e3\u19e4\u19e5\u19e6\u19e7\u19e8\u19e9\u19ea\u19eb\u19ec\u19ed\u19ee\u19ef\u19f0\u19f1\u19f2\u19f3\u19f4\u19f5\u19f6\u19f7\u19f8\u19f9\u19fa\u19fb\u19fc\u19fd\u19fe\u19ff\u2100\u2101\u2103\u2104\u2105\u2106\u2108\u2109\u2114\u2116\u2117\u2118\u211e\u211f\u2120\u2121\u2122\u2123\u2125\u2127\u2129\u212e\u2132\u213a\u213b\u214a\u214c\u2195\u2196\u2197\u2198\u2199\u219c\u219d\u219e\u219f\u21a1\u21a2\u21a4\u21a5\u21a7\u21a8\u21a9\u21aa\u21ab\u21ac\u21ad\u21af\u21b0\u21b1\u21b2\u21b3\u21b4\u21b5\u21b6\u21b7\u21b8\u21b9\u21ba\u21bb\u21bc\u21bd\u21be\u21bf\u21c0\u21c1\u21c2\u21c3\u21c4\u21c5\u21c6\u21c7\u21c8\u21c9\u21ca\u21cb\u21cc\u21cd\u21d0\u21d1\u21d3\u21d5\u21d6\u21d7\u21d8\u21d9\u21da\u21db\u21dc\u21dd\u21de\u21df\u21e0\u21e1\u21e2\u21e3\u21e4\u21e5\u21e6\u21e7\u21e8\u21e9\u21ea\u21eb\u21ec\u21ed\u21ee\u21ef\u21f0\u21f1\u21f2\u21f3\u2300\u2301\u2302\u2303\u2304\u2305\u2306\u2307\u230c\u230d\u230e\u230f\u2310\u2311\u2312\u2313\u2314\u2315\u2316\u2317\u2318\u2319\u231a\u231b\u231c\u231d\u231e\u231f\u2322\u2323\u2324\u2325\u2326\u2327\u2328\u232b\u232c\u232d\u232e\u232f\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337\u2338\u2339\u233a\u233b\u233c\u233d\u233e\u233f\u2340\u2341\u2342\u2343\u2344\u2345\u2346\u2347\u2348\u2349\u234a\u234b\u234c\u234d\u234e\u234f\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357\u2358\u2359\u235a\u235b\u235c\u235d\u235e\u235f\u2360\u2361\u2362\u2363\u2364\u2365\u2366\u2367\u2368\u2369\u236a\u236b\u236c\u236d\u236e\u236f\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377\u2378\u2379\u237a\u237b\u237d\u237e\u237f\u2380\u2381\u2382\u2383\u2384\u2385\u2386\u2387\u2388\u2389\u238a\u238b\u238c\u238d\u238e\u238f\u2390\u2391\u2392\u2393\u2394\u2395\u2396\u2397\u2398\u2399\u239a\u23b7\u23b8\u23b9\u23ba\u23bb\u23bc\u23bd\u23be\u23bf\u23c0\u23c1\u23c2\u23c3\u23c4\u23c5\u23c6\u23c7\u23c8\u23c9\u23ca\u23cb\u23cc\u23cd\u23ce\u23cf\u23d0\u23d1\u23d2\u23d3\u23d4\u23d5\u23d6\u23d7\u23d8\u23d9\u23da\u23db\u2400\u2401\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409\u240a\u240b\u240c\u240d\u240e\u240f\u2410\u2411\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419\u241a\u241b\u241c\u241d\u241e\u241f\u2420\u2421\u2422\u2423\u2424\u2425\u2426\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447\u2448\u2449\u244a\u249c\u249d\u249e\u249f\u24a0\u24a1\u24a2\u24a3\u24a4\u24a5\u24a6\u24a7\u24a8\u24a9\u24aa\u24ab\u24ac\u24ad\u24ae\u24af\u24b0\u24b1\u24b2\u24b3\u24b4\u24b5\u24b6\u24b7\u24b8\u24b9\u24ba\u24bb\u24bc\u24bd\u24be\u24bf\u24c0\u24c1\u24c2\u24c3\u24c4\u24c5\u24c6\u24c7\u24c8\u24c9\u24ca\u24cb\u24cc\u24cd\u24ce\u24cf\u24d0\u24d1\u24d2\u24d3\u24d4\u24d5\u24d6\u24d7\u24d8\u24d9\u24da\u24db\u24dc\u24dd\u24de\u24df\u24e0\u24e1\u24e2\u24e3\u24e4\u24e5\u24e6\u24e7\u24e8\u24e9\u2500\u2501\u2502\u2503\u2504\u2505\u2506\u2507\u2508\u2509\u250a\u250b\u250c\u250d\u250e\u250f\u2510\u2511\u2512\u2513\u2514\u2515\u2516\u2517\u2518\u2519\u251a\u251b\u251c\u251d\u251e\u251f\u2520\u2521\u2522\u2523\u2524\u2525\u2526\u2527\u2528\u2529\u252a\u252b\u252c\u252d\u252e\u252f\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537\u2538\u2539\u253a\u253b\u253c\u253d\u253e\u253f\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547\u2548\u2549\u254a\u254b\u254c\u254d\u254e\u254f\u2550\u2551\u2552\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255a\u255b\u255c\u255d\u255e\u255f\u2560\u2561\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256a\u256b\u256c\u256d\u256e\u256f\u2570\u2571\u2572\u2573\u2574\u2575\u2576\u2577\u2578\u2579\u257a\u257b\u257c\u257d\u257e\u257f\u2580\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u2589\u258a\u258b\u258c\u258d\u258e\u258f\u2590\u2591\u2592\u2593\u2594\u2595\u2596\u2597\u2598\u2599\u259a\u259b\u259c\u259d\u259e\u259f\u25a0\u25a1\u25a2\u25a3\u25a4\u25a5\u25a6\u25a7\u25a8\u25a9\u25aa\u25ab\u25ac\u25ad\u25ae\u25af\u25b0\u25b1\u25b2\u25b3\u25b4\u25b5\u25b6\u25b8\u25b9\u25ba\u25bb\u25bc\u25bd\u25be\u25bf\u25c0\u25c2\u25c3\u25c4\u25c5\u25c6\u25c7\u25c8\u25c9\u25ca\u25cb\u25cc\u25cd\u25ce\u25cf\u25d0\u25d1\u25d2\u25d3\u25d4\u25d5\u25d6\u25d7\u25d8\u25d9\u25da\u25db\u25dc\u25dd\u25de\u25df\u25e0\u25e1\u25e2\u25e3\u25e4\u25e5\u25e6\u25e7\u25e8\u25e9\u25ea\u25eb\u25ec\u25ed\u25ee\u25ef\u25f0\u25f1\u25f2\u25f3\u25f4\u25f5\u25f6\u25f7\u2600\u2601\u2602\u2603\u2604\u2605\u2606\u2607\u2608\u2609\u260a\u260b\u260c\u260d\u260e\u260f\u2610\u2611\u2612\u2613\u2614\u2615\u2616\u2617\u2618\u2619\u261a\u261b\u261c\u261d\u261e\u261f\u2620\u2621\u2622\u2623\u2624\u2625\u2626\u2627\u2628\u2629\u262a\u262b\u262c\u262d\u262e\u262f\u2630\u2631\u2632\u2633\u2634\u2635\u2636\u2637\u2638\u2639\u263a\u263b\u263c\u263d\u263e\u263f\u2640\u2641\u2642\u2643\u2644\u2645\u2646\u2647\u2648\u2649\u264a\u264b\u264c\u264d\u264e\u264f\u2650\u2651\u2652\u2653\u2654\u2655\u2656\u2657\u2658\u2659\u265a\u265b\u265c\u265d\u265e\u265f\u2660\u2661\u2662\u2663\u2664\u2665\u2666\u2667\u2668\u2669\u266a\u266b\u266c\u266d\u266e\u2670\u2671\u2672\u2673\u2674\u2675\u2676\u2677\u2678\u2679\u267a\u267b\u267c\u267d\u267e\u267f\u2680\u2681\u2682\u2683\u2684\u2685\u2686\u2687\u2688\u2689\u268a\u268b\u268c\u268d\u268e\u268f\u2690\u2691\u2692\u2693\u2694\u2695\u2696\u2697\u2698\u2699\u269a\u269b\u269c\u26a0\u26a1\u26a2\u26a3\u26a4\u26a5\u26a6\u26a7\u26a8\u26a9\u26aa\u26ab\u26ac\u26ad\u26ae\u26af\u26b0\u26b1\u2701\u2702\u2703\u2704\u2706\u2707\u2708\u2709\u270c\u270d\u270e\u270f\u2710\u2711\u2712\u2713\u2714\u2715\u2716\u2717\u2718\u2719\u271a\u271b\u271c\u271d\u271e\u271f\u2720\u2721\u2722\u2723\u2724\u2725\u2726\u2727\u2729\u272a\u272b\u272c\u272d\u272e\u272f\u2730\u2731\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739\u273a\u273b\u273c\u273d\u273e\u273f\u2740\u2741\u2742\u2743\u2744\u2745\u2746\u2747\u2748\u2749\u274a\u274b\u274d\u274f\u2750\u2751\u2752\u2756\u2758\u2759\u275a\u275b\u275c\u275d\u275e\u2761\u2762\u2763\u2764\u2765\u2766\u2767\u2794\u2798\u2799\u279a\u279b\u279c\u279d\u279e\u279f\u27a0\u27a1\u27a2\u27a3\u27a4\u27a5\u27a6\u27a7\u27a8\u27a9\u27aa\u27ab\u27ac\u27ad\u27ae\u27af\u27b1\u27b2\u27b3\u27b4\u27b5\u27b6\u27b7\u27b8\u27b9\u27ba\u27bb\u27bc\u27bd\u27be\u2800\u2801\u2802\u2803\u2804\u2805\u2806\u2807\u2808\u2809\u280a\u280b\u280c\u280d\u280e\u280f\u2810\u2811\u2812\u2813\u2814\u2815\u2816\u2817\u2818\u2819\u281a\u281b\u281c\u281d\u281e\u281f\u2820\u2821\u2822\u2823\u2824\u2825\u2826\u2827\u2828\u2829\u282a\u282b\u282c\u282d\u282e\u282f\u2830\u2831\u2832\u2833\u2834\u2835\u2836\u2837\u2838\u2839\u283a\u283b\u283c\u283d\u283e\u283f\u2840\u2841\u2842\u2843\u2844\u2845\u2846\u2847\u2848\u2849\u284a\u284b\u284c\u284d\u284e\u284f\u2850\u2851\u2852\u2853\u2854\u2855\u2856\u2857\u2858\u2859\u285a\u285b\u285c\u285d\u285e\u285f\u2860\u2861\u2862\u2863\u2864\u2865\u2866\u2867\u2868\u2869\u286a\u286b\u286c\u286d\u286e\u286f\u2870\u2871\u2872\u2873\u2874\u2875\u2876\u2877\u2878\u2879\u287a\u287b\u287c\u287d\u287e\u287f\u2880\u2881\u2882\u2883\u2884\u2885\u2886\u2887\u2888\u2889\u288a\u288b\u288c\u288d\u288e\u288f\u2890\u2891\u2892\u2893\u2894\u2895\u2896\u2897\u2898\u2899\u289a\u289b\u289c\u289d\u289e\u289f\u28a0\u28a1\u28a2\u28a3\u28a4\u28a5\u28a6\u28a7\u28a8\u28a9\u28aa\u28ab\u28ac\u28ad\u28ae\u28af\u28b0\u28b1\u28b2\u28b3\u28b4\u28b5\u28b6\u28b7\u28b8\u28b9\u28ba\u28bb\u28bc\u28bd\u28be\u28bf\u28c0\u28c1\u28c2\u28c3\u28c4\u28c5\u28c6\u28c7\u28c8\u28c9\u28ca\u28cb\u28cc\u28cd\u28ce\u28cf\u28d0\u28d1\u28d2\u28d3\u28d4\u28d5\u28d6\u28d7\u28d8\u28d9\u28da\u28db\u28dc\u28dd\u28de\u28df\u28e0\u28e1\u28e2\u28e3\u28e4\u28e5\u28e6\u28e7\u28e8\u28e9\u28ea\u28eb\u28ec\u28ed\u28ee\u28ef\u28f0\u28f1\u28f2\u28f3\u28f4\u28f5\u28f6\u28f7\u28f8\u28f9\u28fa\u28fb\u28fc\u28fd\u28fe\u28ff\u2b00\u2b01\u2b02\u2b03\u2b04\u2b05\u2b06\u2b07\u2b08\u2b09\u2b0a\u2b0b\u2b0c\u2b0d\u2b0e\u2b0f\u2b10\u2b11\u2b12\u2b13\u2ce5\u2ce6\u2ce7\u2ce8\u2ce9\u2cea\u2e80\u2e81\u2e82\u2e83\u2e84\u2e85\u2e86\u2e87\u2e88\u2e89\u2e8a\u2e8b\u2e8c\u2e8d\u2e8e\u2e8f\u2e90\u2e91\u2e92\u2e93\u2e94\u2e95\u2e96\u2e97\u2e98\u2e99\u2e9b\u2e9c\u2e9d\u2e9e\u2e9f\u2ea0\u2ea1\u2ea2\u2ea3\u2ea4\u2ea5\u2ea6\u2ea7\u2ea8\u2ea9\u2eaa\u2eab\u2eac\u2ead\u2eae\u2eaf\u2eb0\u2eb1\u2eb2\u2eb3\u2eb4\u2eb5\u2eb6\u2eb7\u2eb8\u2eb9\u2eba\u2ebb\u2ebc\u2ebd\u2ebe\u2ebf\u2ec0\u2ec1\u2ec2\u2ec3\u2ec4\u2ec5\u2ec6\u2ec7\u2ec8\u2ec9\u2eca\u2ecb\u2ecc\u2ecd\u2ece\u2ecf\u2ed0\u2ed1\u2ed2\u2ed3\u2ed4\u2ed5\u2ed6\u2ed7\u2ed8\u2ed9\u2eda\u2edb\u2edc\u2edd\u2ede\u2edf\u2ee0\u2ee1\u2ee2\u2ee3\u2ee4\u2ee5\u2ee6\u2ee7\u2ee8\u2ee9\u2eea\u2eeb\u2eec\u2eed\u2eee\u2eef\u2ef0\u2ef1\u2ef2\u2ef3\u2f00\u2f01\u2f02\u2f03\u2f04\u2f05\u2f06\u2f07\u2f08\u2f09\u2f0a\u2f0b\u2f0c\u2f0d\u2f0e\u2f0f\u2f10\u2f11\u2f12\u2f13\u2f14\u2f15\u2f16\u2f17\u2f18\u2f19\u2f1a\u2f1b\u2f1c\u2f1d\u2f1e\u2f1f\u2f20\u2f21\u2f22\u2f23\u2f24\u2f25\u2f26\u2f27\u2f28\u2f29\u2f2a\u2f2b\u2f2c\u2f2d\u2f2e\u2f2f\u2f30\u2f31\u2f32\u2f33\u2f34\u2f35\u2f36\u2f37\u2f38\u2f39\u2f3a\u2f3b\u2f3c\u2f3d\u2f3e\u2f3f\u2f40\u2f41\u2f42\u2f43\u2f44\u2f45\u2f46\u2f47\u2f48\u2f49\u2f4a\u2f4b\u2f4c\u2f4d\u2f4e\u2f4f\u2f50\u2f51\u2f52\u2f53\u2f54\u2f55\u2f56\u2f57\u2f58\u2f59\u2f5a\u2f5b\u2f5c\u2f5d\u2f5e\u2f5f\u2f60\u2f61\u2f62\u2f63\u2f64\u2f65\u2f66\u2f67\u2f68\u2f69\u2f6a\u2f6b\u2f6c\u2f6d\u2f6e\u2f6f\u2f70\u2f71\u2f72\u2f73\u2f74\u2f75\u2f76\u2f77\u2f78\u2f79\u2f7a\u2f7b\u2f7c\u2f7d\u2f7e\u2f7f\u2f80\u2f81\u2f82\u2f83\u2f84\u2f85\u2f86\u2f87\u2f88\u2f89\u2f8a\u2f8b\u2f8c\u2f8d\u2f8e\u2f8f\u2f90\u2f91\u2f92\u2f93\u2f94\u2f95\u2f96\u2f97\u2f98\u2f99\u2f9a\u2f9b\u2f9c\u2f9d\u2f9e\u2f9f\u2fa0\u2fa1\u2fa2\u2fa3\u2fa4\u2fa5\u2fa6\u2fa7\u2fa8\u2fa9\u2faa\u2fab\u2fac\u2fad\u2fae\u2faf\u2fb0\u2fb1\u2fb2\u2fb3\u2fb4\u2fb5\u2fb6\u2fb7\u2fb8\u2fb9\u2fba\u2fbb\u2fbc\u2fbd\u2fbe\u2fbf\u2fc0\u2fc1\u2fc2\u2fc3\u2fc4\u2fc5\u2fc6\u2fc7\u2fc8\u2fc9\u2fca\u2fcb\u2fcc\u2fcd\u2fce\u2fcf\u2fd0\u2fd1\u2fd2\u2fd3\u2fd4\u2fd5\u2ff0\u2ff1\u2ff2\u2ff3\u2ff4\u2ff5\u2ff6\u2ff7\u2ff8\u2ff9\u2ffa\u2ffb\u3004\u3012\u3013\u3020\u3036\u3037\u303e\u303f\u3190\u3191\u3196\u3197\u3198\u3199\u319a\u319b\u319c\u319d\u319e\u319f\u31c0\u31c1\u31c2\u31c3\u31c4\u31c5\u31c6\u31c7\u31c8\u31c9\u31ca\u31cb\u31cc\u31cd\u31ce\u31cf\u3200\u3201\u3202\u3203\u3204\u3205\u3206\u3207\u3208\u3209\u320a\u320b\u320c\u320d\u320e\u320f\u3210\u3211\u3212\u3213\u3214\u3215\u3216\u3217\u3218\u3219\u321a\u321b\u321c\u321d\u321e\u322a\u322b\u322c\u322d\u322e\u322f\u3230\u3231\u3232\u3233\u3234\u3235\u3236\u3237\u3238\u3239\u323a\u323b\u323c\u323d\u323e\u323f\u3240\u3241\u3242\u3243\u3250\u3260\u3261\u3262\u3263\u3264\u3265\u3266\u3267\u3268\u3269\u326a\u326b\u326c\u326d\u326e\u326f\u3270\u3271\u3272\u3273\u3274\u3275\u3276\u3277\u3278\u3279\u327a\u327b\u327c\u327d\u327e\u327f\u328a\u328b\u328c\u328d\u328e\u328f\u3290\u3291\u3292\u3293\u3294\u3295\u3296\u3297\u3298\u3299\u329a\u329b\u329c\u329d\u329e\u329f\u32a0\u32a1\u32a2\u32a3\u32a4\u32a5\u32a6\u32a7\u32a8\u32a9\u32aa\u32ab\u32ac\u32ad\u32ae\u32af\u32b0\u32c0\u32c1\u32c2\u32c3\u32c4\u32c5\u32c6\u32c7\u32c8\u32c9\u32ca\u32cb\u32cc\u32cd\u32ce\u32cf\u32d0\u32d1\u32d2\u32d3\u32d4\u32d5\u32d6\u32d7\u32d8\u32d9\u32da\u32db\u32dc\u32dd\u32de\u32df\u32e0\u32e1\u32e2\u32e3\u32e4\u32e5\u32e6\u32e7\u32e8\u32e9\u32ea\u32eb\u32ec\u32ed\u32ee\u32ef\u32f0\u32f1\u32f2\u32f3\u32f4\u32f5\u32f6\u32f7\u32f8\u32f9\u32fa\u32fb\u32fc\u32fd\u32fe\u3300\u3301\u3302\u3303\u3304\u3305\u3306\u3307\u3308\u3309\u330a\u330b\u330c\u330d\u330e\u330f\u3310\u3311\u3312\u3313\u3314\u3315\u3316\u3317\u3318\u3319\u331a\u331b\u331c\u331d\u331e\u331f\u3320\u3321\u3322\u3323\u3324\u3325\u3326\u3327\u3328\u3329\u332a\u332b\u332c\u332d\u332e\u332f\u3330\u3331\u3332\u3333\u3334\u3335\u3336\u3337\u3338\u3339\u333a\u333b\u333c\u333d\u333e\u333f\u3340\u3341\u3342\u3343\u3344\u3345\u3346\u3347\u3348\u3349\u334a\u334b\u334c\u334d\u334e\u334f\u3350\u3351\u3352\u3353\u3354\u3355\u3356\u3357\u3358\u3359\u335a\u335b\u335c\u335d\u335e\u335f\u3360\u3361\u3362\u3363\u3364\u3365\u3366\u3367\u3368\u3369\u336a\u336b\u336c\u336d\u336e\u336f\u3370\u3371\u3372\u3373\u3374\u3375\u3376\u3377\u3378\u3379\u337a\u337b\u337c\u337d\u337e\u337f\u3380\u3381\u3382\u3383\u3384\u3385\u3386\u3387\u3388\u3389\u338a\u338b\u338c\u338d\u338e\u338f\u3390\u3391\u3392\u3393\u3394\u3395\u3396\u3397\u3398\u3399\u339a\u339b\u339c\u339d\u339e\u339f\u33a0\u33a1\u33a2\u33a3\u33a4\u33a5\u33a6\u33a7\u33a8\u33a9\u33aa\u33ab\u33ac\u33ad\u33ae\u33af\u33b0\u33b1\u33b2\u33b3\u33b4\u33b5\u33b6\u33b7\u33b8\u33b9\u33ba\u33bb\u33bc\u33bd\u33be\u33bf\u33c0\u33c1\u33c2\u33c3\u33c4\u33c5\u33c6\u33c7\u33c8\u33c9\u33ca\u33cb\u33cc\u33cd\u33ce\u33cf\u33d0\u33d1\u33d2\u33d3\u33d4\u33d5\u33d6\u33d7\u33d8\u33d9\u33da\u33db\u33dc\u33dd\u33de\u33df\u33e0\u33e1\u33e2\u33e3\u33e4\u33e5\u33e6\u33e7\u33e8\u33e9\u33ea\u33eb\u33ec\u33ed\u33ee\u33ef\u33f0\u33f1\u33f2\u33f3\u33f4\u33f5\u33f6\u33f7\u33f8\u33f9\u33fa\u33fb\u33fc\u33fd\u33fe\u33ff\u4dc0\u4dc1\u4dc2\u4dc3\u4dc4\u4dc5\u4dc6\u4dc7\u4dc8\u4dc9\u4dca\u4dcb\u4dcc\u4dcd\u4dce\u4dcf\u4dd0\u4dd1\u4dd2\u4dd3\u4dd4\u4dd5\u4dd6\u4dd7\u4dd8\u4dd9\u4dda\u4ddb\u4ddc\u4ddd\u4dde\u4ddf\u4de0\u4de1\u4de2\u4de3\u4de4\u4de5\u4de6\u4de7\u4de8\u4de9\u4dea\u4deb\u4dec\u4ded\u4dee\u4def\u4df0\u4df1\u4df2\u4df3\u4df4\u4df5\u4df6\u4df7\u4df8\u4df9\u4dfa\u4dfb\u4dfc\u4dfd\u4dfe\u4dff\ua490\ua491\ua492\ua493\ua494\ua495\ua496\ua497\ua498\ua499\ua49a\ua49b\ua49c\ua49d\ua49e\ua49f\ua4a0\ua4a1\ua4a2\ua4a3\ua4a4\ua4a5\ua4a6\ua4a7\ua4a8\ua4a9\ua4aa\ua4ab\ua4ac\ua4ad\ua4ae\ua4af\ua4b0\ua4b1\ua4b2\ua4b3\ua4b4\ua4b5\ua4b6\ua4b7\ua4b8\ua4b9\ua4ba\ua4bb\ua4bc\ua4bd\ua4be\ua4bf\ua4c0\ua4c1\ua4c2\ua4c3\ua4c4\ua4c5\ua4c6\ua828\ua829\ua82a\ua82b\ufdfd\uffe4\uffe8\uffed\uffee\ufffc\ufffd' + +Zl = u'\u2028' + +Zp = u'\u2029' + +Zs = u' \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000' + +cats = ['Cc', 'Cf', 'Cn', 'Co', 'Cs', 'Ll', 'Lm', 'Lo', 'Lt', 'Lu', 'Mc', 'Me', 'Mn', 'Nd', 'Nl', 'No', 'Pc', 'Pd', 'Pe', 'Pf', 'Pi', 'Po', 'Ps', 'Sc', 'Sk', 'Sm', 'So', 'Zl', 'Zp', 'Zs'] + +def combine(*args): + return u''.join([globals()[cat] for cat in args]) + +xid_start = u'\u0041-\u005A\u005F\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u01BA\u01BB\u01BC-\u01BF\u01C0-\u01C3\u01C4-\u0241\u0250-\u02AF\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EE\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03F5\u03F7-\u0481\u048A-\u04CE\u04D0-\u04F9\u0500-\u050F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0640\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06E5-\u06E6\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u076D\u0780-\u07A5\u07B1\u0904-\u0939\u093D\u0950\u0958-\u0961\u097D\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D60-\u0D61\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E40-\u0E45\u0E46\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6A\u0F88-\u0F8B\u1000-\u1021\u1023-\u1027\u1029-\u102A\u1050-\u1055\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1159\u115F-\u11A2\u11A8-\u11F9\u1200-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u1676\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1842\u1843\u1844-\u1877\u1880-\u18A8\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19A9\u19C1-\u19C7\u1A00-\u1A16\u1D00-\u1D2B\u1D2C-\u1D61\u1D62-\u1D77\u1D78\u1D79-\u1D9A\u1D9B-\u1DBF\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107\u210A-\u2113\u2115\u2118\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212E\u212F-\u2131\u2133-\u2134\u2135-\u2138\u2139\u213C-\u213F\u2145-\u2149\u2160-\u2183\u2C00-\u2C2E\u2C30-\u2C5E\u2C80-\u2CE4\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005\u3006\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303A\u303B\u303C\u3041-\u3096\u309D-\u309E\u309F\u30A1-\u30FA\u30FC-\u30FE\u30FF\u3105-\u312C\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FBB\uA000-\uA014\uA015\uA016-\uA48C\uA800-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uAC00-\uD7A3\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFC5D\uFC64-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDF9\uFE71\uFE73\uFE77\uFE79\uFE7B\uFE7D\uFE7F-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFF6F\uFF70\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC' + +xid_continue = u'\u0030-\u0039\u0041-\u005A\u005F\u0061-\u007A\u00AA\u00B5\u00B7\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u01BA\u01BB\u01BC-\u01BF\u01C0-\u01C3\u01C4-\u0241\u0250-\u02AF\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EE\u0300-\u036F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03F5\u03F7-\u0481\u0483-\u0486\u048A-\u04CE\u04D0-\u04F9\u0500-\u050F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05B9\u05BB-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u0615\u0621-\u063A\u0640\u0641-\u064A\u064B-\u065E\u0660-\u0669\u066E-\u066F\u0670\u0671-\u06D3\u06D5\u06D6-\u06DC\u06DF-\u06E4\u06E5-\u06E6\u06E7-\u06E8\u06EA-\u06ED\u06EE-\u06EF\u06F0-\u06F9\u06FA-\u06FC\u06FF\u0710\u0711\u0712-\u072F\u0730-\u074A\u074D-\u076D\u0780-\u07A5\u07A6-\u07B0\u07B1\u0901-\u0902\u0903\u0904-\u0939\u093C\u093D\u093E-\u0940\u0941-\u0948\u0949-\u094C\u094D\u0950\u0951-\u0954\u0958-\u0961\u0962-\u0963\u0966-\u096F\u097D\u0981\u0982-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BD\u09BE-\u09C0\u09C1-\u09C4\u09C7-\u09C8\u09CB-\u09CC\u09CD\u09CE\u09D7\u09DC-\u09DD\u09DF-\u09E1\u09E2-\u09E3\u09E6-\u09EF\u09F0-\u09F1\u0A01-\u0A02\u0A03\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A40\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A70-\u0A71\u0A72-\u0A74\u0A81-\u0A82\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC\u0ABD\u0ABE-\u0AC0\u0AC1-\u0AC5\u0AC7-\u0AC8\u0AC9\u0ACB-\u0ACC\u0ACD\u0AD0\u0AE0-\u0AE1\u0AE2-\u0AE3\u0AE6-\u0AEF\u0B01\u0B02-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3C\u0B3D\u0B3E\u0B3F\u0B40\u0B41-\u0B43\u0B47-\u0B48\u0B4B-\u0B4C\u0B4D\u0B56\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BBF\u0BC0\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BCD\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C40\u0C41-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC\u0CBD\u0CBE\u0CBF\u0CC0-\u0CC4\u0CC6\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CCC-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D40\u0D41-\u0D43\u0D46-\u0D48\u0D4A-\u0D4C\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F\u0D82-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD1\u0DD2-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2-\u0DF3\u0E01-\u0E30\u0E31\u0E32-\u0E33\u0E34-\u0E3A\u0E40-\u0E45\u0E46\u0E47-\u0E4E\u0E50-\u0E59\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB1\u0EB2-\u0EB3\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDD\u0F00\u0F18-\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F3F\u0F40-\u0F47\u0F49-\u0F6A\u0F71-\u0F7E\u0F7F\u0F80-\u0F84\u0F86-\u0F87\u0F88-\u0F8B\u0F90-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1021\u1023-\u1027\u1029-\u102A\u102C\u102D-\u1030\u1031\u1032\u1036-\u1037\u1038\u1039\u1040-\u1049\u1050-\u1055\u1056-\u1057\u1058-\u1059\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1159\u115F-\u11A2\u11A8-\u11F9\u1200-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u1676\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1712-\u1714\u1720-\u1731\u1732-\u1734\u1740-\u1751\u1752-\u1753\u1760-\u176C\u176E-\u1770\u1772-\u1773\u1780-\u17B3\u17B6\u17B7-\u17BD\u17BE-\u17C5\u17C6\u17C7-\u17C8\u17C9-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1842\u1843\u1844-\u1877\u1880-\u18A8\u18A9\u1900-\u191C\u1920-\u1922\u1923-\u1926\u1927-\u1928\u1929-\u192B\u1930-\u1931\u1932\u1933-\u1938\u1939-\u193B\u1946-\u194F\u1950-\u196D\u1970-\u1974\u1980-\u19A9\u19B0-\u19C0\u19C1-\u19C7\u19C8-\u19C9\u19D0-\u19D9\u1A00-\u1A16\u1A17-\u1A18\u1A19-\u1A1B\u1D00-\u1D2B\u1D2C-\u1D61\u1D62-\u1D77\u1D78\u1D79-\u1D9A\u1D9B-\u1DBF\u1DC0-\u1DC3\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F-\u2040\u2054\u2071\u207F\u2090-\u2094\u20D0-\u20DC\u20E1\u20E5-\u20EB\u2102\u2107\u210A-\u2113\u2115\u2118\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212E\u212F-\u2131\u2133-\u2134\u2135-\u2138\u2139\u213C-\u213F\u2145-\u2149\u2160-\u2183\u2C00-\u2C2E\u2C30-\u2C5E\u2C80-\u2CE4\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005\u3006\u3007\u3021-\u3029\u302A-\u302F\u3031-\u3035\u3038-\u303A\u303B\u303C\u3041-\u3096\u3099-\u309A\u309D-\u309E\u309F\u30A1-\u30FA\u30FC-\u30FE\u30FF\u3105-\u312C\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FBB\uA000-\uA014\uA015\uA016-\uA48C\uA800-\uA801\uA802\uA803-\uA805\uA806\uA807-\uA80A\uA80B\uA80C-\uA822\uA823-\uA824\uA825-\uA826\uA827\uAC00-\uD7A3\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1E\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFC5D\uFC64-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDF9\uFE00-\uFE0F\uFE20-\uFE23\uFE33-\uFE34\uFE4D-\uFE4F\uFE71\uFE73\uFE77\uFE79\uFE7B\uFE7D\uFE7F-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFF6F\uFF70\uFF71-\uFF9D\uFF9E-\uFF9F\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC' + +def allexcept(*args): + newcats = cats[:] + for arg in args: + newcats.remove(arg) + return u''.join([globals()[cat] for cat in newcats]) + +if __name__ == '__main__': + import unicodedata + + categories = {} + + f = open(__file__.rstrip('co')) + try: + content = f.read() + finally: + f.close() + + header = content[:content.find('Cc =')] + footer = content[content.find("def combine("):] + + for code in range(65535): + c = unichr(code) + cat = unicodedata.category(c) + categories.setdefault(cat, []).append(c) + + f = open(__file__, 'w') + f.write(header) + + for cat in sorted(categories): + val = u''.join(categories[cat]) + if cat == 'Cs': + # Jython can't handle isolated surrogates + f.write("""\ +try: + Cs = eval(r"%r") +except UnicodeDecodeError: + Cs = '' # Jython can't handle isolated surrogates\n\n""" % val) + else: + f.write('%s = %r\n\n' % (cat, val)) + f.write('cats = %r\n\n' % sorted(categories.keys())) + + f.write(footer) + f.close() diff --git a/package/bin/da_ess_contentupdate/jinja2/bccache.py b/package/bin/da_ess_contentupdate/jinja2/bccache.py new file mode 100755 index 0000000000..f5bd3145f6 --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/bccache.py @@ -0,0 +1,362 @@ +# -*- coding: utf-8 -*- +""" + jinja2.bccache + ~~~~~~~~~~~~~~ + + This module implements the bytecode cache system Jinja is optionally + using. This is useful if you have very complex template situations and + the compiliation of all those templates slow down your application too + much. + + Situations where this is useful are often forking web applications that + are initialized on the first request. + + :copyright: (c) 2010 by the Jinja Team. + :license: BSD. +""" +from os import path, listdir +import os +import sys +import stat +import errno +import marshal +import tempfile +import fnmatch +from hashlib import sha1 +from jinja2.utils import open_if_exists +from jinja2._compat import BytesIO, pickle, PY2, text_type + + +# marshal works better on 3.x, one hack less required +if not PY2: + marshal_dump = marshal.dump + marshal_load = marshal.load +else: + + def marshal_dump(code, f): + if isinstance(f, file): + marshal.dump(code, f) + else: + f.write(marshal.dumps(code)) + + def marshal_load(f): + if isinstance(f, file): + return marshal.load(f) + return marshal.loads(f.read()) + + +bc_version = 2 + +# magic version used to only change with new jinja versions. With 2.6 +# we change this to also take Python version changes into account. The +# reason for this is that Python tends to segfault if fed earlier bytecode +# versions because someone thought it would be a good idea to reuse opcodes +# or make Python incompatible with earlier versions. +bc_magic = 'j2'.encode('ascii') + \ + pickle.dumps(bc_version, 2) + \ + pickle.dumps((sys.version_info[0] << 24) | sys.version_info[1]) + + +class Bucket(object): + """Buckets are used to store the bytecode for one template. It's created + and initialized by the bytecode cache and passed to the loading functions. + + The buckets get an internal checksum from the cache assigned and use this + to automatically reject outdated cache material. Individual bytecode + cache subclasses don't have to care about cache invalidation. + """ + + def __init__(self, environment, key, checksum): + self.environment = environment + self.key = key + self.checksum = checksum + self.reset() + + def reset(self): + """Resets the bucket (unloads the bytecode).""" + self.code = None + + def load_bytecode(self, f): + """Loads bytecode from a file or file like object.""" + # make sure the magic header is correct + magic = f.read(len(bc_magic)) + if magic != bc_magic: + self.reset() + return + # the source code of the file changed, we need to reload + checksum = pickle.load(f) + if self.checksum != checksum: + self.reset() + return + # if marshal_load fails then we need to reload + try: + self.code = marshal_load(f) + except (EOFError, ValueError, TypeError): + self.reset() + return + + def write_bytecode(self, f): + """Dump the bytecode into the file or file like object passed.""" + if self.code is None: + raise TypeError('can\'t write empty bucket') + f.write(bc_magic) + pickle.dump(self.checksum, f, 2) + marshal_dump(self.code, f) + + def bytecode_from_string(self, string): + """Load bytecode from a string.""" + self.load_bytecode(BytesIO(string)) + + def bytecode_to_string(self): + """Return the bytecode as string.""" + out = BytesIO() + self.write_bytecode(out) + return out.getvalue() + + +class BytecodeCache(object): + """To implement your own bytecode cache you have to subclass this class + and override :meth:`load_bytecode` and :meth:`dump_bytecode`. Both of + these methods are passed a :class:`~jinja2.bccache.Bucket`. + + A very basic bytecode cache that saves the bytecode on the file system:: + + from os import path + + class MyCache(BytecodeCache): + + def __init__(self, directory): + self.directory = directory + + def load_bytecode(self, bucket): + filename = path.join(self.directory, bucket.key) + if path.exists(filename): + with open(filename, 'rb') as f: + bucket.load_bytecode(f) + + def dump_bytecode(self, bucket): + filename = path.join(self.directory, bucket.key) + with open(filename, 'wb') as f: + bucket.write_bytecode(f) + + A more advanced version of a filesystem based bytecode cache is part of + Jinja2. + """ + + def load_bytecode(self, bucket): + """Subclasses have to override this method to load bytecode into a + bucket. If they are not able to find code in the cache for the + bucket, it must not do anything. + """ + raise NotImplementedError() + + def dump_bytecode(self, bucket): + """Subclasses have to override this method to write the bytecode + from a bucket back to the cache. If it unable to do so it must not + fail silently but raise an exception. + """ + raise NotImplementedError() + + def clear(self): + """Clears the cache. This method is not used by Jinja2 but should be + implemented to allow applications to clear the bytecode cache used + by a particular environment. + """ + + def get_cache_key(self, name, filename=None): + """Returns the unique hash key for this template name.""" + hash = sha1(name.encode('utf-8')) + if filename is not None: + filename = '|' + filename + if isinstance(filename, text_type): + filename = filename.encode('utf-8') + hash.update(filename) + return hash.hexdigest() + + def get_source_checksum(self, source): + """Returns a checksum for the source.""" + return sha1(source.encode('utf-8')).hexdigest() + + def get_bucket(self, environment, name, filename, source): + """Return a cache bucket for the given template. All arguments are + mandatory but filename may be `None`. + """ + key = self.get_cache_key(name, filename) + checksum = self.get_source_checksum(source) + bucket = Bucket(environment, key, checksum) + self.load_bytecode(bucket) + return bucket + + def set_bucket(self, bucket): + """Put the bucket into the cache.""" + self.dump_bytecode(bucket) + + +class FileSystemBytecodeCache(BytecodeCache): + """A bytecode cache that stores bytecode on the filesystem. It accepts + two arguments: The directory where the cache items are stored and a + pattern string that is used to build the filename. + + If no directory is specified a default cache directory is selected. On + Windows the user's temp directory is used, on UNIX systems a directory + is created for the user in the system temp directory. + + The pattern can be used to have multiple separate caches operate on the + same directory. The default pattern is ``'__jinja2_%s.cache'``. ``%s`` + is replaced with the cache key. + + >>> bcc = FileSystemBytecodeCache('/tmp/jinja_cache', '%s.cache') + + This bytecode cache supports clearing of the cache using the clear method. + """ + + def __init__(self, directory=None, pattern='__jinja2_%s.cache'): + if directory is None: + directory = self._get_default_cache_dir() + self.directory = directory + self.pattern = pattern + + def _get_default_cache_dir(self): + def _unsafe_dir(): + raise RuntimeError('Cannot determine safe temp directory. You ' + 'need to explicitly provide one.') + + tmpdir = tempfile.gettempdir() + + # On windows the temporary directory is used specific unless + # explicitly forced otherwise. We can just use that. + if os.name == 'nt': + return tmpdir + if not hasattr(os, 'getuid'): + _unsafe_dir() + + dirname = '_jinja2-cache-%d' % os.getuid() + actual_dir = os.path.join(tmpdir, dirname) + + try: + os.mkdir(actual_dir, stat.S_IRWXU) + except OSError as e: + if e.errno != errno.EEXIST: + raise + try: + os.chmod(actual_dir, stat.S_IRWXU) + actual_dir_stat = os.lstat(actual_dir) + if actual_dir_stat.st_uid != os.getuid() \ + or not stat.S_ISDIR(actual_dir_stat.st_mode) \ + or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU: + _unsafe_dir() + except OSError as e: + if e.errno != errno.EEXIST: + raise + + actual_dir_stat = os.lstat(actual_dir) + if actual_dir_stat.st_uid != os.getuid() \ + or not stat.S_ISDIR(actual_dir_stat.st_mode) \ + or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU: + _unsafe_dir() + + return actual_dir + + def _get_cache_filename(self, bucket): + return path.join(self.directory, self.pattern % bucket.key) + + def load_bytecode(self, bucket): + f = open_if_exists(self._get_cache_filename(bucket), 'rb') + if f is not None: + try: + bucket.load_bytecode(f) + finally: + f.close() + + def dump_bytecode(self, bucket): + f = open(self._get_cache_filename(bucket), 'wb') + try: + bucket.write_bytecode(f) + finally: + f.close() + + def clear(self): + # imported lazily here because google app-engine doesn't support + # write access on the file system and the function does not exist + # normally. + from os import remove + files = fnmatch.filter(listdir(self.directory), self.pattern % '*') + for filename in files: + try: + remove(path.join(self.directory, filename)) + except OSError: + pass + + +class MemcachedBytecodeCache(BytecodeCache): + """This class implements a bytecode cache that uses a memcache cache for + storing the information. It does not enforce a specific memcache library + (tummy's memcache or cmemcache) but will accept any class that provides + the minimal interface required. + + Libraries compatible with this class: + + - `werkzeug `_.contrib.cache + - `python-memcached `_ + - `cmemcache `_ + + (Unfortunately the django cache interface is not compatible because it + does not support storing binary data, only unicode. You can however pass + the underlying cache client to the bytecode cache which is available + as `django.core.cache.cache._client`.) + + The minimal interface for the client passed to the constructor is this: + + .. class:: MinimalClientInterface + + .. method:: set(key, value[, timeout]) + + Stores the bytecode in the cache. `value` is a string and + `timeout` the timeout of the key. If timeout is not provided + a default timeout or no timeout should be assumed, if it's + provided it's an integer with the number of seconds the cache + item should exist. + + .. method:: get(key) + + Returns the value for the cache key. If the item does not + exist in the cache the return value must be `None`. + + The other arguments to the constructor are the prefix for all keys that + is added before the actual cache key and the timeout for the bytecode in + the cache system. We recommend a high (or no) timeout. + + This bytecode cache does not support clearing of used items in the cache. + The clear method is a no-operation function. + + .. versionadded:: 2.7 + Added support for ignoring memcache errors through the + `ignore_memcache_errors` parameter. + """ + + def __init__(self, client, prefix='jinja2/bytecode/', timeout=None, + ignore_memcache_errors=True): + self.client = client + self.prefix = prefix + self.timeout = timeout + self.ignore_memcache_errors = ignore_memcache_errors + + def load_bytecode(self, bucket): + try: + code = self.client.get(self.prefix + bucket.key) + except Exception: + if not self.ignore_memcache_errors: + raise + code = None + if code is not None: + bucket.bytecode_from_string(code) + + def dump_bytecode(self, bucket): + args = (self.prefix + bucket.key, bucket.bytecode_to_string()) + if self.timeout is not None: + args += (self.timeout,) + try: + self.client.set(*args) + except Exception: + if not self.ignore_memcache_errors: + raise diff --git a/package/bin/da_ess_contentupdate/jinja2/compiler.py b/package/bin/da_ess_contentupdate/jinja2/compiler.py new file mode 100755 index 0000000000..fad007b596 --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/compiler.py @@ -0,0 +1,1686 @@ +# -*- coding: utf-8 -*- +""" + jinja2.compiler + ~~~~~~~~~~~~~~~ + + Compiles nodes into python code. + + :copyright: (c) 2010 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +from itertools import chain +from copy import deepcopy +from keyword import iskeyword as is_python_keyword +from jinja2 import nodes +from jinja2.nodes import EvalContext +from jinja2.visitor import NodeVisitor +from jinja2.exceptions import TemplateAssertionError +from jinja2.utils import Markup, concat, escape +from jinja2._compat import range_type, text_type, string_types, \ + iteritems, NativeStringIO, imap + + +operators = { + 'eq': '==', + 'ne': '!=', + 'gt': '>', + 'gteq': '>=', + 'lt': '<', + 'lteq': '<=', + 'in': 'in', + 'notin': 'not in' +} + +# what method to iterate over items do we want to use for dict iteration +# in generated code? on 2.x let's go with iteritems, on 3.x with items +if hasattr(dict, 'iteritems'): + dict_item_iter = 'iteritems' +else: + dict_item_iter = 'items' + + +# does if 0: dummy(x) get us x into the scope? +def unoptimize_before_dead_code(): + x = 42 + def f(): + if 0: dummy(x) + return f + +# The getattr is necessary for pypy which does not set this attribute if +# no closure is on the function +unoptimize_before_dead_code = bool( + getattr(unoptimize_before_dead_code(), '__closure__', None)) + + +def generate(node, environment, name, filename, stream=None, + defer_init=False): + """Generate the python source for a node tree.""" + if not isinstance(node, nodes.Template): + raise TypeError('Can\'t compile non template nodes') + generator = environment.code_generator_class(environment, name, filename, + stream, defer_init) + generator.visit(node) + if stream is None: + return generator.stream.getvalue() + + +def has_safe_repr(value): + """Does the node have a safe representation?""" + if value is None or value is NotImplemented or value is Ellipsis: + return True + if isinstance(value, (bool, int, float, complex, range_type, + Markup) + string_types): + return True + if isinstance(value, (tuple, list, set, frozenset)): + for item in value: + if not has_safe_repr(item): + return False + return True + elif isinstance(value, dict): + for key, value in iteritems(value): + if not has_safe_repr(key): + return False + if not has_safe_repr(value): + return False + return True + return False + + +def find_undeclared(nodes, names): + """Check if the names passed are accessed undeclared. The return value + is a set of all the undeclared names from the sequence of names found. + """ + visitor = UndeclaredNameVisitor(names) + try: + for node in nodes: + visitor.visit(node) + except VisitorExit: + pass + return visitor.undeclared + + +class Identifiers(object): + """Tracks the status of identifiers in frames.""" + + def __init__(self): + # variables that are known to be declared (probably from outer + # frames or because they are special for the frame) + self.declared = set() + + # undeclared variables from outer scopes + self.outer_undeclared = set() + + # names that are accessed without being explicitly declared by + # this one or any of the outer scopes. Names can appear both in + # declared and undeclared. + self.undeclared = set() + + # names that are declared locally + self.declared_locally = set() + + # names that are declared by parameters + self.declared_parameter = set() + + def add_special(self, name): + """Register a special name like `loop`.""" + self.undeclared.discard(name) + self.declared.add(name) + + def is_declared(self, name): + """Check if a name is declared in this or an outer scope.""" + if name in self.declared_locally or name in self.declared_parameter: + return True + return name in self.declared + + def copy(self): + return deepcopy(self) + + +class Frame(object): + """Holds compile time information for us.""" + + def __init__(self, eval_ctx, parent=None): + self.eval_ctx = eval_ctx + self.identifiers = Identifiers() + + # a toplevel frame is the root + soft frames such as if conditions. + self.toplevel = False + + # the root frame is basically just the outermost frame, so no if + # conditions. This information is used to optimize inheritance + # situations. + self.rootlevel = False + + # in some dynamic inheritance situations the compiler needs to add + # write tests around output statements. + self.require_output_check = parent and parent.require_output_check + + # inside some tags we are using a buffer rather than yield statements. + # this for example affects {% filter %} or {% macro %}. If a frame + # is buffered this variable points to the name of the list used as + # buffer. + self.buffer = None + + # the name of the block we're in, otherwise None. + self.block = parent and parent.block or None + + # a set of actually assigned names + self.assigned_names = set() + + # the parent of this frame + self.parent = parent + + if parent is not None: + self.identifiers.declared.update( + parent.identifiers.declared | + parent.identifiers.declared_parameter | + parent.assigned_names + ) + self.identifiers.outer_undeclared.update( + parent.identifiers.undeclared - + self.identifiers.declared + ) + self.buffer = parent.buffer + + def copy(self): + """Create a copy of the current one.""" + rv = object.__new__(self.__class__) + rv.__dict__.update(self.__dict__) + rv.identifiers = object.__new__(self.identifiers.__class__) + rv.identifiers.__dict__.update(self.identifiers.__dict__) + return rv + + def inspect(self, nodes): + """Walk the node and check for identifiers. If the scope is hard (eg: + enforce on a python level) overrides from outer scopes are tracked + differently. + """ + visitor = FrameIdentifierVisitor(self.identifiers) + for node in nodes: + visitor.visit(node) + + def find_shadowed(self, extra=()): + """Find all the shadowed names. extra is an iterable of variables + that may be defined with `add_special` which may occour scoped. + """ + i = self.identifiers + return (i.declared | i.outer_undeclared) & \ + (i.declared_locally | i.declared_parameter) | \ + set(x for x in extra if i.is_declared(x)) + + def inner(self): + """Return an inner frame.""" + return Frame(self.eval_ctx, self) + + def soft(self): + """Return a soft frame. A soft frame may not be modified as + standalone thing as it shares the resources with the frame it + was created of, but it's not a rootlevel frame any longer. + """ + rv = self.copy() + rv.rootlevel = False + return rv + + __copy__ = copy + + +class VisitorExit(RuntimeError): + """Exception used by the `UndeclaredNameVisitor` to signal a stop.""" + + +class DependencyFinderVisitor(NodeVisitor): + """A visitor that collects filter and test calls.""" + + def __init__(self): + self.filters = set() + self.tests = set() + + def visit_Filter(self, node): + self.generic_visit(node) + self.filters.add(node.name) + + def visit_Test(self, node): + self.generic_visit(node) + self.tests.add(node.name) + + def visit_Block(self, node): + """Stop visiting at blocks.""" + + +class UndeclaredNameVisitor(NodeVisitor): + """A visitor that checks if a name is accessed without being + declared. This is different from the frame visitor as it will + not stop at closure frames. + """ + + def __init__(self, names): + self.names = set(names) + self.undeclared = set() + + def visit_Name(self, node): + if node.ctx == 'load' and node.name in self.names: + self.undeclared.add(node.name) + if self.undeclared == self.names: + raise VisitorExit() + else: + self.names.discard(node.name) + + def visit_Block(self, node): + """Stop visiting a blocks.""" + + +class FrameIdentifierVisitor(NodeVisitor): + """A visitor for `Frame.inspect`.""" + + def __init__(self, identifiers): + self.identifiers = identifiers + + def visit_Name(self, node): + """All assignments to names go through this function.""" + if node.ctx == 'store': + self.identifiers.declared_locally.add(node.name) + elif node.ctx == 'param': + self.identifiers.declared_parameter.add(node.name) + elif node.ctx == 'load' and not \ + self.identifiers.is_declared(node.name): + self.identifiers.undeclared.add(node.name) + + def visit_If(self, node): + self.visit(node.test) + real_identifiers = self.identifiers + + old_names = real_identifiers.declared_locally | \ + real_identifiers.declared_parameter + + def inner_visit(nodes): + if not nodes: + return set() + self.identifiers = real_identifiers.copy() + for subnode in nodes: + self.visit(subnode) + rv = self.identifiers.declared_locally - old_names + # we have to remember the undeclared variables of this branch + # because we will have to pull them. + real_identifiers.undeclared.update(self.identifiers.undeclared) + self.identifiers = real_identifiers + return rv + + body = inner_visit(node.body) + else_ = inner_visit(node.else_ or ()) + + # the differences between the two branches are also pulled as + # undeclared variables + real_identifiers.undeclared.update(body.symmetric_difference(else_) - + real_identifiers.declared) + + # remember those that are declared. + real_identifiers.declared_locally.update(body | else_) + + def visit_Macro(self, node): + self.identifiers.declared_locally.add(node.name) + + def visit_Import(self, node): + self.generic_visit(node) + self.identifiers.declared_locally.add(node.target) + + def visit_FromImport(self, node): + self.generic_visit(node) + for name in node.names: + if isinstance(name, tuple): + self.identifiers.declared_locally.add(name[1]) + else: + self.identifiers.declared_locally.add(name) + + def visit_Assign(self, node): + """Visit assignments in the correct order.""" + self.visit(node.node) + self.visit(node.target) + + def visit_For(self, node): + """Visiting stops at for blocks. However the block sequence + is visited as part of the outer scope. + """ + self.visit(node.iter) + + def visit_CallBlock(self, node): + self.visit(node.call) + + def visit_FilterBlock(self, node): + self.visit(node.filter) + + def visit_AssignBlock(self, node): + """Stop visiting at block assigns.""" + + def visit_Scope(self, node): + """Stop visiting at scopes.""" + + def visit_Block(self, node): + """Stop visiting at blocks.""" + + +class CompilerExit(Exception): + """Raised if the compiler encountered a situation where it just + doesn't make sense to further process the code. Any block that + raises such an exception is not further processed. + """ + + +class CodeGenerator(NodeVisitor): + + def __init__(self, environment, name, filename, stream=None, + defer_init=False): + if stream is None: + stream = NativeStringIO() + self.environment = environment + self.name = name + self.filename = filename + self.stream = stream + self.created_block_context = False + self.defer_init = defer_init + + # aliases for imports + self.import_aliases = {} + + # a registry for all blocks. Because blocks are moved out + # into the global python scope they are registered here + self.blocks = {} + + # the number of extends statements so far + self.extends_so_far = 0 + + # some templates have a rootlevel extends. In this case we + # can safely assume that we're a child template and do some + # more optimizations. + self.has_known_extends = False + + # the current line number + self.code_lineno = 1 + + # registry of all filters and tests (global, not block local) + self.tests = {} + self.filters = {} + + # the debug information + self.debug_info = [] + self._write_debug_info = None + + # the number of new lines before the next write() + self._new_lines = 0 + + # the line number of the last written statement + self._last_line = 0 + + # true if nothing was written so far. + self._first_write = True + + # used by the `temporary_identifier` method to get new + # unique, temporary identifier + self._last_identifier = 0 + + # the current indentation + self._indentation = 0 + + # -- Various compilation helpers + + def fail(self, msg, lineno): + """Fail with a :exc:`TemplateAssertionError`.""" + raise TemplateAssertionError(msg, lineno, self.name, self.filename) + + def temporary_identifier(self): + """Get a new unique identifier.""" + self._last_identifier += 1 + return 't_%d' % self._last_identifier + + def buffer(self, frame): + """Enable buffering for the frame from that point onwards.""" + frame.buffer = self.temporary_identifier() + self.writeline('%s = []' % frame.buffer) + + def return_buffer_contents(self, frame): + """Return the buffer contents of the frame.""" + if frame.eval_ctx.volatile: + self.writeline('if context.eval_ctx.autoescape:') + self.indent() + self.writeline('return Markup(concat(%s))' % frame.buffer) + self.outdent() + self.writeline('else:') + self.indent() + self.writeline('return concat(%s)' % frame.buffer) + self.outdent() + elif frame.eval_ctx.autoescape: + self.writeline('return Markup(concat(%s))' % frame.buffer) + else: + self.writeline('return concat(%s)' % frame.buffer) + + def indent(self): + """Indent by one.""" + self._indentation += 1 + + def outdent(self, step=1): + """Outdent by step.""" + self._indentation -= step + + def start_write(self, frame, node=None): + """Yield or write into the frame buffer.""" + if frame.buffer is None: + self.writeline('yield ', node) + else: + self.writeline('%s.append(' % frame.buffer, node) + + def end_write(self, frame): + """End the writing process started by `start_write`.""" + if frame.buffer is not None: + self.write(')') + + def simple_write(self, s, frame, node=None): + """Simple shortcut for start_write + write + end_write.""" + self.start_write(frame, node) + self.write(s) + self.end_write(frame) + + def blockvisit(self, nodes, frame): + """Visit a list of nodes as block in a frame. If the current frame + is no buffer a dummy ``if 0: yield None`` is written automatically + unless the force_generator parameter is set to False. + """ + if frame.buffer is None: + self.writeline('if 0: yield None') + else: + self.writeline('pass') + try: + for node in nodes: + self.visit(node, frame) + except CompilerExit: + pass + + def write(self, x): + """Write a string into the output stream.""" + if self._new_lines: + if not self._first_write: + self.stream.write('\n' * self._new_lines) + self.code_lineno += self._new_lines + if self._write_debug_info is not None: + self.debug_info.append((self._write_debug_info, + self.code_lineno)) + self._write_debug_info = None + self._first_write = False + self.stream.write(' ' * self._indentation) + self._new_lines = 0 + self.stream.write(x) + + def writeline(self, x, node=None, extra=0): + """Combination of newline and write.""" + self.newline(node, extra) + self.write(x) + + def newline(self, node=None, extra=0): + """Add one or more newlines before the next write.""" + self._new_lines = max(self._new_lines, 1 + extra) + if node is not None and node.lineno != self._last_line: + self._write_debug_info = node.lineno + self._last_line = node.lineno + + def signature(self, node, frame, extra_kwargs=None): + """Writes a function call to the stream for the current node. + A leading comma is added automatically. The extra keyword + arguments may not include python keywords otherwise a syntax + error could occour. The extra keyword arguments should be given + as python dict. + """ + # if any of the given keyword arguments is a python keyword + # we have to make sure that no invalid call is created. + kwarg_workaround = False + for kwarg in chain((x.key for x in node.kwargs), extra_kwargs or ()): + if is_python_keyword(kwarg): + kwarg_workaround = True + break + + for arg in node.args: + self.write(', ') + self.visit(arg, frame) + + if not kwarg_workaround: + for kwarg in node.kwargs: + self.write(', ') + self.visit(kwarg, frame) + if extra_kwargs is not None: + for key, value in iteritems(extra_kwargs): + self.write(', %s=%s' % (key, value)) + if node.dyn_args: + self.write(', *') + self.visit(node.dyn_args, frame) + + if kwarg_workaround: + if node.dyn_kwargs is not None: + self.write(', **dict({') + else: + self.write(', **{') + for kwarg in node.kwargs: + self.write('%r: ' % kwarg.key) + self.visit(kwarg.value, frame) + self.write(', ') + if extra_kwargs is not None: + for key, value in iteritems(extra_kwargs): + self.write('%r: %s, ' % (key, value)) + if node.dyn_kwargs is not None: + self.write('}, **') + self.visit(node.dyn_kwargs, frame) + self.write(')') + else: + self.write('}') + + elif node.dyn_kwargs is not None: + self.write(', **') + self.visit(node.dyn_kwargs, frame) + + def pull_locals(self, frame): + """Pull all the references identifiers into the local scope.""" + for name in frame.identifiers.undeclared: + self.writeline('l_%s = context.resolve(%r)' % (name, name)) + + def pull_dependencies(self, nodes): + """Pull all the dependencies.""" + visitor = DependencyFinderVisitor() + for node in nodes: + visitor.visit(node) + for dependency in 'filters', 'tests': + mapping = getattr(self, dependency) + for name in getattr(visitor, dependency): + if name not in mapping: + mapping[name] = self.temporary_identifier() + self.writeline('%s = environment.%s[%r]' % + (mapping[name], dependency, name)) + + def unoptimize_scope(self, frame): + """Disable Python optimizations for the frame.""" + # XXX: this is not that nice but it has no real overhead. It + # mainly works because python finds the locals before dead code + # is removed. If that breaks we have to add a dummy function + # that just accepts the arguments and does nothing. + if frame.identifiers.declared: + self.writeline('%sdummy(%s)' % ( + unoptimize_before_dead_code and 'if 0: ' or '', + ', '.join('l_' + name for name in frame.identifiers.declared) + )) + + def push_scope(self, frame, extra_vars=()): + """This function returns all the shadowed variables in a dict + in the form name: alias and will write the required assignments + into the current scope. No indentation takes place. + + This also predefines locally declared variables from the loop + body because under some circumstances it may be the case that + + `extra_vars` is passed to `Frame.find_shadowed`. + """ + aliases = {} + for name in frame.find_shadowed(extra_vars): + aliases[name] = ident = self.temporary_identifier() + self.writeline('%s = l_%s' % (ident, name)) + to_declare = set() + for name in frame.identifiers.declared_locally: + if name not in aliases: + to_declare.add('l_' + name) + if to_declare: + self.writeline(' = '.join(to_declare) + ' = missing') + return aliases + + def pop_scope(self, aliases, frame): + """Restore all aliases and delete unused variables.""" + for name, alias in iteritems(aliases): + self.writeline('l_%s = %s' % (name, alias)) + to_delete = set() + for name in frame.identifiers.declared_locally: + if name not in aliases: + to_delete.add('l_' + name) + if to_delete: + # we cannot use the del statement here because enclosed + # scopes can trigger a SyntaxError: + # a = 42; b = lambda: a; del a + self.writeline(' = '.join(to_delete) + ' = missing') + + def function_scoping(self, node, frame, children=None, + find_special=True): + """In Jinja a few statements require the help of anonymous + functions. Those are currently macros and call blocks and in + the future also recursive loops. As there is currently + technical limitation that doesn't allow reading and writing a + variable in a scope where the initial value is coming from an + outer scope, this function tries to fall back with a common + error message. Additionally the frame passed is modified so + that the argumetns are collected and callers are looked up. + + This will return the modified frame. + """ + # we have to iterate twice over it, make sure that works + if children is None: + children = node.iter_child_nodes() + children = list(children) + func_frame = frame.inner() + func_frame.inspect(children) + + # variables that are undeclared (accessed before declaration) and + # declared locally *and* part of an outside scope raise a template + # assertion error. Reason: we can't generate reasonable code from + # it without aliasing all the variables. + # this could be fixed in Python 3 where we have the nonlocal + # keyword or if we switch to bytecode generation + overridden_closure_vars = ( + func_frame.identifiers.undeclared & + func_frame.identifiers.declared & + (func_frame.identifiers.declared_locally | + func_frame.identifiers.declared_parameter) + ) + if overridden_closure_vars: + self.fail('It\'s not possible to set and access variables ' + 'derived from an outer scope! (affects: %s)' % + ', '.join(sorted(overridden_closure_vars)), node.lineno) + + # remove variables from a closure from the frame's undeclared + # identifiers. + func_frame.identifiers.undeclared -= ( + func_frame.identifiers.undeclared & + func_frame.identifiers.declared + ) + + # no special variables for this scope, abort early + if not find_special: + return func_frame + + func_frame.accesses_kwargs = False + func_frame.accesses_varargs = False + func_frame.accesses_caller = False + func_frame.arguments = args = ['l_' + x.name for x in node.args] + + undeclared = find_undeclared(children, ('caller', 'kwargs', 'varargs')) + + if 'caller' in undeclared: + func_frame.accesses_caller = True + func_frame.identifiers.add_special('caller') + args.append('l_caller') + if 'kwargs' in undeclared: + func_frame.accesses_kwargs = True + func_frame.identifiers.add_special('kwargs') + args.append('l_kwargs') + if 'varargs' in undeclared: + func_frame.accesses_varargs = True + func_frame.identifiers.add_special('varargs') + args.append('l_varargs') + return func_frame + + def macro_body(self, node, frame, children=None): + """Dump the function def of a macro or call block.""" + frame = self.function_scoping(node, frame, children) + # macros are delayed, they never require output checks + frame.require_output_check = False + args = frame.arguments + # XXX: this is an ugly fix for the loop nesting bug + # (tests.test_old_bugs.test_loop_call_bug). This works around + # a identifier nesting problem we have in general. It's just more + # likely to happen in loops which is why we work around it. The + # real solution would be "nonlocal" all the identifiers that are + # leaking into a new python frame and might be used both unassigned + # and assigned. + if 'loop' in frame.identifiers.declared: + args = args + ['l_loop=l_loop'] + self.writeline('def macro(%s):' % ', '.join(args), node) + self.indent() + self.buffer(frame) + self.pull_locals(frame) + self.blockvisit(node.body, frame) + self.return_buffer_contents(frame) + self.outdent() + return frame + + def macro_def(self, node, frame): + """Dump the macro definition for the def created by macro_body.""" + arg_tuple = ', '.join(repr(x.name) for x in node.args) + name = getattr(node, 'name', None) + if len(node.args) == 1: + arg_tuple += ',' + self.write('Macro(environment, macro, %r, (%s), (' % + (name, arg_tuple)) + for arg in node.defaults: + self.visit(arg, frame) + self.write(', ') + self.write('), %r, %r, %r)' % ( + bool(frame.accesses_kwargs), + bool(frame.accesses_varargs), + bool(frame.accesses_caller) + )) + + def position(self, node): + """Return a human readable position for the node.""" + rv = 'line %d' % node.lineno + if self.name is not None: + rv += ' in ' + repr(self.name) + return rv + + # -- Statement Visitors + + def visit_Template(self, node, frame=None): + assert frame is None, 'no root frame allowed' + eval_ctx = EvalContext(self.environment, self.name) + + from jinja2.runtime import __all__ as exported + self.writeline('from __future__ import division') + self.writeline('from jinja2.runtime import ' + ', '.join(exported)) + if not unoptimize_before_dead_code: + self.writeline('dummy = lambda *x: None') + + # if we want a deferred initialization we cannot move the + # environment into a local name + envenv = not self.defer_init and ', environment=environment' or '' + + # do we have an extends tag at all? If not, we can save some + # overhead by just not processing any inheritance code. + have_extends = node.find(nodes.Extends) is not None + + # find all blocks + for block in node.find_all(nodes.Block): + if block.name in self.blocks: + self.fail('block %r defined twice' % block.name, block.lineno) + self.blocks[block.name] = block + + # find all imports and import them + for import_ in node.find_all(nodes.ImportedName): + if import_.importname not in self.import_aliases: + imp = import_.importname + self.import_aliases[imp] = alias = self.temporary_identifier() + if '.' in imp: + module, obj = imp.rsplit('.', 1) + self.writeline('from %s import %s as %s' % + (module, obj, alias)) + else: + self.writeline('import %s as %s' % (imp, alias)) + + # add the load name + self.writeline('name = %r' % self.name) + + # generate the root render function. + self.writeline('def root(context%s):' % envenv, extra=1) + + # process the root + frame = Frame(eval_ctx) + frame.inspect(node.body) + frame.toplevel = frame.rootlevel = True + frame.require_output_check = have_extends and not self.has_known_extends + self.indent() + if have_extends: + self.writeline('parent_template = None') + if 'self' in find_undeclared(node.body, ('self',)): + frame.identifiers.add_special('self') + self.writeline('l_self = TemplateReference(context)') + self.pull_locals(frame) + self.pull_dependencies(node.body) + self.blockvisit(node.body, frame) + self.outdent() + + # make sure that the parent root is called. + if have_extends: + if not self.has_known_extends: + self.indent() + self.writeline('if parent_template is not None:') + self.indent() + self.writeline('for event in parent_template.' + 'root_render_func(context):') + self.indent() + self.writeline('yield event') + self.outdent(2 + (not self.has_known_extends)) + + # at this point we now have the blocks collected and can visit them too. + for name, block in iteritems(self.blocks): + block_frame = Frame(eval_ctx) + block_frame.inspect(block.body) + block_frame.block = name + self.writeline('def block_%s(context%s):' % (name, envenv), + block, 1) + self.indent() + undeclared = find_undeclared(block.body, ('self', 'super')) + if 'self' in undeclared: + block_frame.identifiers.add_special('self') + self.writeline('l_self = TemplateReference(context)') + if 'super' in undeclared: + block_frame.identifiers.add_special('super') + self.writeline('l_super = context.super(%r, ' + 'block_%s)' % (name, name)) + self.pull_locals(block_frame) + self.pull_dependencies(block.body) + self.blockvisit(block.body, block_frame) + self.outdent() + + self.writeline('blocks = {%s}' % ', '.join('%r: block_%s' % (x, x) + for x in self.blocks), + extra=1) + + # add a function that returns the debug info + self.writeline('debug_info = %r' % '&'.join('%s=%s' % x for x + in self.debug_info)) + + def visit_Block(self, node, frame): + """Call a block and register it for the template.""" + level = 1 + if frame.toplevel: + # if we know that we are a child template, there is no need to + # check if we are one + if self.has_known_extends: + return + if self.extends_so_far > 0: + self.writeline('if parent_template is None:') + self.indent() + level += 1 + context = node.scoped and 'context.derived(locals())' or 'context' + self.writeline('for event in context.blocks[%r][0](%s):' % ( + node.name, context), node) + self.indent() + self.simple_write('event', frame) + self.outdent(level) + + def visit_Extends(self, node, frame): + """Calls the extender.""" + if not frame.toplevel: + self.fail('cannot use extend from a non top-level scope', + node.lineno) + + # if the number of extends statements in general is zero so + # far, we don't have to add a check if something extended + # the template before this one. + if self.extends_so_far > 0: + + # if we have a known extends we just add a template runtime + # error into the generated code. We could catch that at compile + # time too, but i welcome it not to confuse users by throwing the + # same error at different times just "because we can". + if not self.has_known_extends: + self.writeline('if parent_template is not None:') + self.indent() + self.writeline('raise TemplateRuntimeError(%r)' % + 'extended multiple times') + + # if we have a known extends already we don't need that code here + # as we know that the template execution will end here. + if self.has_known_extends: + raise CompilerExit() + else: + self.outdent() + + self.writeline('parent_template = environment.get_template(', node) + self.visit(node.template, frame) + self.write(', %r)' % self.name) + self.writeline('for name, parent_block in parent_template.' + 'blocks.%s():' % dict_item_iter) + self.indent() + self.writeline('context.blocks.setdefault(name, []).' + 'append(parent_block)') + self.outdent() + + # if this extends statement was in the root level we can take + # advantage of that information and simplify the generated code + # in the top level from this point onwards + if frame.rootlevel: + self.has_known_extends = True + + # and now we have one more + self.extends_so_far += 1 + + def visit_Include(self, node, frame): + """Handles includes.""" + if node.with_context: + self.unoptimize_scope(frame) + if node.ignore_missing: + self.writeline('try:') + self.indent() + + func_name = 'get_or_select_template' + if isinstance(node.template, nodes.Const): + if isinstance(node.template.value, string_types): + func_name = 'get_template' + elif isinstance(node.template.value, (tuple, list)): + func_name = 'select_template' + elif isinstance(node.template, (nodes.Tuple, nodes.List)): + func_name = 'select_template' + + self.writeline('template = environment.%s(' % func_name, node) + self.visit(node.template, frame) + self.write(', %r)' % self.name) + if node.ignore_missing: + self.outdent() + self.writeline('except TemplateNotFound:') + self.indent() + self.writeline('pass') + self.outdent() + self.writeline('else:') + self.indent() + + if node.with_context: + self.writeline('for event in template.root_render_func(' + 'template.new_context(context.parent, True, ' + 'locals())):') + else: + self.writeline('for event in template.module._body_stream:') + + self.indent() + self.simple_write('event', frame) + self.outdent() + + if node.ignore_missing: + self.outdent() + + def visit_Import(self, node, frame): + """Visit regular imports.""" + if node.with_context: + self.unoptimize_scope(frame) + self.writeline('l_%s = ' % node.target, node) + if frame.toplevel: + self.write('context.vars[%r] = ' % node.target) + self.write('environment.get_template(') + self.visit(node.template, frame) + self.write(', %r).' % self.name) + if node.with_context: + self.write('make_module(context.parent, True, locals())') + else: + self.write('module') + if frame.toplevel and not node.target.startswith('_'): + self.writeline('context.exported_vars.discard(%r)' % node.target) + frame.assigned_names.add(node.target) + + def visit_FromImport(self, node, frame): + """Visit named imports.""" + self.newline(node) + self.write('included_template = environment.get_template(') + self.visit(node.template, frame) + self.write(', %r).' % self.name) + if node.with_context: + self.write('make_module(context.parent, True)') + else: + self.write('module') + + var_names = [] + discarded_names = [] + for name in node.names: + if isinstance(name, tuple): + name, alias = name + else: + alias = name + self.writeline('l_%s = getattr(included_template, ' + '%r, missing)' % (alias, name)) + self.writeline('if l_%s is missing:' % alias) + self.indent() + self.writeline('l_%s = environment.undefined(%r %% ' + 'included_template.__name__, ' + 'name=%r)' % + (alias, 'the template %%r (imported on %s) does ' + 'not export the requested name %s' % ( + self.position(node), + repr(name) + ), name)) + self.outdent() + if frame.toplevel: + var_names.append(alias) + if not alias.startswith('_'): + discarded_names.append(alias) + frame.assigned_names.add(alias) + + if var_names: + if len(var_names) == 1: + name = var_names[0] + self.writeline('context.vars[%r] = l_%s' % (name, name)) + else: + self.writeline('context.vars.update({%s})' % ', '.join( + '%r: l_%s' % (name, name) for name in var_names + )) + if discarded_names: + if len(discarded_names) == 1: + self.writeline('context.exported_vars.discard(%r)' % + discarded_names[0]) + else: + self.writeline('context.exported_vars.difference_' + 'update((%s))' % ', '.join(imap(repr, discarded_names))) + + def visit_For(self, node, frame): + # when calculating the nodes for the inner frame we have to exclude + # the iterator contents from it + children = node.iter_child_nodes(exclude=('iter',)) + if node.recursive: + loop_frame = self.function_scoping(node, frame, children, + find_special=False) + else: + loop_frame = frame.inner() + loop_frame.inspect(children) + + # try to figure out if we have an extended loop. An extended loop + # is necessary if the loop is in recursive mode if the special loop + # variable is accessed in the body. + extended_loop = node.recursive or 'loop' in \ + find_undeclared(node.iter_child_nodes( + only=('body',)), ('loop',)) + + # if we don't have an recursive loop we have to find the shadowed + # variables at that point. Because loops can be nested but the loop + # variable is a special one we have to enforce aliasing for it. + if not node.recursive: + aliases = self.push_scope(loop_frame, ('loop',)) + + # otherwise we set up a buffer and add a function def + else: + self.writeline('def loop(reciter, loop_render_func, depth=0):', node) + self.indent() + self.buffer(loop_frame) + aliases = {} + + # make sure the loop variable is a special one and raise a template + # assertion error if a loop tries to write to loop + if extended_loop: + self.writeline('l_loop = missing') + loop_frame.identifiers.add_special('loop') + for name in node.find_all(nodes.Name): + if name.ctx == 'store' and name.name == 'loop': + self.fail('Can\'t assign to special loop variable ' + 'in for-loop target', name.lineno) + + self.pull_locals(loop_frame) + if node.else_: + iteration_indicator = self.temporary_identifier() + self.writeline('%s = 1' % iteration_indicator) + + # Create a fake parent loop if the else or test section of a + # loop is accessing the special loop variable and no parent loop + # exists. + if 'loop' not in aliases and 'loop' in find_undeclared( + node.iter_child_nodes(only=('else_', 'test')), ('loop',)): + self.writeline("l_loop = environment.undefined(%r, name='loop')" % + ("'loop' is undefined. the filter section of a loop as well " + "as the else block don't have access to the special 'loop'" + " variable of the current loop. Because there is no parent " + "loop it's undefined. Happened in loop on %s" % + self.position(node))) + + self.writeline('for ', node) + self.visit(node.target, loop_frame) + self.write(extended_loop and ', l_loop in LoopContext(' or ' in ') + + # if we have an extened loop and a node test, we filter in the + # "outer frame". + if extended_loop and node.test is not None: + self.write('(') + self.visit(node.target, loop_frame) + self.write(' for ') + self.visit(node.target, loop_frame) + self.write(' in ') + if node.recursive: + self.write('reciter') + else: + self.visit(node.iter, loop_frame) + self.write(' if (') + test_frame = loop_frame.copy() + self.visit(node.test, test_frame) + self.write('))') + + elif node.recursive: + self.write('reciter') + else: + self.visit(node.iter, loop_frame) + + if node.recursive: + self.write(', loop_render_func, depth):') + else: + self.write(extended_loop and '):' or ':') + + # tests in not extended loops become a continue + if not extended_loop and node.test is not None: + self.indent() + self.writeline('if not ') + self.visit(node.test, loop_frame) + self.write(':') + self.indent() + self.writeline('continue') + self.outdent(2) + + self.indent() + self.blockvisit(node.body, loop_frame) + if node.else_: + self.writeline('%s = 0' % iteration_indicator) + self.outdent() + + if node.else_: + self.writeline('if %s:' % iteration_indicator) + self.indent() + self.blockvisit(node.else_, loop_frame) + self.outdent() + + # reset the aliases if there are any. + if not node.recursive: + self.pop_scope(aliases, loop_frame) + + # if the node was recursive we have to return the buffer contents + # and start the iteration code + if node.recursive: + self.return_buffer_contents(loop_frame) + self.outdent() + self.start_write(frame, node) + self.write('loop(') + self.visit(node.iter, frame) + self.write(', loop)') + self.end_write(frame) + + def visit_If(self, node, frame): + if_frame = frame.soft() + self.writeline('if ', node) + self.visit(node.test, if_frame) + self.write(':') + self.indent() + self.blockvisit(node.body, if_frame) + self.outdent() + if node.else_: + self.writeline('else:') + self.indent() + self.blockvisit(node.else_, if_frame) + self.outdent() + + def visit_Macro(self, node, frame): + macro_frame = self.macro_body(node, frame) + self.newline() + if frame.toplevel: + if not node.name.startswith('_'): + self.write('context.exported_vars.add(%r)' % node.name) + self.writeline('context.vars[%r] = ' % node.name) + self.write('l_%s = ' % node.name) + self.macro_def(node, macro_frame) + frame.assigned_names.add(node.name) + + def visit_CallBlock(self, node, frame): + children = node.iter_child_nodes(exclude=('call',)) + call_frame = self.macro_body(node, frame, children) + self.writeline('caller = ') + self.macro_def(node, call_frame) + self.start_write(frame, node) + self.visit_Call(node.call, call_frame, forward_caller=True) + self.end_write(frame) + + def visit_FilterBlock(self, node, frame): + filter_frame = frame.inner() + filter_frame.inspect(node.iter_child_nodes()) + aliases = self.push_scope(filter_frame) + self.pull_locals(filter_frame) + self.buffer(filter_frame) + self.blockvisit(node.body, filter_frame) + self.start_write(frame, node) + self.visit_Filter(node.filter, filter_frame) + self.end_write(frame) + self.pop_scope(aliases, filter_frame) + + def visit_ExprStmt(self, node, frame): + self.newline(node) + self.visit(node.node, frame) + + def visit_Output(self, node, frame): + # if we have a known extends statement, we don't output anything + # if we are in a require_output_check section + if self.has_known_extends and frame.require_output_check: + return + + allow_constant_finalize = True + if self.environment.finalize: + func = self.environment.finalize + if getattr(func, 'contextfunction', False) or \ + getattr(func, 'evalcontextfunction', False): + allow_constant_finalize = False + elif getattr(func, 'environmentfunction', False): + finalize = lambda x: text_type( + self.environment.finalize(self.environment, x)) + else: + finalize = lambda x: text_type(self.environment.finalize(x)) + else: + finalize = text_type + + # if we are inside a frame that requires output checking, we do so + outdent_later = False + if frame.require_output_check: + self.writeline('if parent_template is None:') + self.indent() + outdent_later = True + + # try to evaluate as many chunks as possible into a static + # string at compile time. + body = [] + for child in node.nodes: + try: + if not allow_constant_finalize: + raise nodes.Impossible() + const = child.as_const(frame.eval_ctx) + except nodes.Impossible: + body.append(child) + continue + # the frame can't be volatile here, becaus otherwise the + # as_const() function would raise an Impossible exception + # at that point. + try: + if frame.eval_ctx.autoescape: + if hasattr(const, '__html__'): + const = const.__html__() + else: + const = escape(const) + const = finalize(const) + except Exception: + # if something goes wrong here we evaluate the node + # at runtime for easier debugging + body.append(child) + continue + if body and isinstance(body[-1], list): + body[-1].append(const) + else: + body.append([const]) + + # if we have less than 3 nodes or a buffer we yield or extend/append + if len(body) < 3 or frame.buffer is not None: + if frame.buffer is not None: + # for one item we append, for more we extend + if len(body) == 1: + self.writeline('%s.append(' % frame.buffer) + else: + self.writeline('%s.extend((' % frame.buffer) + self.indent() + for item in body: + if isinstance(item, list): + val = repr(concat(item)) + if frame.buffer is None: + self.writeline('yield ' + val) + else: + self.writeline(val + ', ') + else: + if frame.buffer is None: + self.writeline('yield ', item) + else: + self.newline(item) + close = 1 + if frame.eval_ctx.volatile: + self.write('(context.eval_ctx.autoescape and' + ' escape or to_string)(') + elif frame.eval_ctx.autoescape: + self.write('escape(') + else: + self.write('to_string(') + if self.environment.finalize is not None: + self.write('environment.finalize(') + if getattr(self.environment.finalize, + "contextfunction", False): + self.write('context, ') + close += 1 + self.visit(item, frame) + self.write(')' * close) + if frame.buffer is not None: + self.write(', ') + if frame.buffer is not None: + # close the open parentheses + self.outdent() + self.writeline(len(body) == 1 and ')' or '))') + + # otherwise we create a format string as this is faster in that case + else: + format = [] + arguments = [] + for item in body: + if isinstance(item, list): + format.append(concat(item).replace('%', '%%')) + else: + format.append('%s') + arguments.append(item) + self.writeline('yield ') + self.write(repr(concat(format)) + ' % (') + self.indent() + for argument in arguments: + self.newline(argument) + close = 0 + if frame.eval_ctx.volatile: + self.write('(context.eval_ctx.autoescape and' + ' escape or to_string)(') + close += 1 + elif frame.eval_ctx.autoescape: + self.write('escape(') + close += 1 + if self.environment.finalize is not None: + self.write('environment.finalize(') + if getattr(self.environment.finalize, + 'contextfunction', False): + self.write('context, ') + elif getattr(self.environment.finalize, + 'evalcontextfunction', False): + self.write('context.eval_ctx, ') + elif getattr(self.environment.finalize, + 'environmentfunction', False): + self.write('environment, ') + close += 1 + self.visit(argument, frame) + self.write(')' * close + ', ') + self.outdent() + self.writeline(')') + + if outdent_later: + self.outdent() + + def make_assignment_frame(self, frame): + # toplevel assignments however go into the local namespace and + # the current template's context. We create a copy of the frame + # here and add a set so that the Name visitor can add the assigned + # names here. + if not frame.toplevel: + return frame + assignment_frame = frame.copy() + assignment_frame.toplevel_assignments = set() + return assignment_frame + + def export_assigned_vars(self, frame, assignment_frame): + if not frame.toplevel: + return + public_names = [x for x in assignment_frame.toplevel_assignments + if not x.startswith('_')] + if len(assignment_frame.toplevel_assignments) == 1: + name = next(iter(assignment_frame.toplevel_assignments)) + self.writeline('context.vars[%r] = l_%s' % (name, name)) + else: + self.writeline('context.vars.update({') + for idx, name in enumerate(assignment_frame.toplevel_assignments): + if idx: + self.write(', ') + self.write('%r: l_%s' % (name, name)) + self.write('})') + if public_names: + if len(public_names) == 1: + self.writeline('context.exported_vars.add(%r)' % + public_names[0]) + else: + self.writeline('context.exported_vars.update((%s))' % + ', '.join(imap(repr, public_names))) + + def visit_Assign(self, node, frame): + self.newline(node) + assignment_frame = self.make_assignment_frame(frame) + self.visit(node.target, assignment_frame) + self.write(' = ') + self.visit(node.node, frame) + self.export_assigned_vars(frame, assignment_frame) + + def visit_AssignBlock(self, node, frame): + block_frame = frame.inner() + block_frame.inspect(node.body) + aliases = self.push_scope(block_frame) + self.pull_locals(block_frame) + self.buffer(block_frame) + self.blockvisit(node.body, block_frame) + self.pop_scope(aliases, block_frame) + + assignment_frame = self.make_assignment_frame(frame) + self.newline(node) + self.visit(node.target, assignment_frame) + self.write(' = concat(%s)' % block_frame.buffer) + self.export_assigned_vars(frame, assignment_frame) + + # -- Expression Visitors + + def visit_Name(self, node, frame): + if node.ctx == 'store' and frame.toplevel: + frame.toplevel_assignments.add(node.name) + self.write('l_' + node.name) + frame.assigned_names.add(node.name) + + def visit_Const(self, node, frame): + val = node.value + if isinstance(val, float): + self.write(str(val)) + else: + self.write(repr(val)) + + def visit_TemplateData(self, node, frame): + try: + self.write(repr(node.as_const(frame.eval_ctx))) + except nodes.Impossible: + self.write('(context.eval_ctx.autoescape and Markup or identity)(%r)' + % node.data) + + def visit_Tuple(self, node, frame): + self.write('(') + idx = -1 + for idx, item in enumerate(node.items): + if idx: + self.write(', ') + self.visit(item, frame) + self.write(idx == 0 and ',)' or ')') + + def visit_List(self, node, frame): + self.write('[') + for idx, item in enumerate(node.items): + if idx: + self.write(', ') + self.visit(item, frame) + self.write(']') + + def visit_Dict(self, node, frame): + self.write('{') + for idx, item in enumerate(node.items): + if idx: + self.write(', ') + self.visit(item.key, frame) + self.write(': ') + self.visit(item.value, frame) + self.write('}') + + def binop(operator, interceptable=True): + def visitor(self, node, frame): + if self.environment.sandboxed and \ + operator in self.environment.intercepted_binops: + self.write('environment.call_binop(context, %r, ' % operator) + self.visit(node.left, frame) + self.write(', ') + self.visit(node.right, frame) + else: + self.write('(') + self.visit(node.left, frame) + self.write(' %s ' % operator) + self.visit(node.right, frame) + self.write(')') + return visitor + + def uaop(operator, interceptable=True): + def visitor(self, node, frame): + if self.environment.sandboxed and \ + operator in self.environment.intercepted_unops: + self.write('environment.call_unop(context, %r, ' % operator) + self.visit(node.node, frame) + else: + self.write('(' + operator) + self.visit(node.node, frame) + self.write(')') + return visitor + + visit_Add = binop('+') + visit_Sub = binop('-') + visit_Mul = binop('*') + visit_Div = binop('/') + visit_FloorDiv = binop('//') + visit_Pow = binop('**') + visit_Mod = binop('%') + visit_And = binop('and', interceptable=False) + visit_Or = binop('or', interceptable=False) + visit_Pos = uaop('+') + visit_Neg = uaop('-') + visit_Not = uaop('not ', interceptable=False) + del binop, uaop + + def visit_Concat(self, node, frame): + if frame.eval_ctx.volatile: + func_name = '(context.eval_ctx.volatile and' \ + ' markup_join or unicode_join)' + elif frame.eval_ctx.autoescape: + func_name = 'markup_join' + else: + func_name = 'unicode_join' + self.write('%s((' % func_name) + for arg in node.nodes: + self.visit(arg, frame) + self.write(', ') + self.write('))') + + def visit_Compare(self, node, frame): + self.visit(node.expr, frame) + for op in node.ops: + self.visit(op, frame) + + def visit_Operand(self, node, frame): + self.write(' %s ' % operators[node.op]) + self.visit(node.expr, frame) + + def visit_Getattr(self, node, frame): + self.write('environment.getattr(') + self.visit(node.node, frame) + self.write(', %r)' % node.attr) + + def visit_Getitem(self, node, frame): + # slices bypass the environment getitem method. + if isinstance(node.arg, nodes.Slice): + self.visit(node.node, frame) + self.write('[') + self.visit(node.arg, frame) + self.write(']') + else: + self.write('environment.getitem(') + self.visit(node.node, frame) + self.write(', ') + self.visit(node.arg, frame) + self.write(')') + + def visit_Slice(self, node, frame): + if node.start is not None: + self.visit(node.start, frame) + self.write(':') + if node.stop is not None: + self.visit(node.stop, frame) + if node.step is not None: + self.write(':') + self.visit(node.step, frame) + + def visit_Filter(self, node, frame): + self.write(self.filters[node.name] + '(') + func = self.environment.filters.get(node.name) + if func is None: + self.fail('no filter named %r' % node.name, node.lineno) + if getattr(func, 'contextfilter', False): + self.write('context, ') + elif getattr(func, 'evalcontextfilter', False): + self.write('context.eval_ctx, ') + elif getattr(func, 'environmentfilter', False): + self.write('environment, ') + + # if the filter node is None we are inside a filter block + # and want to write to the current buffer + if node.node is not None: + self.visit(node.node, frame) + elif frame.eval_ctx.volatile: + self.write('(context.eval_ctx.autoescape and' + ' Markup(concat(%s)) or concat(%s))' % + (frame.buffer, frame.buffer)) + elif frame.eval_ctx.autoescape: + self.write('Markup(concat(%s))' % frame.buffer) + else: + self.write('concat(%s)' % frame.buffer) + self.signature(node, frame) + self.write(')') + + def visit_Test(self, node, frame): + self.write(self.tests[node.name] + '(') + if node.name not in self.environment.tests: + self.fail('no test named %r' % node.name, node.lineno) + self.visit(node.node, frame) + self.signature(node, frame) + self.write(')') + + def visit_CondExpr(self, node, frame): + def write_expr2(): + if node.expr2 is not None: + return self.visit(node.expr2, frame) + self.write('environment.undefined(%r)' % ('the inline if-' + 'expression on %s evaluated to false and ' + 'no else section was defined.' % self.position(node))) + + self.write('(') + self.visit(node.expr1, frame) + self.write(' if ') + self.visit(node.test, frame) + self.write(' else ') + write_expr2() + self.write(')') + + def visit_Call(self, node, frame, forward_caller=False): + if self.environment.sandboxed: + self.write('environment.call(context, ') + else: + self.write('context.call(') + self.visit(node.node, frame) + extra_kwargs = forward_caller and {'caller': 'caller'} or None + self.signature(node, frame, extra_kwargs) + self.write(')') + + def visit_Keyword(self, node, frame): + self.write(node.key + '=') + self.visit(node.value, frame) + + # -- Unused nodes for extensions + + def visit_MarkSafe(self, node, frame): + self.write('Markup(') + self.visit(node.expr, frame) + self.write(')') + + def visit_MarkSafeIfAutoescape(self, node, frame): + self.write('(context.eval_ctx.autoescape and Markup or identity)(') + self.visit(node.expr, frame) + self.write(')') + + def visit_EnvironmentAttribute(self, node, frame): + self.write('environment.' + node.name) + + def visit_ExtensionAttribute(self, node, frame): + self.write('environment.extensions[%r].%s' % (node.identifier, node.name)) + + def visit_ImportedName(self, node, frame): + self.write(self.import_aliases[node.importname]) + + def visit_InternalName(self, node, frame): + self.write(node.name) + + def visit_ContextReference(self, node, frame): + self.write('context') + + def visit_Continue(self, node, frame): + self.writeline('continue', node) + + def visit_Break(self, node, frame): + self.writeline('break', node) + + def visit_Scope(self, node, frame): + scope_frame = frame.inner() + scope_frame.inspect(node.iter_child_nodes()) + aliases = self.push_scope(scope_frame) + self.pull_locals(scope_frame) + self.blockvisit(node.body, scope_frame) + self.pop_scope(aliases, scope_frame) + + def visit_EvalContextModifier(self, node, frame): + for keyword in node.options: + self.writeline('context.eval_ctx.%s = ' % keyword.key) + self.visit(keyword.value, frame) + try: + val = keyword.value.as_const(frame.eval_ctx) + except nodes.Impossible: + frame.eval_ctx.volatile = True + else: + setattr(frame.eval_ctx, keyword.key, val) + + def visit_ScopedEvalContextModifier(self, node, frame): + old_ctx_name = self.temporary_identifier() + safed_ctx = frame.eval_ctx.save() + self.writeline('%s = context.eval_ctx.save()' % old_ctx_name) + self.visit_EvalContextModifier(node, frame) + for child in node.body: + self.visit(child, frame) + frame.eval_ctx.revert(safed_ctx) + self.writeline('context.eval_ctx.revert(%s)' % old_ctx_name) diff --git a/package/bin/da_ess_contentupdate/jinja2/constants.py b/package/bin/da_ess_contentupdate/jinja2/constants.py new file mode 100755 index 0000000000..cab203cc77 --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/constants.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +""" + jinja.constants + ~~~~~~~~~~~~~~~ + + Various constants. + + :copyright: (c) 2010 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" + + +#: list of lorem ipsum words used by the lipsum() helper function +LOREM_IPSUM_WORDS = u'''\ +a ac accumsan ad adipiscing aenean aliquam aliquet amet ante aptent arcu at +auctor augue bibendum blandit class commodo condimentum congue consectetuer +consequat conubia convallis cras cubilia cum curabitur curae cursus dapibus +diam dictum dictumst dignissim dis dolor donec dui duis egestas eget eleifend +elementum elit enim erat eros est et etiam eu euismod facilisi facilisis fames +faucibus felis fermentum feugiat fringilla fusce gravida habitant habitasse hac +hendrerit hymenaeos iaculis id imperdiet in inceptos integer interdum ipsum +justo lacinia lacus laoreet lectus leo libero ligula litora lobortis lorem +luctus maecenas magna magnis malesuada massa mattis mauris metus mi molestie +mollis montes morbi mus nam nascetur natoque nec neque netus nibh nisi nisl non +nonummy nostra nulla nullam nunc odio orci ornare parturient pede pellentesque +penatibus per pharetra phasellus placerat platea porta porttitor posuere +potenti praesent pretium primis proin pulvinar purus quam quis quisque rhoncus +ridiculus risus rutrum sagittis sapien scelerisque sed sem semper senectus sit +sociis sociosqu sodales sollicitudin suscipit suspendisse taciti tellus tempor +tempus tincidunt torquent tortor tristique turpis ullamcorper ultrices +ultricies urna ut varius vehicula vel velit venenatis vestibulum vitae vivamus +viverra volutpat vulputate''' diff --git a/package/bin/da_ess_contentupdate/jinja2/debug.py b/package/bin/da_ess_contentupdate/jinja2/debug.py new file mode 100755 index 0000000000..3252748369 --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/debug.py @@ -0,0 +1,350 @@ +# -*- coding: utf-8 -*- +""" + jinja2.debug + ~~~~~~~~~~~~ + + Implements the debug interface for Jinja. This module does some pretty + ugly stuff with the Python traceback system in order to achieve tracebacks + with correct line numbers, locals and contents. + + :copyright: (c) 2010 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +import sys +import traceback +from types import TracebackType, CodeType +from jinja2.utils import missing, internal_code +from jinja2.exceptions import TemplateSyntaxError +from jinja2._compat import iteritems, reraise, PY2 + +# on pypy we can take advantage of transparent proxies +try: + from __pypy__ import tproxy +except ImportError: + tproxy = None + + +# how does the raise helper look like? +try: + exec("raise TypeError, 'foo'") +except SyntaxError: + raise_helper = 'raise __jinja_exception__[1]' +except TypeError: + raise_helper = 'raise __jinja_exception__[0], __jinja_exception__[1]' + + +class TracebackFrameProxy(object): + """Proxies a traceback frame.""" + + def __init__(self, tb): + self.tb = tb + self._tb_next = None + + @property + def tb_next(self): + return self._tb_next + + def set_next(self, next): + if tb_set_next is not None: + try: + tb_set_next(self.tb, next and next.tb or None) + except Exception: + # this function can fail due to all the hackery it does + # on various python implementations. We just catch errors + # down and ignore them if necessary. + pass + self._tb_next = next + + @property + def is_jinja_frame(self): + return '__jinja_template__' in self.tb.tb_frame.f_globals + + def __getattr__(self, name): + return getattr(self.tb, name) + + +def make_frame_proxy(frame): + proxy = TracebackFrameProxy(frame) + if tproxy is None: + return proxy + def operation_handler(operation, *args, **kwargs): + if operation in ('__getattribute__', '__getattr__'): + return getattr(proxy, args[0]) + elif operation == '__setattr__': + proxy.__setattr__(*args, **kwargs) + else: + return getattr(proxy, operation)(*args, **kwargs) + return tproxy(TracebackType, operation_handler) + + +class ProcessedTraceback(object): + """Holds a Jinja preprocessed traceback for printing or reraising.""" + + def __init__(self, exc_type, exc_value, frames): + assert frames, 'no frames for this traceback?' + self.exc_type = exc_type + self.exc_value = exc_value + self.frames = frames + + # newly concatenate the frames (which are proxies) + prev_tb = None + for tb in self.frames: + if prev_tb is not None: + prev_tb.set_next(tb) + prev_tb = tb + prev_tb.set_next(None) + + def render_as_text(self, limit=None): + """Return a string with the traceback.""" + lines = traceback.format_exception(self.exc_type, self.exc_value, + self.frames[0], limit=limit) + return ''.join(lines).rstrip() + + def render_as_html(self, full=False): + """Return a unicode string with the traceback as rendered HTML.""" + from jinja2.debugrenderer import render_traceback + return u'%s\n\n' % ( + render_traceback(self, full=full), + self.render_as_text().decode('utf-8', 'replace') + ) + + @property + def is_template_syntax_error(self): + """`True` if this is a template syntax error.""" + return isinstance(self.exc_value, TemplateSyntaxError) + + @property + def exc_info(self): + """Exception info tuple with a proxy around the frame objects.""" + return self.exc_type, self.exc_value, self.frames[0] + + @property + def standard_exc_info(self): + """Standard python exc_info for re-raising""" + tb = self.frames[0] + # the frame will be an actual traceback (or transparent proxy) if + # we are on pypy or a python implementation with support for tproxy + if type(tb) is not TracebackType: + tb = tb.tb + return self.exc_type, self.exc_value, tb + + +def make_traceback(exc_info, source_hint=None): + """Creates a processed traceback object from the exc_info.""" + exc_type, exc_value, tb = exc_info + if isinstance(exc_value, TemplateSyntaxError): + exc_info = translate_syntax_error(exc_value, source_hint) + initial_skip = 0 + else: + initial_skip = 1 + return translate_exception(exc_info, initial_skip) + + +def translate_syntax_error(error, source=None): + """Rewrites a syntax error to please traceback systems.""" + error.source = source + error.translated = True + exc_info = (error.__class__, error, None) + filename = error.filename + if filename is None: + filename = '' + return fake_exc_info(exc_info, filename, error.lineno) + + +def translate_exception(exc_info, initial_skip=0): + """If passed an exc_info it will automatically rewrite the exceptions + all the way down to the correct line numbers and frames. + """ + tb = exc_info[2] + frames = [] + + # skip some internal frames if wanted + for x in range(initial_skip): + if tb is not None: + tb = tb.tb_next + initial_tb = tb + + while tb is not None: + # skip frames decorated with @internalcode. These are internal + # calls we can't avoid and that are useless in template debugging + # output. + if tb.tb_frame.f_code in internal_code: + tb = tb.tb_next + continue + + # save a reference to the next frame if we override the current + # one with a faked one. + next = tb.tb_next + + # fake template exceptions + template = tb.tb_frame.f_globals.get('__jinja_template__') + if template is not None: + lineno = template.get_corresponding_lineno(tb.tb_lineno) + tb = fake_exc_info(exc_info[:2] + (tb,), template.filename, + lineno)[2] + + frames.append(make_frame_proxy(tb)) + tb = next + + # if we don't have any exceptions in the frames left, we have to + # reraise it unchanged. + # XXX: can we backup here? when could this happen? + if not frames: + reraise(exc_info[0], exc_info[1], exc_info[2]) + + return ProcessedTraceback(exc_info[0], exc_info[1], frames) + + +def fake_exc_info(exc_info, filename, lineno): + """Helper for `translate_exception`.""" + exc_type, exc_value, tb = exc_info + + # figure the real context out + if tb is not None: + real_locals = tb.tb_frame.f_locals.copy() + ctx = real_locals.get('context') + if ctx: + locals = ctx.get_all() + else: + locals = {} + for name, value in iteritems(real_locals): + if name.startswith('l_') and value is not missing: + locals[name[2:]] = value + + # if there is a local called __jinja_exception__, we get + # rid of it to not break the debug functionality. + locals.pop('__jinja_exception__', None) + else: + locals = {} + + # assamble fake globals we need + globals = { + '__name__': filename, + '__file__': filename, + '__jinja_exception__': exc_info[:2], + + # we don't want to keep the reference to the template around + # to not cause circular dependencies, but we mark it as Jinja + # frame for the ProcessedTraceback + '__jinja_template__': None + } + + # and fake the exception + code = compile('\n' * (lineno - 1) + raise_helper, filename, 'exec') + + # if it's possible, change the name of the code. This won't work + # on some python environments such as google appengine + try: + if tb is None: + location = 'template' + else: + function = tb.tb_frame.f_code.co_name + if function == 'root': + location = 'top-level template code' + elif function.startswith('block_'): + location = 'block "%s"' % function[6:] + else: + location = 'template' + + if PY2: + code = CodeType(0, code.co_nlocals, code.co_stacksize, + code.co_flags, code.co_code, code.co_consts, + code.co_names, code.co_varnames, filename, + location, code.co_firstlineno, + code.co_lnotab, (), ()) + else: + code = CodeType(0, code.co_kwonlyargcount, + code.co_nlocals, code.co_stacksize, + code.co_flags, code.co_code, code.co_consts, + code.co_names, code.co_varnames, filename, + location, code.co_firstlineno, + code.co_lnotab, (), ()) + except Exception as e: + pass + + # execute the code and catch the new traceback + try: + exec(code, globals, locals) + except: + exc_info = sys.exc_info() + new_tb = exc_info[2].tb_next + + # return without this frame + return exc_info[:2] + (new_tb,) + + +def _init_ugly_crap(): + """This function implements a few ugly things so that we can patch the + traceback objects. The function returned allows resetting `tb_next` on + any python traceback object. Do not attempt to use this on non cpython + interpreters + """ + import ctypes + from types import TracebackType + + if PY2: + # figure out size of _Py_ssize_t for Python 2: + if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'): + _Py_ssize_t = ctypes.c_int64 + else: + _Py_ssize_t = ctypes.c_int + else: + # platform ssize_t on Python 3 + _Py_ssize_t = ctypes.c_ssize_t + + # regular python + class _PyObject(ctypes.Structure): + pass + _PyObject._fields_ = [ + ('ob_refcnt', _Py_ssize_t), + ('ob_type', ctypes.POINTER(_PyObject)) + ] + + # python with trace + if hasattr(sys, 'getobjects'): + class _PyObject(ctypes.Structure): + pass + _PyObject._fields_ = [ + ('_ob_next', ctypes.POINTER(_PyObject)), + ('_ob_prev', ctypes.POINTER(_PyObject)), + ('ob_refcnt', _Py_ssize_t), + ('ob_type', ctypes.POINTER(_PyObject)) + ] + + class _Traceback(_PyObject): + pass + _Traceback._fields_ = [ + ('tb_next', ctypes.POINTER(_Traceback)), + ('tb_frame', ctypes.POINTER(_PyObject)), + ('tb_lasti', ctypes.c_int), + ('tb_lineno', ctypes.c_int) + ] + + def tb_set_next(tb, next): + """Set the tb_next attribute of a traceback object.""" + if not (isinstance(tb, TracebackType) and + (next is None or isinstance(next, TracebackType))): + raise TypeError('tb_set_next arguments must be traceback objects') + obj = _Traceback.from_address(id(tb)) + if tb.tb_next is not None: + old = _Traceback.from_address(id(tb.tb_next)) + old.ob_refcnt -= 1 + if next is None: + obj.tb_next = ctypes.POINTER(_Traceback)() + else: + next = _Traceback.from_address(id(next)) + next.ob_refcnt += 1 + obj.tb_next = ctypes.pointer(next) + + return tb_set_next + + +# try to get a tb_set_next implementation if we don't have transparent +# proxies. +tb_set_next = None +if tproxy is None: + try: + tb_set_next = _init_ugly_crap() + except: + pass + del _init_ugly_crap diff --git a/package/bin/da_ess_contentupdate/jinja2/defaults.py b/package/bin/da_ess_contentupdate/jinja2/defaults.py new file mode 100755 index 0000000000..3717a7223f --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/defaults.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +""" + jinja2.defaults + ~~~~~~~~~~~~~~~ + + Jinja default filters and tags. + + :copyright: (c) 2010 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +from jinja2._compat import range_type +from jinja2.utils import generate_lorem_ipsum, Cycler, Joiner + + +# defaults for the parser / lexer +BLOCK_START_STRING = '{%' +BLOCK_END_STRING = '%}' +VARIABLE_START_STRING = '{{' +VARIABLE_END_STRING = '}}' +COMMENT_START_STRING = '{#' +COMMENT_END_STRING = '#}' +LINE_STATEMENT_PREFIX = None +LINE_COMMENT_PREFIX = None +TRIM_BLOCKS = False +LSTRIP_BLOCKS = False +NEWLINE_SEQUENCE = '\n' +KEEP_TRAILING_NEWLINE = False + + +# default filters, tests and namespace +from jinja2.filters import FILTERS as DEFAULT_FILTERS +from jinja2.tests import TESTS as DEFAULT_TESTS +DEFAULT_NAMESPACE = { + 'range': range_type, + 'dict': dict, + 'lipsum': generate_lorem_ipsum, + 'cycler': Cycler, + 'joiner': Joiner +} + + +# export all constants +__all__ = tuple(x for x in locals().keys() if x.isupper()) diff --git a/package/bin/da_ess_contentupdate/jinja2/environment.py b/package/bin/da_ess_contentupdate/jinja2/environment.py new file mode 100755 index 0000000000..8b2572bb8c --- /dev/null +++ b/package/bin/da_ess_contentupdate/jinja2/environment.py @@ -0,0 +1,1213 @@ +# -*- coding: utf-8 -*- +""" + jinja2.environment + ~~~~~~~~~~~~~~~~~~ + + Provides a class that holds runtime and parsing time options. + + :copyright: (c) 2010 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +import os +import sys +from jinja2 import nodes +from jinja2.defaults import BLOCK_START_STRING, \ + BLOCK_END_STRING, VARIABLE_START_STRING, VARIABLE_END_STRING, \ + COMMENT_START_STRING, COMMENT_END_STRING, LINE_STATEMENT_PREFIX, \ + LINE_COMMENT_PREFIX, TRIM_BLOCKS, NEWLINE_SEQUENCE, \ + DEFAULT_FILTERS, DEFAULT_TESTS, DEFAULT_NAMESPACE, \ + KEEP_TRAILING_NEWLINE, LSTRIP_BLOCKS +from jinja2.lexer import get_lexer, TokenStream +from jinja2.parser import Parser +from jinja2.nodes import EvalContext +from jinja2.optimizer import optimize +from jinja2.compiler import generate, CodeGenerator +from jinja2.runtime import Undefined, new_context, Context +from jinja2.exceptions import TemplateSyntaxError, TemplateNotFound, \ + TemplatesNotFound, TemplateRuntimeError +from jinja2.utils import import_string, LRUCache, Markup, missing, \ + concat, consume, internalcode +from jinja2._compat import imap, ifilter, string_types, iteritems, \ + text_type, reraise, implements_iterator, implements_to_string, \ + get_next, encode_filename, PY2, PYPY +from functools import reduce + + +# for direct template usage we have up to ten living environments +_spontaneous_environments = LRUCache(10) + +# the function to create jinja traceback objects. This is dynamically +# imported on the first exception in the exception handler. +_make_traceback = None + + +def get_spontaneous_environment(*args): + """Return a new spontaneous environment. A spontaneous environment is an + unnamed and unaccessible (in theory) environment that is used for + templates generated from a string and not from the file system. + """ + try: + env = _spontaneous_environments.get(args) + except TypeError: + return Environment(*args) + if env is not None: + return env + _spontaneous_environments[args] = env = Environment(*args) + env.shared = True + return env + + +def create_cache(size): + """Return the cache class for the given size.""" + if size == 0: + return None + if size < 0: + return {} + return LRUCache(size) + + +def copy_cache(cache): + """Create an empty copy of the given cache.""" + if cache is None: + return None + elif type(cache) is dict: + return {} + return LRUCache(cache.capacity) + + +def load_extensions(environment, extensions): + """Load the extensions from the list and bind it to the environment. + Returns a dict of instantiated environments. + """ + result = {} + for extension in extensions: + if isinstance(extension, string_types): + extension = import_string(extension) + result[extension.identifier] = extension(environment) + return result + + +def _environment_sanity_check(environment): + """Perform a sanity check on the environment.""" + assert issubclass(environment.undefined, Undefined), 'undefined must ' \ + 'be a subclass of undefined because filters depend on it.' + assert environment.block_start_string != \ + environment.variable_start_string != \ + environment.comment_start_string, 'block, variable and comment ' \ + 'start strings must be different' + assert environment.newline_sequence in ('\r', '\r\n', '\n'), \ + 'newline_sequence set to unknown line ending string.' + return environment + + +class Environment(object): + r"""The core component of Jinja is the `Environment`. It contains + important shared variables like configuration, filters, tests, + globals and others. Instances of this class may be modified if + they are not shared and if no template was loaded so far. + Modifications on environments after the first template was loaded + will lead to surprising effects and undefined behavior. + + Here are the possible initialization parameters: + + `block_start_string` + The string marking the beginning of a block. Defaults to ``'{%'``. + + `block_end_string` + The string marking the end of a block. Defaults to ``'%}'``. + + `variable_start_string` + The string marking the beginning of a print statement. + Defaults to ``'{{'``. + + `variable_end_string` + The string marking the end of a print statement. Defaults to + ``'}}'``. + + `comment_start_string` + The string marking the beginning of a comment. Defaults to ``'{#'``. + + `comment_end_string` + The string marking the end of a comment. Defaults to ``'#}'``. + + `line_statement_prefix` + If given and a string, this will be used as prefix for line based + statements. See also :ref:`line-statements`. + + `line_comment_prefix` + If given and a string, this will be used as prefix for line based + comments. See also :ref:`line-statements`. + + .. versionadded:: 2.2 + + `trim_blocks` + If this is set to ``True`` the first newline after a block is + removed (block, not variable tag!). Defaults to `False`. + + `lstrip_blocks` + If this is set to ``True`` leading spaces and tabs are stripped + from the start of a line to a block. Defaults to `False`. + + `newline_sequence` + The sequence that starts a newline. Must be one of ``'\r'``, + ``'\n'`` or ``'\r\n'``. The default is ``'\n'`` which is a + useful default for Linux and OS X systems as well as web + applications. + + `keep_trailing_newline` + Preserve the trailing newline when rendering templates. + The default is ``False``, which causes a single newline, + if present, to be stripped from the end of the template. + + .. versionadded:: 2.7 + + `extensions` + List of Jinja extensions to use. This can either be import paths + as strings or extension classes. For more information have a + look at :ref:`the extensions documentation `. + + `optimized` + should the optimizer be enabled? Default is `True`. + + `undefined` + :class:`Undefined` or a subclass of it that is used to represent + undefined values in the template. + + `finalize` + A callable that can be used to process the result of a variable + expression before it is output. For example one can convert + `None` implicitly into an empty string here. + + `autoescape` + If set to true the XML/HTML autoescaping feature is enabled by + default. For more details about autoescaping see + :class:`~jinja2.utils.Markup`. As of Jinja 2.4 this can also + be a callable that is passed the template name and has to + return `True` or `False` depending on autoescape should be + enabled by default. + + .. versionchanged:: 2.4 + `autoescape` can now be a function + + `loader` + The template loader for this environment. + + `cache_size` + The size of the cache. Per default this is ``400`` which means + that if more than 400 templates are loaded the loader will clean + out the least recently used template. If the cache size is set to + ``0`` templates are recompiled all the time, if the cache size is + ``-1`` the cache will not be cleaned. + + .. versionchanged:: 2.8 + The cache size was increased to 400 from a low 50. + + `auto_reload` + Some loaders load templates from locations where the template + sources may change (ie: file system or database). If + `auto_reload` is set to `True` (default) every time a template is + requested the loader checks if the source changed and if yes, it + will reload the template. For higher performance it's possible to + disable that. + + `bytecode_cache` + If set to a bytecode cache object, this object will provide a + cache for the internal Jinja bytecode so that templates don't + have to be parsed if they were not changed. + + See :ref:`bytecode-cache` for more information. + """ + + #: if this environment is sandboxed. Modifying this variable won't make + #: the environment sandboxed though. For a real sandboxed environment + #: have a look at jinja2.sandbox. This flag alone controls the code + #: generation by the compiler. + sandboxed = False + + #: True if the environment is just an overlay + overlayed = False + + #: the environment this environment is linked to if it is an overlay + linked_to = None + + #: shared environments have this set to `True`. A shared environment + #: must not be modified + shared = False + + #: these are currently EXPERIMENTAL undocumented features. + exception_handler = None + exception_formatter = None + + #: the class that is used for code generation. See + #: :class:`~jinja2.compiler.CodeGenerator` for more information. + code_generator_class = CodeGenerator + + #: the context class thatis used for templates. See + #: :class:`~jinja2.runtime.Context` for more information. + context_class = Context + + def __init__(self, + block_start_string=BLOCK_START_STRING, + block_end_string=BLOCK_END_STRING, + variable_start_string=VARIABLE_START_STRING, + variable_end_string=VARIABLE_END_STRING, + comment_start_string=COMMENT_START_STRING, + comment_end_string=COMMENT_END_STRING, + line_statement_prefix=LINE_STATEMENT_PREFIX, + line_comment_prefix=LINE_COMMENT_PREFIX, + trim_blocks=TRIM_BLOCKS, + lstrip_blocks=LSTRIP_BLOCKS, + newline_sequence=NEWLINE_SEQUENCE, + keep_trailing_newline=KEEP_TRAILING_NEWLINE, + extensions=(), + optimized=True, + undefined=Undefined, + finalize=None, + autoescape=False, + loader=None, + cache_size=400, + auto_reload=True, + bytecode_cache=None): + # !!Important notice!! + # The constructor accepts quite a few arguments that should be + # passed by keyword rather than position. However it's important to + # not change the order of arguments because it's used at least + # internally in those cases: + # - spontaneous environments (i18n extension and Template) + # - unittests + # If parameter changes are required only add parameters at the end + # and don't change the arguments (or the defaults!) of the arguments + # existing already. + + # lexer / parser information + self.block_start_string = block_start_string + self.block_end_string = block_end_string + self.variable_start_string = variable_start_string + self.variable_end_string = variable_end_string + self.comment_start_string = comment_start_string + self.comment_end_string = comment_end_string + self.line_statement_prefix = line_statement_prefix + self.line_comment_prefix = line_comment_prefix + self.trim_blocks = trim_blocks + self.lstrip_blocks = lstrip_blocks + self.newline_sequence = newline_sequence + self.keep_trailing_newline = keep_trailing_newline + + # runtime information + self.undefined = undefined + self.optimized = optimized + self.finalize = finalize + self.autoescape = autoescape + + # defaults + self.filters = DEFAULT_FILTERS.copy() + self.tests = DEFAULT_TESTS.copy() + self.globals = DEFAULT_NAMESPACE.copy() + + # set the loader provided + self.loader = loader + self.cache = create_cache(cache_size) + self.bytecode_cache = bytecode_cache + self.auto_reload = auto_reload + + # load extensions + self.extensions = load_extensions(self, extensions) + + _environment_sanity_check(self) + + def add_extension(self, extension): + """Adds an extension after the environment was created. + + .. versionadded:: 2.5 + """ + self.extensions.update(load_extensions(self, [extension])) + + def extend(self, **attributes): + """Add the items to the instance of the environment if they do not exist + yet. This is used by :ref:`extensions ` to register + callbacks and configuration values without breaking inheritance. + """ + for key, value in iteritems(attributes): + if not hasattr(self, key): + setattr(self, key, value) + + def overlay(self, block_start_string=missing, block_end_string=missing, + variable_start_string=missing, variable_end_string=missing, + comment_start_string=missing, comment_end_string=missing, + line_statement_prefix=missing, line_comment_prefix=missing, + trim_blocks=missing, lstrip_blocks=missing, + extensions=missing, optimized=missing, + undefined=missing, finalize=missing, autoescape=missing, + loader=missing, cache_size=missing, auto_reload=missing, + bytecode_cache=missing): + """Create a new overlay environment that shares all the data with the + current environment except for cache and the overridden attributes. + Extensions cannot be removed for an overlayed environment. An overlayed + environment automatically gets all the extensions of the environment it + is linked to plus optional extra extensions. + + Creating overlays should happen after the initial environment was set + up completely. Not all attributes are truly linked, some are just + copied over so modifications on the original environment may not shine + through. + """ + args = dict(locals()) + del args['self'], args['cache_size'], args['extensions'] + + rv = object.__new__(self.__class__) + rv.__dict__.update(self.__dict__) + rv.overlayed = True + rv.linked_to = self + + for key, value in iteritems(args): + if value is not missing: + setattr(rv, key, value) + + if cache_size is not missing: + rv.cache = create_cache(cache_size) + else: + rv.cache = copy_cache(self.cache) + + rv.extensions = {} + for key, value in iteritems(self.extensions): + rv.extensions[key] = value.bind(rv) + if extensions is not missing: + rv.extensions.update(load_extensions(rv, extensions)) + + return _environment_sanity_check(rv) + + lexer = property(get_lexer, doc="The lexer for this environment.") + + def iter_extensions(self): + """Iterates over the extensions by priority.""" + return iter(sorted(self.extensions.values(), + key=lambda x: x.priority)) + + def getitem(self, obj, argument): + """Get an item or attribute of an object but prefer the item.""" + try: + return obj[argument] + except (TypeError, LookupError): + if isinstance(argument, string_types): + try: + attr = str(argument) + except Exception: + pass + else: + try: + return getattr(obj, attr) + except AttributeError: + pass + return self.undefined(obj=obj, name=argument) + + def getattr(self, obj, attribute): + """Get an item or attribute of an object but prefer the attribute. + Unlike :meth:`getitem` the attribute *must* be a bytestring. + """ + try: + return getattr(obj, attribute) + except AttributeError: + pass + try: + return obj[attribute] + except (TypeError, LookupError, AttributeError): + return self.undefined(obj=obj, name=attribute) + + def call_filter(self, name, value, args=None, kwargs=None, + context=None, eval_ctx=None): + """Invokes a filter on a value the same way the compiler does it. + + .. versionadded:: 2.7 + """ + func = self.filters.get(name) + if func is None: + raise TemplateRuntimeError('no filter named %r' % name) + args = [value] + list(args or ()) + if getattr(func, 'contextfilter', False): + if context is None: + raise TemplateRuntimeError('Attempted to invoke context ' + 'filter without context') + args.insert(0, context) + elif getattr(func, 'evalcontextfilter', False): + if eval_ctx is None: + if context is not None: + eval_ctx = context.eval_ctx + else: + eval_ctx = EvalContext(self) + args.insert(0, eval_ctx) + elif getattr(func, 'environmentfilter', False): + args.insert(0, self) + return func(*args, **(kwargs or {})) + + def call_test(self, name, value, args=None, kwargs=None): + """Invokes a test on a value the same way the compiler does it. + + .. versionadded:: 2.7 + """ + func = self.tests.get(name) + if func is None: + raise TemplateRuntimeError('no test named %r' % name) + return func(value, *(args or ()), **(kwargs or {})) + + @internalcode + def parse(self, source, name=None, filename=None): + """Parse the sourcecode and return the abstract syntax tree. This + tree of nodes is used by the compiler to convert the template into + executable source- or bytecode. This is useful for debugging or to + extract information from templates. + + If you are :ref:`developing Jinja2 extensions ` + this gives you a good overview of the node tree generated. + """ + try: + return self._parse(source, name, filename) + except TemplateSyntaxError: + exc_info = sys.exc_info() + self.handle_exception(exc_info, source_hint=source) + + def _parse(self, source, name, filename): + """Internal parsing function used by `parse` and `compile`.""" + return Parser(self, source, name, encode_filename(filename)).parse() + + def lex(self, source, name=None, filename=None): + """Lex the given sourcecode and return a generator that yields + tokens as tuples in the form ``(lineno, token_type, value)``. + This can be useful for :ref:`extension development ` + and debugging templates. + + This does not perform preprocessing. If you want the preprocessing + of the extensions to be applied you have to filter source through + the :meth:`preprocess` method. + """ + source = text_type(source) + try: + return self.lexer.tokeniter(source, name, filename) + except TemplateSyntaxError: + exc_info = sys.exc_info() + self.handle_exception(exc_info, source_hint=source) + + def preprocess(self, source, name=None, filename=None): + """Preprocesses the source with all extensions. This is automatically + called for all parsing and compiling methods but *not* for :meth:`lex` + because there you usually only want the actual source tokenized. + """ + return reduce(lambda s, e: e.preprocess(s, name, filename), + self.iter_extensions(), text_type(source)) + + def _tokenize(self, source, name, filename=None, state=None): + """Called by the parser to do the preprocessing and filtering + for all the extensions. Returns a :class:`~jinja2.lexer.TokenStream`. + """ + source = self.preprocess(source, name, filename) + stream = self.lexer.tokenize(source, name, filename, state) + for ext in self.iter_extensions(): + stream = ext.filter_stream(stream) + if not isinstance(stream, TokenStream): + stream = TokenStream(stream, name, filename) + return stream + + def _generate(self, source, name, filename, defer_init=False): + """Internal hook that can be overridden to hook a different generate + method in. + + .. versionadded:: 2.5 + """ + return generate(source, self, name, filename, defer_init=defer_init) + + def _compile(self, source, filename): + """Internal hook that can be overridden to hook a different compile + method in. + + .. versionadded:: 2.5 + """ + return compile(source, filename, 'exec') + + @internalcode + def compile(self, source, name=None, filename=None, raw=False, + defer_init=False): + """Compile a node or template source code. The `name` parameter is + the load name of the template after it was joined using + :meth:`join_path` if necessary, not the filename on the file system. + the `filename` parameter is the estimated filename of the template on + the file system. If the template came from a database or memory this + can be omitted. + + The return value of this method is a python code object. If the `raw` + parameter is `True` the return value will be a string with python + code equivalent to the bytecode returned otherwise. This method is + mainly used internally. + + `defer_init` is use internally to aid the module code generator. This + causes the generated code to be able to import without the global + environment variable to be set. + + .. versionadded:: 2.4 + `defer_init` parameter added. + """ + source_hint = None + try: + if isinstance(source, string_types): + source_hint = source + source = self._parse(source, name, filename) + if self.optimized: + source = optimize(source, self) + source = self._generate(source, name, filename, + defer_init=defer_init) + if raw: + return source + if filename is None: + filename = '

    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 aFa8`e6_KTs+N%QNae#1WFLSrUrT+sJm4WL3 literal 0 HcmV?d00001 diff --git a/package/appserver/static/img/escu/Slide2.PNG b/package/appserver/static/img/escu/Slide2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7f33c545ca64fdaf82e67ca8ddb19146ed71a738 GIT binary patch literal 75290 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 w8GGMKl8riUyjH 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 YKm9k)9q{L)mUtrFDXvD0xK(8{- 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 literal 0 HcmV?d00001 diff --git a/package/appserver/static/img/escu/Slide4.PNG b/package/appserver/static/img/escu/Slide4.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5780daa26e4a5f778eeb47eae286bbf45da81c08 GIT binary patch literal 188906 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≥Y|w zOuH6N((ccLEfwpnH;nhAr*mF2B40ydKvAKA2#?=f`bBc#$xm#+&;LeT6K)uOGq}n_ zlU$4cE#KVUJsf2KXG9zJ(%Q5OS+XS+Am6+I(sX}gMHh4k7XvkcRJZfk?sI2}bJsaW z^Gprs*BFMJ)qPfd>_jtW>Gs=cYHIYWfOcL+3%lNfV+dyIOH>yw_pc$%8f4C$l$p(1 z;4G$TB($_@^lHB^ufn5a=ox4!e}GJCnOW*~D-+Z4Y7^yXJq)B74cNM;P0yS{gQ%L7s}N6XjANe90?by;AWzpX*_an!cel zYsy$K*U^NfTDQbZLfAPHW)V4XPzjL4>@>r;d_k0>i;RiVXAVESpE%ZA?eJ*``@$Q7 zgP!~`Ee<6jH@5D%3U`2!18eAD@ZPS+vc5th^KQ$^gx;_!ujsUHd&Zd^9b(Ejx( zZTA%{T>J$Nz9zp_@JLRf>HZLT;n1Kl*&ezi*@tR{Ej9On-o+C2PWdgo4FtrenSC`4 zuq*BA48SboK+bzlb{_g4#($v`XHcLx%qVUZlF*l>HuL)){QF5~!3k|80^L6XQ?qF# z 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 z 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