jaclang 0.7.34__py3-none-any.whl → 0.8.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of jaclang might be problematic. Click here for more details.

Files changed (1503) hide show
  1. jaclang/__init__.py +7 -414
  2. jaclang/cli/cli.md +5 -5
  3. jaclang/cli/cli.py +316 -217
  4. jaclang/cli/cmdreg.py +188 -31
  5. jaclang/compiler/__init__.py +10 -15
  6. jaclang/compiler/{codeloc.py → codeinfo.py} +11 -30
  7. jaclang/compiler/constant.py +10 -33
  8. jaclang/compiler/jac.lark +65 -106
  9. jaclang/compiler/larkparse/jac_parser.py +3444 -0
  10. jaclang/compiler/parser.py +1137 -1517
  11. jaclang/compiler/passes/__init__.py +2 -2
  12. jaclang/compiler/passes/main/__init__.py +33 -14
  13. jaclang/compiler/passes/main/annex_pass.py +85 -0
  14. jaclang/compiler/passes/main/cfg_build_pass.py +275 -0
  15. jaclang/compiler/passes/main/def_impl_match_pass.py +159 -114
  16. jaclang/compiler/passes/main/def_use_pass.py +66 -274
  17. jaclang/compiler/passes/main/import_pass.py +178 -363
  18. jaclang/compiler/passes/main/inheritance_pass.py +109 -107
  19. jaclang/compiler/passes/main/pyast_gen_pass.py +1242 -1735
  20. jaclang/compiler/passes/main/pyast_load_pass.py +579 -819
  21. jaclang/compiler/passes/main/pybc_gen_pass.py +38 -35
  22. jaclang/compiler/passes/main/pyjac_ast_link_pass.py +50 -163
  23. jaclang/compiler/passes/main/sym_tab_build_pass.py +114 -1203
  24. jaclang/compiler/passes/main/sym_tab_link_pass.py +141 -0
  25. jaclang/{tests → compiler/passes/main/tests}/fixtures/access_modifier.jac +10 -9
  26. jaclang/compiler/passes/main/tests/fixtures/atest.impl.jac +3 -0
  27. jaclang/compiler/passes/main/tests/fixtures/atest.jac +11 -0
  28. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl/getme.impl.jac +1 -1
  29. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl.jac +1 -1
  30. jaclang/compiler/passes/main/tests/fixtures/autoimpl.jac +3 -3
  31. jaclang/compiler/passes/main/tests/fixtures/autoimpl.something.else.impl.jac +1 -1
  32. jaclang/compiler/passes/main/tests/fixtures/base.impl.jac +8 -0
  33. jaclang/compiler/passes/main/tests/fixtures/base.jac +4 -4
  34. jaclang/compiler/passes/main/tests/fixtures/base2.impl.jac +8 -0
  35. jaclang/compiler/passes/main/tests/fixtures/base2.jac +4 -4
  36. jaclang/compiler/passes/main/tests/fixtures/blip.jac +1 -1
  37. jaclang/compiler/passes/main/tests/fixtures/cfg_ability_test.jac +23 -0
  38. jaclang/compiler/passes/main/tests/fixtures/cfg_gen.jac +19 -0
  39. jaclang/compiler/passes/main/tests/fixtures/circular_import.jac +7 -0
  40. jaclang/compiler/passes/main/tests/fixtures/data_spatial_types.jac +12 -12
  41. jaclang/compiler/passes/main/tests/fixtures/decls.jac +4 -4
  42. jaclang/compiler/passes/main/tests/fixtures/defn_decl_mismatch.jac +4 -4
  43. jaclang/compiler/passes/main/tests/fixtures/defs_and_uses.jac +6 -6
  44. jaclang/compiler/passes/main/tests/fixtures/enumerations.jac +13 -0
  45. jaclang/compiler/passes/main/tests/fixtures/fstrings.jac +1 -1
  46. jaclang/compiler/passes/main/tests/fixtures/func.jac +2 -2
  47. jaclang/compiler/passes/main/tests/fixtures/func2.jac +1 -1
  48. jaclang/compiler/passes/main/tests/fixtures/game1.jac +4 -4
  49. jaclang/compiler/passes/main/tests/fixtures/impl/defs1.jac +2 -2
  50. jaclang/compiler/passes/main/tests/fixtures/impl/defs2.jac +2 -2
  51. jaclang/compiler/passes/main/tests/fixtures/impl/imps.jac +0 -8
  52. jaclang/compiler/passes/main/tests/fixtures/impl_grab.impl.jac +5 -0
  53. jaclang/{tests → compiler/passes/main/tests}/fixtures/impl_grab.jac +1 -1
  54. jaclang/compiler/passes/main/tests/fixtures/incautoimpl.jac +1 -1
  55. jaclang/compiler/passes/main/tests/fixtures/main_err.impl.jac +6 -0
  56. jaclang/compiler/passes/main/tests/fixtures/main_err.jac +6 -0
  57. jaclang/compiler/passes/main/tests/fixtures/mod_type_assign.jac +1 -1
  58. jaclang/compiler/passes/main/tests/fixtures/mtest.impl.jac +6 -0
  59. jaclang/{tests → compiler/passes/main/tests}/fixtures/mtest.jac +1 -1
  60. jaclang/{tests → compiler/passes/main/tests}/fixtures/nested_impls.jac +14 -15
  61. jaclang/compiler/passes/main/tests/fixtures/py_imp_test.jac +7 -7
  62. jaclang/compiler/passes/main/tests/fixtures/second_err.jac +4 -0
  63. jaclang/compiler/passes/main/tests/fixtures/str2doc.py +3 -0
  64. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/action/__init__.py +5 -0
  65. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/action/actions.jac +19 -0
  66. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/main.jac +7 -0
  67. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/no_dupls.jac +35 -0
  68. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/one.jac +8 -0
  69. jaclang/compiler/passes/main/tests/fixtures/type_info.jac +4 -4
  70. jaclang/compiler/passes/main/tests/test_cfg_build_pass.py +101 -0
  71. jaclang/compiler/passes/main/tests/test_decl_impl_match_pass.py +157 -0
  72. jaclang/compiler/passes/main/tests/test_def_use_pass.py +4 -6
  73. jaclang/compiler/passes/main/tests/test_import_pass.py +59 -46
  74. jaclang/compiler/passes/main/tests/test_pyast_build_pass.py +15 -0
  75. jaclang/compiler/passes/main/tests/test_pyast_gen_pass.py +25 -34
  76. jaclang/compiler/passes/main/tests/test_pybc_gen_pass.py +3 -3
  77. jaclang/compiler/passes/main/tests/test_sub_node_pass.py +8 -7
  78. jaclang/compiler/passes/main/tests/test_sym_tab_build_pass.py +4 -4
  79. jaclang/compiler/passes/main/tests/test_sym_tab_link_pass.py +62 -0
  80. jaclang/compiler/passes/tool/__init__.py +2 -0
  81. jaclang/compiler/passes/tool/doc_ir.py +179 -0
  82. jaclang/compiler/passes/tool/doc_ir_gen_pass.py +1287 -0
  83. jaclang/compiler/passes/tool/fuse_comments_pass.py +90 -70
  84. jaclang/compiler/passes/tool/jac_formatter_pass.py +122 -2554
  85. jaclang/compiler/passes/tool/tests/fixtures/corelib.jac +249 -97
  86. jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +94 -97
  87. jaclang/compiler/passes/tool/tests/fixtures/doc_string.jac +2 -2
  88. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/access_mod_check.jac +5 -5
  89. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/archetype_test.jac +13 -0
  90. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/decorator_stack.jac +7 -7
  91. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/line_spacing.jac +8 -8
  92. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.dot +3 -3
  93. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.txt +3 -3
  94. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/ability_impl_long_comprehension.jac +1 -1
  95. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/call_with_many_parameters.jac +2 -2
  96. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/simple_walker.jac +3 -3
  97. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/try_block_and_walker_spawn_and_fstrings.jac +1 -1
  98. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/type_annotation.jac +1 -1
  99. jaclang/compiler/passes/tool/tests/fixtures/simple_walk.jac +1 -1
  100. jaclang/compiler/passes/tool/tests/fixtures/simple_walk_fmt.jac +10 -4
  101. jaclang/compiler/passes/tool/tests/test_doc_ir_gen_pass.py +29 -0
  102. jaclang/compiler/passes/tool/tests/test_jac_format_pass.py +63 -88
  103. jaclang/compiler/passes/tool/tests/test_unparse_validate.py +27 -28
  104. jaclang/compiler/passes/transform.py +56 -16
  105. jaclang/compiler/passes/{ir_pass.py → uni_pass.py} +35 -52
  106. jaclang/compiler/program.py +200 -0
  107. jaclang/compiler/tests/fixtures/codegentext.jac +31 -0
  108. jaclang/compiler/tests/fixtures/fam.jac +12 -12
  109. jaclang/compiler/tests/fixtures/hello_world.jac +1 -1
  110. jaclang/compiler/tests/fixtures/pkg_import_lib/__init__.jac +1 -0
  111. jaclang/compiler/tests/fixtures/pkg_import_lib/sub/__init__.jac +1 -0
  112. jaclang/compiler/tests/fixtures/pkg_import_lib/sub/helper.jac +3 -0
  113. jaclang/compiler/tests/fixtures/pkg_import_lib/tools.jac +3 -0
  114. jaclang/compiler/tests/fixtures/pkg_import_lib_py/__init__.py +11 -0
  115. jaclang/compiler/tests/fixtures/pkg_import_lib_py/sub/__init__.py +7 -0
  116. jaclang/compiler/tests/fixtures/pkg_import_lib_py/sub/helper.jac +3 -0
  117. jaclang/compiler/tests/fixtures/pkg_import_lib_py/tools.jac +3 -0
  118. jaclang/compiler/tests/fixtures/pkg_import_main.jac +10 -0
  119. jaclang/compiler/tests/fixtures/pkg_import_main_py.jac +11 -0
  120. jaclang/compiler/tests/fixtures/staticcheck.jac +2 -2
  121. jaclang/compiler/tests/test_importer.py +41 -16
  122. jaclang/compiler/tests/test_parser.py +39 -17
  123. jaclang/compiler/{absyntree.py → unitree.py} +1521 -1261
  124. jaclang/langserve/engine.jac +498 -0
  125. jaclang/langserve/sem_manager.jac +309 -0
  126. jaclang/langserve/server.jac +186 -0
  127. jaclang/langserve/tests/fixtures/base_module_structure.jac +7 -7
  128. jaclang/langserve/tests/fixtures/circle.jac +6 -6
  129. jaclang/langserve/tests/fixtures/circle_err.jac +6 -6
  130. jaclang/langserve/tests/fixtures/circle_pure.impl.jac +5 -5
  131. jaclang/langserve/tests/fixtures/circle_pure.jac +7 -7
  132. jaclang/langserve/tests/fixtures/circle_pure_err.impl.jac +2 -2
  133. jaclang/langserve/tests/fixtures/circle_pure_err.jac +7 -7
  134. jaclang/langserve/tests/fixtures/import_include_statements.jac +6 -6
  135. jaclang/langserve/tests/fixtures/rename.jac +6 -6
  136. jaclang/langserve/tests/server_test/test_lang_serve.py +261 -0
  137. jaclang/langserve/tests/server_test/utils.py +118 -0
  138. jaclang/langserve/tests/session.jac +294 -0
  139. jaclang/langserve/tests/test_sem_tokens.py +4 -4
  140. jaclang/langserve/tests/test_server.py +53 -30
  141. jaclang/langserve/utils.jac +459 -0
  142. jaclang/runtimelib/{architype.py → archetype.py} +86 -62
  143. jaclang/runtimelib/builtin.py +95 -0
  144. jaclang/runtimelib/constructs.py +11 -13
  145. jaclang/runtimelib/importer.py +83 -53
  146. jaclang/runtimelib/machine.py +1592 -144
  147. jaclang/runtimelib/memory.py +6 -6
  148. jaclang/{plugin → runtimelib}/tests/fixtures/graph_purger.jac +1 -1
  149. jaclang/{plugin → runtimelib}/tests/fixtures/impl_match.jac +2 -2
  150. jaclang/runtimelib/tests/fixtures/impl_match_impl.jac +3 -0
  151. jaclang/{plugin → runtimelib}/tests/fixtures/other_root_access.jac +7 -7
  152. jaclang/{plugin → runtimelib}/tests/fixtures/savable_object.jac +3 -5
  153. jaclang/{plugin → runtimelib}/tests/fixtures/simple_node_connection.jac +6 -6
  154. jaclang/{plugin → runtimelib}/tests/fixtures/simple_persistent.jac +1 -1
  155. jaclang/{plugin → runtimelib}/tests/fixtures/traversing_save.jac +7 -5
  156. jaclang/runtimelib/tests/test_features.py +72 -0
  157. jaclang/{plugin → runtimelib}/tests/test_jaseci.py +6 -5
  158. jaclang/runtimelib/utils.py +34 -66
  159. jaclang/settings.py +1 -6
  160. jaclang/tests/fixtures/{abc.jac → abc_check.jac} +6 -6
  161. jaclang/tests/fixtures/arch_rel_import_creation.jac +4 -4
  162. jaclang/tests/fixtures/async_ability.jac +18 -0
  163. jaclang/tests/fixtures/async_walker.jac +23 -0
  164. jaclang/tests/fixtures/backward_edge_visit.jac +31 -0
  165. jaclang/tests/fixtures/baddy.jac +1 -1
  166. jaclang/tests/fixtures/base_class1.jac +2 -2
  167. jaclang/tests/fixtures/base_class2.jac +2 -2
  168. jaclang/tests/fixtures/base_class_complex_expr.jac +3 -3
  169. jaclang/tests/fixtures/builtin_printgraph.jac +85 -0
  170. jaclang/tests/fixtures/builtin_printgraph_json.jac +21 -0
  171. jaclang/tests/fixtures/builtin_printgraph_mermaid.jac +16 -0
  172. jaclang/tests/fixtures/byllmissue.jac +1 -1
  173. jaclang/tests/fixtures/chandra_bugs.jac +1 -1
  174. jaclang/tests/fixtures/chandra_bugs2.jac +21 -14
  175. jaclang/tests/fixtures/cls_method.jac +6 -6
  176. jaclang/tests/fixtures/concurrency.jac +39 -0
  177. jaclang/tests/fixtures/connect_traverse_syntax.jac +18 -0
  178. jaclang/tests/fixtures/create_dynamic_archetype.jac +35 -0
  179. jaclang/tests/fixtures/decl_defn_param_name.jac +4 -4
  180. jaclang/tests/fixtures/deep/deeper/__init__.jac +1 -0
  181. jaclang/tests/fixtures/deep/deeper/deep_outer_import.jac +2 -3
  182. jaclang/tests/fixtures/deep/deeper/deep_outer_import2.jac +3 -3
  183. jaclang/tests/fixtures/deep/deeper/snd_lev.jac +2 -2
  184. jaclang/tests/fixtures/deep/mycode.jac +1 -1
  185. jaclang/tests/fixtures/deep/one_lev.jac +3 -4
  186. jaclang/tests/fixtures/deep/one_lev_dup.jac +2 -2
  187. jaclang/tests/fixtures/deep_convert.jac +1 -1
  188. jaclang/tests/fixtures/deep_import.jac +2 -2
  189. jaclang/tests/fixtures/deep_import_interp.jac +8 -0
  190. jaclang/tests/fixtures/deep_import_mods.jac +3 -3
  191. jaclang/tests/fixtures/deferred_field.jac +1 -1
  192. jaclang/tests/fixtures/del_clean.jac +7 -0
  193. jaclang/tests/fixtures/disconn.jac +2 -2
  194. jaclang/tests/fixtures/dynamic_archetype.jac +34 -0
  195. jaclang/tests/fixtures/edge_ability.jac +49 -0
  196. jaclang/tests/fixtures/edge_node_walk.jac +12 -12
  197. jaclang/tests/fixtures/edge_ops.jac +7 -7
  198. jaclang/tests/fixtures/edges_walk.jac +10 -10
  199. jaclang/tests/fixtures/edgetypeissue.jac +1 -1
  200. jaclang/tests/fixtures/enum_inside_archtype.jac +4 -4
  201. jaclang/tests/fixtures/err.impl.jac +1 -1
  202. jaclang/tests/fixtures/err.jac +2 -2
  203. jaclang/tests/fixtures/err_runtime.jac +2 -2
  204. jaclang/tests/fixtures/foo.jac +7 -7
  205. jaclang/tests/fixtures/game1.jac +4 -4
  206. jaclang/tests/fixtures/gendot_bubble_sort.jac +4 -4
  207. jaclang/tests/fixtures/glob_multivar_statement.jac +1 -1
  208. jaclang/tests/fixtures/guess_game.jac +6 -6
  209. jaclang/tests/fixtures/has_goodness.jac +1 -1
  210. jaclang/tests/fixtures/hash_init_check.jac +3 -3
  211. jaclang/tests/fixtures/hello.jac +1 -1
  212. jaclang/tests/fixtures/here_usage_error.jac +21 -0
  213. jaclang/tests/fixtures/here_visitor_usage.jac +21 -0
  214. jaclang/tests/fixtures/ignore.jac +3 -3
  215. jaclang/tests/fixtures/ignore_dup.jac +3 -3
  216. jaclang/tests/fixtures/impl_match_confused.impl.jac +1 -1
  217. jaclang/tests/fixtures/import.jac +9 -9
  218. jaclang/tests/fixtures/import_all.jac +1 -1
  219. jaclang/tests/fixtures/index_slice.jac +1 -1
  220. jaclang/tests/fixtures/inherit_check.jac +3 -3
  221. jaclang/tests/fixtures/jac_from_py.py +4 -0
  222. jaclang/tests/fixtures/jacsamp.jac +1 -1
  223. jaclang/tests/fixtures/jactest_main.jac +1 -1
  224. jaclang/tests/fixtures/jp_importer.jac +7 -8
  225. jaclang/tests/fixtures/jp_importer_auto.jac +3 -3
  226. jaclang/tests/fixtures/lambda.jac +2 -2
  227. jaclang/tests/fixtures/needs_import.jac +6 -6
  228. jaclang/tests/fixtures/needs_import_1.jac +1 -1
  229. jaclang/tests/fixtures/needs_import_2.jac +1 -1
  230. jaclang/tests/fixtures/needs_import_3.jac +1 -1
  231. jaclang/tests/fixtures/needs_import_dup.jac +6 -6
  232. jaclang/tests/fixtures/node_del.jac +54 -0
  233. jaclang/tests/fixtures/nosigself.jac +3 -3
  234. jaclang/tests/fixtures/py2jac.py +30 -0
  235. jaclang/tests/fixtures/py_bool_expr.py +7 -0
  236. jaclang/tests/fixtures/py_namedexpr.py +7 -0
  237. jaclang/tests/fixtures/pyfunc_3.py +0 -2
  238. jaclang/tests/fixtures/random_check.jac +5 -5
  239. jaclang/tests/fixtures/simple_archs.jac +2 -2
  240. jaclang/tests/fixtures/simple_walk.jac +52 -0
  241. jaclang/tests/fixtures/slice_vals.jac +3 -3
  242. jaclang/tests/fixtures/sub_abil_sep.jac +3 -3
  243. jaclang/tests/fixtures/sub_abil_sep_multilev.jac +3 -3
  244. jaclang/tests/fixtures/trailing_comma.jac +4 -4
  245. jaclang/tests/fixtures/type_info.jac +5 -5
  246. jaclang/{compiler/passes/main/tests → tests}/fixtures/uninitialized_hasvars.jac +1 -1
  247. jaclang/tests/fixtures/visit_order.jac +4 -4
  248. jaclang/tests/fixtures/visit_traversal.jac +47 -0
  249. jaclang/tests/fixtures/walker_override.jac +2 -2
  250. jaclang/tests/fixtures/walker_update.jac +5 -5
  251. jaclang/tests/fixtures/with_context.jac +4 -4
  252. jaclang/tests/test_bugs.py +2 -2
  253. jaclang/tests/test_cli.py +127 -227
  254. jaclang/tests/test_language.py +542 -474
  255. jaclang/tests/test_man_code.py +2 -2
  256. jaclang/tests/test_reference.py +4 -4
  257. jaclang/tests/test_settings.py +16 -16
  258. jaclang/tests/test_typecheck.py +555 -0
  259. jaclang/utils/__init__.py +4 -0
  260. jaclang/utils/helpers.py +24 -31
  261. jaclang/utils/lang_tools.py +84 -75
  262. jaclang/utils/module_resolver.py +69 -0
  263. jaclang/utils/test.py +8 -5
  264. jaclang/utils/tests/test_lang_tools.py +40 -14
  265. jaclang/utils/treeprinter.py +178 -42
  266. jaclang/vendor/__init__.py +1 -2
  267. jaclang/vendor/attr/__init__.py +14 -44
  268. jaclang/vendor/attr/__init__.pyi +155 -321
  269. jaclang/vendor/attr/_cmp.py +25 -15
  270. jaclang/vendor/attr/_cmp.pyi +7 -7
  271. jaclang/vendor/attr/_compat.py +15 -8
  272. jaclang/vendor/attr/_config.py +1 -1
  273. jaclang/vendor/attr/_funcs.py +148 -163
  274. jaclang/vendor/attr/_make.py +859 -855
  275. jaclang/vendor/attr/_next_gen.py +426 -32
  276. jaclang/vendor/attr/converters.py +67 -49
  277. jaclang/vendor/attr/converters.pyi +13 -7
  278. jaclang/vendor/attr/filters.py +17 -11
  279. jaclang/vendor/attr/filters.pyi +3 -3
  280. jaclang/vendor/attr/setters.py +11 -5
  281. jaclang/vendor/attr/setters.pyi +2 -1
  282. jaclang/vendor/attr/validators.py +191 -162
  283. jaclang/vendor/attr/validators.pyi +25 -27
  284. jaclang/vendor/attrs/__init__.py +9 -5
  285. jaclang/vendor/attrs/__init__.pyi +225 -29
  286. jaclang/vendor/attrs-25.3.0.dist-info/INSTALLER +1 -0
  287. jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/METADATA +83 -53
  288. jaclang/vendor/attrs-25.3.0.dist-info/RECORD +56 -0
  289. jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/WHEEL +1 -1
  290. jaclang/vendor/bin/dmypy +8 -0
  291. jaclang/vendor/bin/mypy +8 -0
  292. jaclang/vendor/bin/mypyc +8 -0
  293. jaclang/vendor/bin/stubgen +8 -0
  294. jaclang/vendor/bin/stubtest +8 -0
  295. jaclang/vendor/cattr/gen.py +2 -2
  296. jaclang/vendor/cattr/preconf/bson.py +1 -0
  297. jaclang/vendor/cattr/preconf/json.py +1 -0
  298. jaclang/vendor/cattr/preconf/msgpack.py +1 -0
  299. jaclang/vendor/cattr/preconf/orjson.py +1 -0
  300. jaclang/vendor/cattr/preconf/pyyaml.py +1 -0
  301. jaclang/vendor/cattr/preconf/tomlkit.py +1 -0
  302. jaclang/vendor/cattr/preconf/ujson.py +1 -0
  303. jaclang/vendor/cattrs/__init__.py +21 -21
  304. jaclang/vendor/cattrs/_compat.py +176 -62
  305. jaclang/vendor/cattrs/_generics.py +5 -3
  306. jaclang/vendor/cattrs/cols.py +289 -0
  307. jaclang/vendor/cattrs/converters.py +505 -187
  308. jaclang/vendor/cattrs/disambiguators.py +118 -45
  309. jaclang/vendor/cattrs/dispatch.py +66 -36
  310. jaclang/vendor/cattrs/fns.py +6 -1
  311. jaclang/vendor/cattrs/gen/__init__.py +365 -202
  312. jaclang/vendor/cattrs/gen/_generics.py +41 -5
  313. jaclang/vendor/cattrs/gen/_lc.py +3 -2
  314. jaclang/vendor/cattrs/gen/_shared.py +39 -32
  315. jaclang/vendor/cattrs/gen/typeddicts.py +75 -88
  316. jaclang/vendor/cattrs/preconf/__init__.py +20 -0
  317. jaclang/vendor/cattrs/preconf/bson.py +7 -8
  318. jaclang/vendor/cattrs/preconf/cbor2.py +3 -0
  319. jaclang/vendor/cattrs/preconf/json.py +8 -4
  320. jaclang/vendor/cattrs/preconf/msgpack.py +3 -0
  321. jaclang/vendor/cattrs/preconf/msgspec.py +185 -0
  322. jaclang/vendor/cattrs/preconf/orjson.py +20 -7
  323. jaclang/vendor/cattrs/preconf/pyyaml.py +15 -3
  324. jaclang/vendor/cattrs/preconf/tomlkit.py +3 -1
  325. jaclang/vendor/cattrs/preconf/ujson.py +3 -0
  326. jaclang/vendor/cattrs/strategies/__init__.py +1 -0
  327. jaclang/vendor/cattrs/strategies/_class_methods.py +1 -1
  328. jaclang/vendor/cattrs/strategies/_subclasses.py +43 -29
  329. jaclang/vendor/cattrs/strategies/_unions.py +47 -24
  330. jaclang/vendor/cattrs/v.py +1 -0
  331. jaclang/vendor/cattrs-24.1.3.dist-info/INSTALLER +1 -0
  332. jaclang/vendor/cattrs-24.1.3.dist-info/METADATA +161 -0
  333. jaclang/vendor/cattrs-24.1.3.dist-info/RECORD +96 -0
  334. jaclang/vendor/{cattrs-23.2.3.dist-info → cattrs-24.1.3.dist-info}/WHEEL +1 -1
  335. jaclang/vendor/lark/__init__.py +38 -38
  336. jaclang/vendor/lark/__pyinstaller/__init__.py +6 -6
  337. jaclang/vendor/lark/__pyinstaller/hook-lark.py +14 -14
  338. jaclang/vendor/lark/ast_utils.py +59 -59
  339. jaclang/vendor/lark/common.py +86 -89
  340. jaclang/vendor/lark/exceptions.py +292 -292
  341. jaclang/vendor/lark/grammar.py +130 -130
  342. jaclang/vendor/lark/grammars/common.lark +59 -59
  343. jaclang/vendor/lark/grammars/lark.lark +62 -62
  344. jaclang/vendor/lark/grammars/python.lark +302 -302
  345. jaclang/vendor/lark/grammars/unicode.lark +7 -7
  346. jaclang/vendor/lark/indenter.py +143 -112
  347. jaclang/vendor/lark/lark.py +658 -661
  348. jaclang/vendor/lark/lexer.py +678 -678
  349. jaclang/vendor/lark/load_grammar.py +1428 -1428
  350. jaclang/vendor/lark/parse_tree_builder.py +391 -391
  351. jaclang/vendor/lark/parser_frontends.py +257 -257
  352. jaclang/vendor/lark/parsers/cyk.py +340 -340
  353. jaclang/vendor/lark/parsers/earley.py +317 -308
  354. jaclang/vendor/lark/parsers/earley_common.py +42 -42
  355. jaclang/vendor/lark/parsers/earley_forest.py +802 -810
  356. jaclang/vendor/lark/parsers/grammar_analysis.py +203 -203
  357. jaclang/vendor/lark/parsers/lalr_analysis.py +332 -332
  358. jaclang/vendor/lark/parsers/lalr_interactive_parser.py +158 -157
  359. jaclang/vendor/lark/parsers/lalr_parser.py +122 -122
  360. jaclang/vendor/lark/parsers/lalr_parser_state.py +110 -110
  361. jaclang/vendor/lark/parsers/xearley.py +165 -165
  362. jaclang/vendor/lark/reconstruct.py +107 -107
  363. jaclang/vendor/lark/tools/__init__.py +70 -71
  364. jaclang/vendor/lark/tools/nearley.py +202 -202
  365. jaclang/vendor/lark/tools/serialize.py +32 -32
  366. jaclang/vendor/lark/tools/standalone.py +196 -196
  367. jaclang/vendor/lark/tree.py +267 -272
  368. jaclang/vendor/lark/tree_matcher.py +186 -186
  369. jaclang/vendor/lark/utils.py +346 -361
  370. jaclang/vendor/lark/visitors.py +596 -593
  371. jaclang/vendor/lark-1.2.2.dist-info/INSTALLER +1 -0
  372. jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/METADATA +48 -47
  373. jaclang/vendor/lark-1.2.2.dist-info/RECORD +83 -0
  374. jaclang/vendor/{mypy_extensions-1.0.0.dist-info → lark-1.2.2.dist-info}/WHEEL +1 -1
  375. jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info/licenses}/LICENSE +18 -18
  376. jaclang/vendor/lsprotocol-2023.0.1.dist-info/INSTALLER +1 -0
  377. jaclang/vendor/lsprotocol-2023.0.1.dist-info/METADATA +2 -1
  378. jaclang/vendor/lsprotocol-2023.0.1.dist-info/RECORD +17 -10
  379. jaclang/vendor/lsprotocol-2023.0.1.dist-info/WHEEL +1 -1
  380. jaclang/vendor/pluggy/_version.py +7 -2
  381. jaclang/vendor/pluggy-1.5.0.dist-info/INSTALLER +1 -0
  382. jaclang/vendor/pluggy-1.5.0.dist-info/METADATA +6 -5
  383. jaclang/vendor/pluggy-1.5.0.dist-info/RECORD +24 -14
  384. jaclang/vendor/pluggy-1.5.0.dist-info/WHEEL +1 -1
  385. jaclang/vendor/pygls-1.3.1.dist-info/INSTALLER +1 -0
  386. jaclang/vendor/pygls-1.3.1.dist-info/METADATA +2 -2
  387. jaclang/vendor/pygls-1.3.1.dist-info/RECORD +45 -24
  388. jaclang/vendor/pygls-1.3.1.dist-info/WHEEL +1 -1
  389. {jaclang-0.7.34.dist-info → jaclang-0.8.1.dist-info}/METADATA +2 -1
  390. jaclang-0.8.1.dist-info/RECORD +568 -0
  391. {jaclang-0.7.34.dist-info → jaclang-0.8.1.dist-info}/WHEEL +1 -1
  392. jaclang/compiler/.gitignore +0 -1
  393. jaclang/compiler/compile.py +0 -119
  394. jaclang/compiler/passes/main/access_modifier_pass.py +0 -130
  395. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +0 -656
  396. jaclang/compiler/passes/main/py_collect_dep_pass.py +0 -78
  397. jaclang/compiler/passes/main/pyout_pass.py +0 -86
  398. jaclang/compiler/passes/main/registry_pass.py +0 -156
  399. jaclang/compiler/passes/main/schedules.py +0 -47
  400. jaclang/compiler/passes/main/sub_node_tab_pass.py +0 -36
  401. jaclang/compiler/passes/main/tests/fixtures/registry.jac +0 -36
  402. jaclang/compiler/passes/main/tests/test_decl_def_match_pass.py +0 -114
  403. jaclang/compiler/passes/main/tests/test_registry_pass.py +0 -31
  404. jaclang/compiler/passes/main/tests/test_type_check_pass.py +0 -91
  405. jaclang/compiler/passes/main/tests/test_typeinfo_pass.py +0 -29
  406. jaclang/compiler/passes/main/type_check_pass.py +0 -128
  407. jaclang/compiler/passes/tool/schedules.py +0 -18
  408. jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +0 -36
  409. jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +0 -17
  410. jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +0 -32
  411. jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +0 -27
  412. jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +0 -35
  413. jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +0 -25
  414. jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +0 -13
  415. jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +0 -63
  416. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/architype_test.jac +0 -13
  417. jaclang/compiler/passes/utils/mypy_ast_build.py +0 -940
  418. jaclang/compiler/py_info.py +0 -22
  419. jaclang/compiler/semtable.py +0 -159
  420. jaclang/compiler/symtable.py +0 -297
  421. jaclang/langserve/engine.py +0 -541
  422. jaclang/langserve/sem_manager.py +0 -379
  423. jaclang/langserve/server.py +0 -176
  424. jaclang/langserve/tests/session.py +0 -255
  425. jaclang/langserve/utils.py +0 -458
  426. jaclang/plugin/__init__.py +0 -7
  427. jaclang/plugin/builtin.py +0 -57
  428. jaclang/plugin/default.py +0 -1443
  429. jaclang/plugin/feature.py +0 -574
  430. jaclang/plugin/plugin.md +0 -471
  431. jaclang/plugin/spec.py +0 -536
  432. jaclang/plugin/tests/fixtures/impl_match_impl.jac +0 -3
  433. jaclang/plugin/tests/test_features.py +0 -56
  434. jaclang/runtimelib/context.py +0 -191
  435. jaclang/tests/fixtures/builtin_dotgen.jac +0 -42
  436. jaclang/tests/fixtures/create_dynamic_architype.jac +0 -35
  437. jaclang/tests/fixtures/dynamic_architype.jac +0 -34
  438. jaclang/tests/fixtures/impl_grab.impl.jac +0 -5
  439. jaclang/tests/fixtures/mtest.impl.jac +0 -6
  440. jaclang/tests/fixtures/registry.jac +0 -58
  441. jaclang/tests/fixtures/semstr.jac +0 -30
  442. jaclang/tests/main.jac +0 -2
  443. jaclang/utils/profiler.py +0 -62
  444. jaclang/vendor/attrs-23.2.0.dist-info/RECORD +0 -35
  445. jaclang/vendor/cattrs-23.2.3.dist-info/METADATA +0 -221
  446. jaclang/vendor/cattrs-23.2.3.dist-info/RECORD +0 -48
  447. jaclang/vendor/lark-1.1.9.dist-info/RECORD +0 -46
  448. jaclang/vendor/lark-1.1.9.dist-info/WHEEL +0 -5
  449. jaclang/vendor/mypy/__init__.py +0 -1
  450. jaclang/vendor/mypy/__main__.py +0 -37
  451. jaclang/vendor/mypy/api.py +0 -94
  452. jaclang/vendor/mypy/applytype.py +0 -172
  453. jaclang/vendor/mypy/argmap.py +0 -268
  454. jaclang/vendor/mypy/binder.py +0 -538
  455. jaclang/vendor/mypy/bogus_type.py +0 -27
  456. jaclang/vendor/mypy/build.py +0 -3562
  457. jaclang/vendor/mypy/checker.py +0 -8445
  458. jaclang/vendor/mypy/checkexpr.py +0 -6623
  459. jaclang/vendor/mypy/checkmember.py +0 -1363
  460. jaclang/vendor/mypy/checkpattern.py +0 -801
  461. jaclang/vendor/mypy/checkstrformat.py +0 -1109
  462. jaclang/vendor/mypy/config_parser.py +0 -670
  463. jaclang/vendor/mypy/constant_fold.py +0 -187
  464. jaclang/vendor/mypy/constraints.py +0 -1636
  465. jaclang/vendor/mypy/copytype.py +0 -133
  466. jaclang/vendor/mypy/defaults.py +0 -46
  467. jaclang/vendor/mypy/dmypy/__main__.py +0 -6
  468. jaclang/vendor/mypy/dmypy/client.py +0 -749
  469. jaclang/vendor/mypy/dmypy_os.py +0 -42
  470. jaclang/vendor/mypy/dmypy_server.py +0 -1107
  471. jaclang/vendor/mypy/dmypy_util.py +0 -117
  472. jaclang/vendor/mypy/erasetype.py +0 -278
  473. jaclang/vendor/mypy/errorcodes.py +0 -291
  474. jaclang/vendor/mypy/errors.py +0 -1280
  475. jaclang/vendor/mypy/evalexpr.py +0 -205
  476. jaclang/vendor/mypy/expandtype.py +0 -524
  477. jaclang/vendor/mypy/exprtotype.py +0 -209
  478. jaclang/vendor/mypy/fastparse.py +0 -2147
  479. jaclang/vendor/mypy/find_sources.py +0 -243
  480. jaclang/vendor/mypy/fixup.py +0 -428
  481. jaclang/vendor/mypy/freetree.py +0 -23
  482. jaclang/vendor/mypy/fscache.py +0 -309
  483. jaclang/vendor/mypy/fswatcher.py +0 -106
  484. jaclang/vendor/mypy/gclogger.py +0 -47
  485. jaclang/vendor/mypy/git.py +0 -34
  486. jaclang/vendor/mypy/graph_utils.py +0 -112
  487. jaclang/vendor/mypy/indirection.py +0 -121
  488. jaclang/vendor/mypy/infer.py +0 -75
  489. jaclang/vendor/mypy/inspections.py +0 -627
  490. jaclang/vendor/mypy/ipc.py +0 -310
  491. jaclang/vendor/mypy/join.py +0 -871
  492. jaclang/vendor/mypy/literals.py +0 -306
  493. jaclang/vendor/mypy/lookup.py +0 -61
  494. jaclang/vendor/mypy/main.py +0 -1574
  495. jaclang/vendor/mypy/maptype.py +0 -106
  496. jaclang/vendor/mypy/meet.py +0 -1140
  497. jaclang/vendor/mypy/memprofile.py +0 -121
  498. jaclang/vendor/mypy/message_registry.py +0 -329
  499. jaclang/vendor/mypy/messages.py +0 -3186
  500. jaclang/vendor/mypy/metastore.py +0 -225
  501. jaclang/vendor/mypy/mixedtraverser.py +0 -112
  502. jaclang/vendor/mypy/modulefinder.py +0 -875
  503. jaclang/vendor/mypy/moduleinspect.py +0 -184
  504. jaclang/vendor/mypy/mro.py +0 -62
  505. jaclang/vendor/mypy/nodes.py +0 -4115
  506. jaclang/vendor/mypy/operators.py +0 -126
  507. jaclang/vendor/mypy/options.py +0 -556
  508. jaclang/vendor/mypy/parse.py +0 -30
  509. jaclang/vendor/mypy/partially_defined.py +0 -675
  510. jaclang/vendor/mypy/patterns.py +0 -150
  511. jaclang/vendor/mypy/plugin.py +0 -901
  512. jaclang/vendor/mypy/plugins/attrs.py +0 -1166
  513. jaclang/vendor/mypy/plugins/common.py +0 -440
  514. jaclang/vendor/mypy/plugins/ctypes.py +0 -245
  515. jaclang/vendor/mypy/plugins/dataclasses.py +0 -1108
  516. jaclang/vendor/mypy/plugins/default.py +0 -531
  517. jaclang/vendor/mypy/plugins/enums.py +0 -259
  518. jaclang/vendor/mypy/plugins/functools.py +0 -104
  519. jaclang/vendor/mypy/plugins/proper_plugin.py +0 -175
  520. jaclang/vendor/mypy/plugins/singledispatch.py +0 -224
  521. jaclang/vendor/mypy/py.typed +0 -1
  522. jaclang/vendor/mypy/pyinfo.py +0 -78
  523. jaclang/vendor/mypy/reachability.py +0 -362
  524. jaclang/vendor/mypy/refinfo.py +0 -92
  525. jaclang/vendor/mypy/renaming.py +0 -568
  526. jaclang/vendor/mypy/report.py +0 -924
  527. jaclang/vendor/mypy/scope.py +0 -125
  528. jaclang/vendor/mypy/semanal.py +0 -7187
  529. jaclang/vendor/mypy/semanal_classprop.py +0 -187
  530. jaclang/vendor/mypy/semanal_enum.py +0 -253
  531. jaclang/vendor/mypy/semanal_infer.py +0 -128
  532. jaclang/vendor/mypy/semanal_main.py +0 -511
  533. jaclang/vendor/mypy/semanal_namedtuple.py +0 -670
  534. jaclang/vendor/mypy/semanal_newtype.py +0 -273
  535. jaclang/vendor/mypy/semanal_pass1.py +0 -156
  536. jaclang/vendor/mypy/semanal_shared.py +0 -490
  537. jaclang/vendor/mypy/semanal_typeargs.py +0 -265
  538. jaclang/vendor/mypy/semanal_typeddict.py +0 -575
  539. jaclang/vendor/mypy/server/astdiff.py +0 -518
  540. jaclang/vendor/mypy/server/astmerge.py +0 -562
  541. jaclang/vendor/mypy/server/aststrip.py +0 -281
  542. jaclang/vendor/mypy/server/deps.py +0 -1137
  543. jaclang/vendor/mypy/server/mergecheck.py +0 -83
  544. jaclang/vendor/mypy/server/objgraph.py +0 -101
  545. jaclang/vendor/mypy/server/subexpr.py +0 -198
  546. jaclang/vendor/mypy/server/target.py +0 -11
  547. jaclang/vendor/mypy/server/trigger.py +0 -26
  548. jaclang/vendor/mypy/server/update.py +0 -1339
  549. jaclang/vendor/mypy/sharedparse.py +0 -112
  550. jaclang/vendor/mypy/solve.py +0 -562
  551. jaclang/vendor/mypy/split_namespace.py +0 -35
  552. jaclang/vendor/mypy/state.py +0 -28
  553. jaclang/vendor/mypy/stats.py +0 -489
  554. jaclang/vendor/mypy/strconv.py +0 -641
  555. jaclang/vendor/mypy/stubdoc.py +0 -491
  556. jaclang/vendor/mypy/stubgen.py +0 -1886
  557. jaclang/vendor/mypy/stubgenc.py +0 -993
  558. jaclang/vendor/mypy/stubinfo.py +0 -173
  559. jaclang/vendor/mypy/stubtest.py +0 -2079
  560. jaclang/vendor/mypy/stubutil.py +0 -834
  561. jaclang/vendor/mypy/subtypes.py +0 -1980
  562. jaclang/vendor/mypy/suggestions.py +0 -1046
  563. jaclang/vendor/mypy/test/config.py +0 -28
  564. jaclang/vendor/mypy/test/data.py +0 -821
  565. jaclang/vendor/mypy/test/helpers.py +0 -476
  566. jaclang/vendor/mypy/test/meta/_pytest.py +0 -72
  567. jaclang/vendor/mypy/test/meta/test_diff_helper.py +0 -47
  568. jaclang/vendor/mypy/test/meta/test_parse_data.py +0 -73
  569. jaclang/vendor/mypy/test/meta/test_update_data.py +0 -135
  570. jaclang/vendor/mypy/test/test_find_sources.py +0 -376
  571. jaclang/vendor/mypy/test/test_ref_info.py +0 -45
  572. jaclang/vendor/mypy/test/testapi.py +0 -45
  573. jaclang/vendor/mypy/test/testargs.py +0 -77
  574. jaclang/vendor/mypy/test/testcheck.py +0 -322
  575. jaclang/vendor/mypy/test/testcmdline.py +0 -152
  576. jaclang/vendor/mypy/test/testconstraints.py +0 -134
  577. jaclang/vendor/mypy/test/testdaemon.py +0 -132
  578. jaclang/vendor/mypy/test/testdeps.py +0 -77
  579. jaclang/vendor/mypy/test/testdiff.py +0 -67
  580. jaclang/vendor/mypy/test/testerrorstream.py +0 -46
  581. jaclang/vendor/mypy/test/testfinegrained.py +0 -438
  582. jaclang/vendor/mypy/test/testfinegrainedcache.py +0 -18
  583. jaclang/vendor/mypy/test/testformatter.py +0 -85
  584. jaclang/vendor/mypy/test/testfscache.py +0 -101
  585. jaclang/vendor/mypy/test/testgraph.py +0 -83
  586. jaclang/vendor/mypy/test/testinfer.py +0 -373
  587. jaclang/vendor/mypy/test/testipc.py +0 -119
  588. jaclang/vendor/mypy/test/testmerge.py +0 -238
  589. jaclang/vendor/mypy/test/testmodulefinder.py +0 -278
  590. jaclang/vendor/mypy/test/testmypyc.py +0 -14
  591. jaclang/vendor/mypy/test/testparse.py +0 -107
  592. jaclang/vendor/mypy/test/testpep561.py +0 -211
  593. jaclang/vendor/mypy/test/testpythoneval.py +0 -117
  594. jaclang/vendor/mypy/test/testreports.py +0 -55
  595. jaclang/vendor/mypy/test/testsemanal.py +0 -209
  596. jaclang/vendor/mypy/test/testsolve.py +0 -285
  597. jaclang/vendor/mypy/test/teststubgen.py +0 -1412
  598. jaclang/vendor/mypy/test/teststubinfo.py +0 -12
  599. jaclang/vendor/mypy/test/teststubtest.py +0 -2492
  600. jaclang/vendor/mypy/test/testsubtypes.py +0 -303
  601. jaclang/vendor/mypy/test/testtransform.py +0 -64
  602. jaclang/vendor/mypy/test/testtypegen.py +0 -83
  603. jaclang/vendor/mypy/test/testtypes.py +0 -1551
  604. jaclang/vendor/mypy/test/testutil.py +0 -111
  605. jaclang/vendor/mypy/test/typefixture.py +0 -415
  606. jaclang/vendor/mypy/test/update_data.py +0 -87
  607. jaclang/vendor/mypy/test/visitors.py +0 -63
  608. jaclang/vendor/mypy/traverser.py +0 -961
  609. jaclang/vendor/mypy/treetransform.py +0 -800
  610. jaclang/vendor/mypy/tvar_scope.py +0 -169
  611. jaclang/vendor/mypy/type_visitor.py +0 -564
  612. jaclang/vendor/mypy/typeanal.py +0 -2596
  613. jaclang/vendor/mypy/typeops.py +0 -1082
  614. jaclang/vendor/mypy/types.py +0 -3708
  615. jaclang/vendor/mypy/types_utils.py +0 -166
  616. jaclang/vendor/mypy/typeshed/LICENSE +0 -237
  617. jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +0 -309
  618. jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +0 -36
  619. jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +0 -3
  620. jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +0 -591
  621. jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +0 -84
  622. jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +0 -1
  623. jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +0 -133
  624. jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +0 -94
  625. jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +0 -8
  626. jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +0 -25
  627. jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +0 -90
  628. jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +0 -207
  629. jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +0 -566
  630. jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +0 -281
  631. jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +0 -33
  632. jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +0 -164
  633. jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +0 -11
  634. jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +0 -28
  635. jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +0 -49
  636. jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +0 -100
  637. jaclang/vendor/mypy/typeshed/stdlib/_lsprof.pyi +0 -35
  638. jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +0 -16
  639. jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +0 -92
  640. jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +0 -147
  641. jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +0 -34
  642. jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +0 -33
  643. jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +0 -14
  644. jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +0 -43
  645. jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +0 -12
  646. jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +0 -16
  647. jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +0 -803
  648. jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +0 -103
  649. jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +0 -59
  650. jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +0 -17
  651. jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +0 -121
  652. jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +0 -17
  653. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +0 -347
  654. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +0 -37
  655. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +0 -44
  656. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +0 -9
  657. jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +0 -55
  658. jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +0 -41
  659. jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +0 -51
  660. jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +0 -255
  661. jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +0 -51
  662. jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +0 -91
  663. jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +0 -3
  664. jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +0 -595
  665. jaclang/vendor/mypy/typeshed/stdlib/array.pyi +0 -92
  666. jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +0 -277
  667. jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +0 -21
  668. jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +0 -41
  669. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +0 -440
  670. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +0 -19
  671. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +0 -63
  672. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +0 -9
  673. jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +0 -20
  674. jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +0 -26
  675. jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +0 -580
  676. jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +0 -43
  677. jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +0 -20
  678. jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +0 -57
  679. jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +0 -121
  680. jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +0 -3
  681. jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +0 -9
  682. jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +0 -64
  683. jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +0 -34
  684. jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +0 -47
  685. jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +0 -32
  686. jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +0 -8
  687. jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +0 -165
  688. jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +0 -10
  689. jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +0 -153
  690. jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +0 -229
  691. jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +0 -25
  692. jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +0 -497
  693. jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +0 -9
  694. jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +0 -19
  695. jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +0 -47
  696. jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +0 -94
  697. jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +0 -196
  698. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +0 -85
  699. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +0 -49
  700. jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +0 -90
  701. jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +0 -12
  702. jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +0 -43
  703. jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +0 -59
  704. jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +0 -102
  705. jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +0 -36
  706. jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +0 -45
  707. jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +0 -4
  708. jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +0 -1936
  709. jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +0 -146
  710. jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +0 -31
  711. jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +0 -208
  712. jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +0 -118
  713. jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +0 -32
  714. jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +0 -20
  715. jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +0 -36
  716. jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +0 -45
  717. jaclang/vendor/mypy/typeshed/stdlib/code.pyi +0 -33
  718. jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +0 -285
  719. jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +0 -13
  720. jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +0 -485
  721. jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +0 -2
  722. jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +0 -13
  723. jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +0 -111
  724. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +0 -32
  725. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +0 -126
  726. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +0 -233
  727. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +0 -80
  728. jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +0 -313
  729. jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +0 -208
  730. jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +0 -63
  731. jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +0 -16
  732. jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +0 -21
  733. jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +0 -12
  734. jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +0 -147
  735. jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +0 -187
  736. jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +0 -19
  737. jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +0 -6
  738. jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +0 -298
  739. jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +0 -22
  740. jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +0 -62
  741. jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +0 -1
  742. jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +0 -22
  743. jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +0 -11
  744. jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +0 -315
  745. jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +0 -295
  746. jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +0 -95
  747. jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +0 -31
  748. jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +0 -41
  749. jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +0 -37
  750. jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +0 -2
  751. jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +0 -140
  752. jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +0 -144
  753. jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +0 -5
  754. jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +0 -20
  755. jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +0 -3
  756. jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +0 -152
  757. jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +0 -66
  758. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +0 -25
  759. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +0 -21
  760. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +0 -45
  761. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +0 -52
  762. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +0 -16
  763. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +0 -31
  764. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +0 -27
  765. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +0 -50
  766. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +0 -44
  767. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +0 -24
  768. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +0 -39
  769. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +0 -17
  770. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +0 -83
  771. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +0 -63
  772. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +0 -19
  773. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +0 -18
  774. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +0 -16
  775. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +0 -25
  776. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +0 -18
  777. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +0 -18
  778. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +0 -42
  779. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +0 -17
  780. jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +0 -17
  781. jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +0 -57
  782. jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +0 -20
  783. jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +0 -1
  784. jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +0 -3
  785. jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +0 -13
  786. jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +0 -146
  787. jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +0 -19
  788. jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +0 -36
  789. jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +0 -34
  790. jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +0 -14
  791. jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +0 -50
  792. jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +0 -25
  793. jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +0 -3
  794. jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +0 -2
  795. jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +0 -31
  796. jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +0 -21
  797. jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +0 -3
  798. jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +0 -46
  799. jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +0 -36
  800. jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +0 -248
  801. jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +0 -2
  802. jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +0 -29
  803. jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +0 -392
  804. jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +0 -51
  805. jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +0 -13
  806. jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +0 -34
  807. jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +0 -11
  808. jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +0 -8
  809. jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +0 -39
  810. jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +0 -23
  811. jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +0 -40
  812. jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +0 -31
  813. jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +0 -178
  814. jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +0 -12
  815. jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +0 -165
  816. jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +0 -17
  817. jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +0 -17
  818. jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +0 -8
  819. jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +0 -17
  820. jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +0 -8
  821. jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +0 -18
  822. jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +0 -5
  823. jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +0 -9
  824. jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +0 -26
  825. jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +0 -38
  826. jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +0 -28
  827. jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +0 -70
  828. jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +0 -10
  829. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +0 -21
  830. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +0 -22
  831. jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +0 -12
  832. jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +0 -320
  833. jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +0 -222
  834. jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +0 -13
  835. jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +0 -127
  836. jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +0 -57
  837. jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +0 -213
  838. jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +0 -9
  839. jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +0 -88
  840. jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +0 -150
  841. jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +0 -178
  842. jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +0 -213
  843. jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +0 -37
  844. jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +0 -52
  845. jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +0 -11
  846. jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +0 -8
  847. jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +0 -169
  848. jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +0 -42
  849. jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +0 -28
  850. jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +0 -22
  851. jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +0 -160
  852. jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +0 -167
  853. jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +0 -17
  854. jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +0 -38
  855. jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +0 -6
  856. jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +0 -6
  857. jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +0 -34
  858. jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +0 -105
  859. jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +0 -259
  860. jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +0 -159
  861. jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +0 -60
  862. jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +0 -83
  863. jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +0 -168
  864. jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +0 -17
  865. jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +0 -62
  866. jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +0 -24
  867. jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +0 -15
  868. jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +0 -172
  869. jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +0 -179
  870. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +0 -285
  871. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +0 -49
  872. jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +0 -68
  873. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +0 -46
  874. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +0 -12
  875. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +0 -14
  876. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +0 -56
  877. jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +0 -11
  878. jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +0 -43
  879. jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +0 -632
  880. jaclang/vendor/mypy/typeshed/stdlib/io.pyi +0 -238
  881. jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +0 -208
  882. jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +0 -273
  883. jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +0 -61
  884. jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +0 -32
  885. jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +0 -40
  886. jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +0 -1
  887. jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +0 -21
  888. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +0 -28
  889. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +0 -42
  890. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +0 -8
  891. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +0 -10
  892. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +0 -8
  893. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +0 -8
  894. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +0 -16
  895. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +0 -14
  896. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +0 -8
  897. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +0 -8
  898. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +0 -13
  899. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +0 -9
  900. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +0 -8
  901. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +0 -8
  902. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +0 -8
  903. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +0 -8
  904. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +0 -15
  905. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +0 -16
  906. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +0 -21
  907. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +0 -6
  908. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +0 -11
  909. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +0 -9
  910. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +0 -8
  911. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +0 -9
  912. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +0 -7
  913. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +0 -7
  914. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +0 -9
  915. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +0 -17
  916. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +0 -10
  917. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +0 -8
  918. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +0 -19
  919. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +0 -8
  920. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +0 -8
  921. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +0 -12
  922. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +0 -8
  923. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +0 -12
  924. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +0 -8
  925. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +0 -8
  926. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +0 -8
  927. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +0 -9
  928. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +0 -17
  929. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +0 -8
  930. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +0 -7
  931. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +0 -8
  932. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +0 -9
  933. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +0 -8
  934. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +0 -17
  935. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +0 -8
  936. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +0 -12
  937. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +0 -15
  938. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +0 -12
  939. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +0 -20
  940. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +0 -8
  941. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +0 -9
  942. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +0 -42
  943. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +0 -9
  944. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +0 -27
  945. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +0 -24
  946. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +0 -7
  947. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +0 -30
  948. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +0 -50
  949. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +0 -67
  950. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +0 -96
  951. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +0 -114
  952. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +0 -117
  953. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +0 -82
  954. jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +0 -23
  955. jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +0 -152
  956. jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +0 -658
  957. jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +0 -134
  958. jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +0 -275
  959. jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +0 -197
  960. jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +0 -256
  961. jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +0 -11
  962. jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +0 -33
  963. jaclang/vendor/mypy/typeshed/stdlib/math.pyi +0 -125
  964. jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +0 -46
  965. jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +0 -113
  966. jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +0 -66
  967. jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +0 -177
  968. jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +0 -94
  969. jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +0 -13
  970. jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +0 -7
  971. jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +0 -32
  972. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +0 -90
  973. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +0 -75
  974. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +0 -189
  975. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +0 -77
  976. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +0 -39
  977. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +0 -31
  978. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +0 -36
  979. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +0 -212
  980. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +0 -103
  981. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +0 -23
  982. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +0 -16
  983. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +0 -20
  984. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +0 -30
  985. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +0 -39
  986. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +0 -41
  987. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +0 -90
  988. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +0 -20
  989. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +0 -18
  990. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +0 -40
  991. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +0 -107
  992. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +0 -32
  993. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +0 -54
  994. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +0 -98
  995. jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +0 -23
  996. jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +0 -9
  997. jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +0 -125
  998. jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +0 -111
  999. jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +0 -119
  1000. jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +0 -2
  1001. jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +0 -209
  1002. jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +0 -59
  1003. jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +0 -110
  1004. jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +0 -255
  1005. jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +0 -1157
  1006. jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +0 -8
  1007. jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +0 -131
  1008. jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +0 -24
  1009. jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +0 -232
  1010. jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +0 -181
  1011. jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +0 -271
  1012. jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +0 -167
  1013. jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +0 -16
  1014. jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +0 -53
  1015. jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +0 -42
  1016. jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +0 -113
  1017. jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +0 -71
  1018. jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +0 -361
  1019. jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +0 -161
  1020. jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +0 -112
  1021. jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +0 -31
  1022. jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +0 -80
  1023. jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +0 -19
  1024. jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +0 -28
  1025. jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +0 -34
  1026. jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +0 -74
  1027. jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +0 -261
  1028. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  1029. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +0 -1
  1030. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +0 -85
  1031. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +0 -49
  1032. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +0 -11
  1033. jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +0 -66
  1034. jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +0 -11
  1035. jaclang/vendor/mypy/typeshed/stdlib/random.pyi +0 -138
  1036. jaclang/vendor/mypy/typeshed/stdlib/re.pyi +0 -290
  1037. jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +0 -36
  1038. jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +0 -65
  1039. jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +0 -94
  1040. jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +0 -9
  1041. jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +0 -24
  1042. jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +0 -42
  1043. jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +0 -15
  1044. jaclang/vendor/mypy/typeshed/stdlib/select.pyi +0 -155
  1045. jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +0 -67
  1046. jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +0 -46
  1047. jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +0 -63
  1048. jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +0 -185
  1049. jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +0 -188
  1050. jaclang/vendor/mypy/typeshed/stdlib/site.pyi +0 -27
  1051. jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +0 -91
  1052. jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +0 -204
  1053. jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +0 -14
  1054. jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +0 -825
  1055. jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +0 -168
  1056. jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +0 -41
  1057. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +0 -1
  1058. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +0 -551
  1059. jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +0 -11
  1060. jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +0 -130
  1061. jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +0 -104
  1062. jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +0 -537
  1063. jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +0 -1
  1064. jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +0 -132
  1065. jaclang/vendor/mypy/typeshed/stdlib/string.pyi +0 -83
  1066. jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +0 -27
  1067. jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +0 -26
  1068. jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +0 -2615
  1069. jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +0 -86
  1070. jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +0 -93
  1071. jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +0 -58
  1072. jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +0 -373
  1073. jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +0 -52
  1074. jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +0 -48
  1075. jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +0 -46
  1076. jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +0 -16
  1077. jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +0 -441
  1078. jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +0 -122
  1079. jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +0 -477
  1080. jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +0 -267
  1081. jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +0 -103
  1082. jaclang/vendor/mypy/typeshed/stdlib/this.pyi +0 -2
  1083. jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +0 -187
  1084. jaclang/vendor/mypy/typeshed/stdlib/time.pyi +0 -108
  1085. jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +0 -32
  1086. jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +0 -3654
  1087. jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +0 -20
  1088. jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +0 -14
  1089. jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +0 -80
  1090. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +0 -16
  1091. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +0 -20
  1092. jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +0 -151
  1093. jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +0 -116
  1094. jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +0 -44
  1095. jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +0 -9
  1096. jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +0 -54
  1097. jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +0 -299
  1098. jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +0 -1204
  1099. jaclang/vendor/mypy/typeshed/stdlib/token.pyi +0 -159
  1100. jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +0 -177
  1101. jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +0 -10
  1102. jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +0 -79
  1103. jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +0 -262
  1104. jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +0 -124
  1105. jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +0 -30
  1106. jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +0 -713
  1107. jaclang/vendor/mypy/typeshed/stdlib/types.pyi +0 -614
  1108. jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +0 -976
  1109. jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +0 -509
  1110. jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +0 -73
  1111. jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +0 -67
  1112. jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +0 -27
  1113. jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +0 -21
  1114. jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +0 -342
  1115. jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +0 -51
  1116. jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +0 -69
  1117. jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +0 -430
  1118. jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +0 -47
  1119. jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +0 -72
  1120. jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +0 -15
  1121. jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +0 -22
  1122. jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +0 -23
  1123. jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  1124. jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +0 -23
  1125. jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +0 -210
  1126. jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +0 -400
  1127. jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +0 -43
  1128. jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +0 -20
  1129. jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +0 -13
  1130. jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +0 -100
  1131. jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +0 -112
  1132. jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +0 -85
  1133. jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +0 -149
  1134. jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +0 -74
  1135. jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +0 -132
  1136. jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +0 -28
  1137. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  1138. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +0 -91
  1139. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +0 -26
  1140. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +0 -37
  1141. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +0 -32
  1142. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +0 -24
  1143. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +0 -50
  1144. jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +0 -57
  1145. jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +0 -1
  1146. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +0 -19
  1147. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +0 -69
  1148. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +0 -8
  1149. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +0 -100
  1150. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +0 -22
  1151. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +0 -404
  1152. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +0 -94
  1153. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +0 -108
  1154. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +0 -28
  1155. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +0 -34
  1156. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +0 -327
  1157. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  1158. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +0 -1
  1159. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +0 -1
  1160. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +0 -1
  1161. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +0 -1
  1162. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +0 -1
  1163. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +0 -25
  1164. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +0 -19
  1165. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +0 -55
  1166. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +0 -60
  1167. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +0 -87
  1168. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  1169. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +0 -296
  1170. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +0 -143
  1171. jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +0 -22
  1172. jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +0 -20
  1173. jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +0 -306
  1174. jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +0 -95
  1175. jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +0 -32
  1176. jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +0 -56
  1177. jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +0 -38
  1178. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +0 -218
  1179. jaclang/vendor/mypy/typestate.py +0 -323
  1180. jaclang/vendor/mypy/typetraverser.py +0 -148
  1181. jaclang/vendor/mypy/typevars.py +0 -93
  1182. jaclang/vendor/mypy/typevartuples.py +0 -32
  1183. jaclang/vendor/mypy/util.py +0 -869
  1184. jaclang/vendor/mypy/version.py +0 -1
  1185. jaclang/vendor/mypy/visitor.py +0 -621
  1186. jaclang/vendor/mypy/xml/mypy-html.css +0 -104
  1187. jaclang/vendor/mypy/xml/mypy-html.xslt +0 -81
  1188. jaclang/vendor/mypy/xml/mypy-txt.xslt +0 -100
  1189. jaclang/vendor/mypy/xml/mypy.xsd +0 -50
  1190. jaclang/vendor/mypy-1.10.0.dist-info/LICENSE +0 -229
  1191. jaclang/vendor/mypy-1.10.0.dist-info/METADATA +0 -48
  1192. jaclang/vendor/mypy-1.10.0.dist-info/RECORD +0 -1241
  1193. jaclang/vendor/mypy-1.10.0.dist-info/WHEEL +0 -6
  1194. jaclang/vendor/mypy-1.10.0.dist-info/entry_points.txt +0 -6
  1195. jaclang/vendor/mypy-1.10.0.dist-info/top_level.txt +0 -3
  1196. jaclang/vendor/mypy_extensions-1.0.0.dist-info/LICENSE +0 -27
  1197. jaclang/vendor/mypy_extensions-1.0.0.dist-info/METADATA +0 -29
  1198. jaclang/vendor/mypy_extensions-1.0.0.dist-info/RECORD +0 -6
  1199. jaclang/vendor/mypy_extensions-1.0.0.dist-info/top_level.txt +0 -1
  1200. jaclang/vendor/mypy_extensions.py +0 -213
  1201. jaclang/vendor/mypyc/README.md +0 -133
  1202. jaclang/vendor/mypyc/__init__.py +0 -0
  1203. jaclang/vendor/mypyc/__main__.py +0 -57
  1204. jaclang/vendor/mypyc/analysis/__init__.py +0 -0
  1205. jaclang/vendor/mypyc/analysis/attrdefined.py +0 -436
  1206. jaclang/vendor/mypyc/analysis/blockfreq.py +0 -32
  1207. jaclang/vendor/mypyc/analysis/dataflow.py +0 -628
  1208. jaclang/vendor/mypyc/analysis/ircheck.py +0 -433
  1209. jaclang/vendor/mypyc/analysis/selfleaks.py +0 -211
  1210. jaclang/vendor/mypyc/build.py +0 -616
  1211. jaclang/vendor/mypyc/codegen/__init__.py +0 -0
  1212. jaclang/vendor/mypyc/codegen/cstring.py +0 -54
  1213. jaclang/vendor/mypyc/codegen/emit.py +0 -1193
  1214. jaclang/vendor/mypyc/codegen/emitclass.py +0 -1060
  1215. jaclang/vendor/mypyc/codegen/emitfunc.py +0 -852
  1216. jaclang/vendor/mypyc/codegen/emitmodule.py +0 -1136
  1217. jaclang/vendor/mypyc/codegen/emitwrapper.py +0 -979
  1218. jaclang/vendor/mypyc/codegen/literals.py +0 -302
  1219. jaclang/vendor/mypyc/common.py +0 -136
  1220. jaclang/vendor/mypyc/crash.py +0 -31
  1221. jaclang/vendor/mypyc/doc/Makefile +0 -20
  1222. jaclang/vendor/mypyc/doc/bool_operations.rst +0 -27
  1223. jaclang/vendor/mypyc/doc/compilation_units.rst +0 -20
  1224. jaclang/vendor/mypyc/doc/conf.py +0 -59
  1225. jaclang/vendor/mypyc/doc/cpython-timings.md +0 -25
  1226. jaclang/vendor/mypyc/doc/dev-intro.md +0 -548
  1227. jaclang/vendor/mypyc/doc/dict_operations.rst +0 -59
  1228. jaclang/vendor/mypyc/doc/differences_from_python.rst +0 -332
  1229. jaclang/vendor/mypyc/doc/float_operations.rst +0 -50
  1230. jaclang/vendor/mypyc/doc/future.md +0 -42
  1231. jaclang/vendor/mypyc/doc/getting_started.rst +0 -240
  1232. jaclang/vendor/mypyc/doc/index.rst +0 -61
  1233. jaclang/vendor/mypyc/doc/int_operations.rst +0 -162
  1234. jaclang/vendor/mypyc/doc/introduction.rst +0 -150
  1235. jaclang/vendor/mypyc/doc/list_operations.rst +0 -65
  1236. jaclang/vendor/mypyc/doc/make.bat +0 -35
  1237. jaclang/vendor/mypyc/doc/native_classes.rst +0 -206
  1238. jaclang/vendor/mypyc/doc/native_operations.rst +0 -55
  1239. jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +0 -244
  1240. jaclang/vendor/mypyc/doc/set_operations.rst +0 -47
  1241. jaclang/vendor/mypyc/doc/str_operations.rst +0 -35
  1242. jaclang/vendor/mypyc/doc/tuple_operations.rst +0 -33
  1243. jaclang/vendor/mypyc/doc/using_type_annotations.rst +0 -398
  1244. jaclang/vendor/mypyc/errors.py +0 -29
  1245. jaclang/vendor/mypyc/external/googletest/LICENSE +0 -28
  1246. jaclang/vendor/mypyc/external/googletest/README.md +0 -280
  1247. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +0 -294
  1248. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +0 -250
  1249. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +0 -1444
  1250. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +0 -510
  1251. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +0 -993
  1252. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +0 -232
  1253. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +0 -179
  1254. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +0 -263
  1255. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +0 -2236
  1256. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +0 -358
  1257. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +0 -58
  1258. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +0 -69
  1259. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +0 -42
  1260. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +0 -41
  1261. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +0 -319
  1262. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +0 -206
  1263. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +0 -1238
  1264. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
  1265. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5146
  1266. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -286
  1267. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +0 -731
  1268. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +0 -93
  1269. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +0 -2560
  1270. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +0 -167
  1271. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
  1272. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
  1273. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +0 -3331
  1274. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +0 -297
  1275. jaclang/vendor/mypyc/external/googletest/make/Makefile +0 -61
  1276. jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +0 -48
  1277. jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +0 -1342
  1278. jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +0 -387
  1279. jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +0 -1183
  1280. jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +0 -1259
  1281. jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +0 -373
  1282. jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +0 -110
  1283. jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +0 -118
  1284. jaclang/vendor/mypyc/external/googletest/src/gtest.cc +0 -5388
  1285. jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +0 -38
  1286. jaclang/vendor/mypyc/ir/__init__.py +0 -0
  1287. jaclang/vendor/mypyc/ir/class_ir.py +0 -499
  1288. jaclang/vendor/mypyc/ir/func_ir.py +0 -370
  1289. jaclang/vendor/mypyc/ir/module_ir.py +0 -88
  1290. jaclang/vendor/mypyc/ir/ops.py +0 -1727
  1291. jaclang/vendor/mypyc/ir/pprint.py +0 -516
  1292. jaclang/vendor/mypyc/ir/rtypes.py +0 -1038
  1293. jaclang/vendor/mypyc/irbuild/__init__.py +0 -0
  1294. jaclang/vendor/mypyc/irbuild/ast_helpers.py +0 -123
  1295. jaclang/vendor/mypyc/irbuild/builder.py +0 -1394
  1296. jaclang/vendor/mypyc/irbuild/callable_class.py +0 -173
  1297. jaclang/vendor/mypyc/irbuild/classdef.py +0 -850
  1298. jaclang/vendor/mypyc/irbuild/constant_fold.py +0 -95
  1299. jaclang/vendor/mypyc/irbuild/context.py +0 -186
  1300. jaclang/vendor/mypyc/irbuild/env_class.py +0 -223
  1301. jaclang/vendor/mypyc/irbuild/expression.py +0 -1070
  1302. jaclang/vendor/mypyc/irbuild/for_helpers.py +0 -1075
  1303. jaclang/vendor/mypyc/irbuild/format_str_tokenizer.py +0 -250
  1304. jaclang/vendor/mypyc/irbuild/function.py +0 -1088
  1305. jaclang/vendor/mypyc/irbuild/generator.py +0 -346
  1306. jaclang/vendor/mypyc/irbuild/ll_builder.py +0 -2389
  1307. jaclang/vendor/mypyc/irbuild/main.py +0 -153
  1308. jaclang/vendor/mypyc/irbuild/mapper.py +0 -221
  1309. jaclang/vendor/mypyc/irbuild/match.py +0 -355
  1310. jaclang/vendor/mypyc/irbuild/nonlocalcontrol.py +0 -197
  1311. jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +0 -203
  1312. jaclang/vendor/mypyc/irbuild/prepare.py +0 -609
  1313. jaclang/vendor/mypyc/irbuild/specialize.py +0 -822
  1314. jaclang/vendor/mypyc/irbuild/statement.py +0 -1017
  1315. jaclang/vendor/mypyc/irbuild/targets.py +0 -57
  1316. jaclang/vendor/mypyc/irbuild/util.py +0 -189
  1317. jaclang/vendor/mypyc/irbuild/visitor.py +0 -401
  1318. jaclang/vendor/mypyc/irbuild/vtable.py +0 -82
  1319. jaclang/vendor/mypyc/lib-rt/CPy.h +0 -638
  1320. jaclang/vendor/mypyc/lib-rt/bytes_ops.c +0 -143
  1321. jaclang/vendor/mypyc/lib-rt/dict_ops.c +0 -446
  1322. jaclang/vendor/mypyc/lib-rt/exc_ops.c +0 -259
  1323. jaclang/vendor/mypyc/lib-rt/float_ops.c +0 -192
  1324. jaclang/vendor/mypyc/lib-rt/generic_ops.c +0 -64
  1325. jaclang/vendor/mypyc/lib-rt/getargs.c +0 -450
  1326. jaclang/vendor/mypyc/lib-rt/getargsfast.c +0 -569
  1327. jaclang/vendor/mypyc/lib-rt/init.c +0 -13
  1328. jaclang/vendor/mypyc/lib-rt/int_ops.c +0 -803
  1329. jaclang/vendor/mypyc/lib-rt/list_ops.c +0 -335
  1330. jaclang/vendor/mypyc/lib-rt/misc_ops.c +0 -942
  1331. jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +0 -18
  1332. jaclang/vendor/mypyc/lib-rt/mypyc_util.h +0 -118
  1333. jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +0 -497
  1334. jaclang/vendor/mypyc/lib-rt/pythonsupport.h +0 -533
  1335. jaclang/vendor/mypyc/lib-rt/set_ops.c +0 -17
  1336. jaclang/vendor/mypyc/lib-rt/setup.py +0 -70
  1337. jaclang/vendor/mypyc/lib-rt/str_ops.c +0 -241
  1338. jaclang/vendor/mypyc/lib-rt/test_capi.cc +0 -585
  1339. jaclang/vendor/mypyc/lib-rt/tuple_ops.c +0 -61
  1340. jaclang/vendor/mypyc/lower/__init__.py +0 -0
  1341. jaclang/vendor/mypyc/lower/int_ops.py +0 -113
  1342. jaclang/vendor/mypyc/lower/list_ops.py +0 -45
  1343. jaclang/vendor/mypyc/lower/misc_ops.py +0 -12
  1344. jaclang/vendor/mypyc/lower/registry.py +0 -26
  1345. jaclang/vendor/mypyc/namegen.py +0 -115
  1346. jaclang/vendor/mypyc/options.py +0 -32
  1347. jaclang/vendor/mypyc/primitives/__init__.py +0 -0
  1348. jaclang/vendor/mypyc/primitives/bytes_ops.py +0 -101
  1349. jaclang/vendor/mypyc/primitives/dict_ops.py +0 -325
  1350. jaclang/vendor/mypyc/primitives/exc_ops.py +0 -101
  1351. jaclang/vendor/mypyc/primitives/float_ops.py +0 -168
  1352. jaclang/vendor/mypyc/primitives/generic_ops.py +0 -384
  1353. jaclang/vendor/mypyc/primitives/int_ops.py +0 -303
  1354. jaclang/vendor/mypyc/primitives/list_ops.py +0 -310
  1355. jaclang/vendor/mypyc/primitives/misc_ops.py +0 -267
  1356. jaclang/vendor/mypyc/primitives/registry.py +0 -360
  1357. jaclang/vendor/mypyc/primitives/set_ops.py +0 -121
  1358. jaclang/vendor/mypyc/primitives/str_ops.py +0 -229
  1359. jaclang/vendor/mypyc/primitives/tuple_ops.py +0 -83
  1360. jaclang/vendor/mypyc/rt_subtype.py +0 -77
  1361. jaclang/vendor/mypyc/sametype.py +0 -83
  1362. jaclang/vendor/mypyc/subtype.py +0 -88
  1363. jaclang/vendor/mypyc/test/__init__.py +0 -0
  1364. jaclang/vendor/mypyc/test/config.py +0 -13
  1365. jaclang/vendor/mypyc/test/test_alwaysdefined.py +0 -46
  1366. jaclang/vendor/mypyc/test/test_analysis.py +0 -77
  1367. jaclang/vendor/mypyc/test/test_cheader.py +0 -53
  1368. jaclang/vendor/mypyc/test/test_commandline.py +0 -82
  1369. jaclang/vendor/mypyc/test/test_emit.py +0 -69
  1370. jaclang/vendor/mypyc/test/test_emitclass.py +0 -35
  1371. jaclang/vendor/mypyc/test/test_emitfunc.py +0 -928
  1372. jaclang/vendor/mypyc/test/test_emitwrapper.py +0 -60
  1373. jaclang/vendor/mypyc/test/test_exceptions.py +0 -56
  1374. jaclang/vendor/mypyc/test/test_external.py +0 -49
  1375. jaclang/vendor/mypyc/test/test_irbuild.py +0 -87
  1376. jaclang/vendor/mypyc/test/test_ircheck.py +0 -199
  1377. jaclang/vendor/mypyc/test/test_literals.py +0 -90
  1378. jaclang/vendor/mypyc/test/test_lowering.py +0 -56
  1379. jaclang/vendor/mypyc/test/test_namegen.py +0 -48
  1380. jaclang/vendor/mypyc/test/test_optimizations.py +0 -68
  1381. jaclang/vendor/mypyc/test/test_pprint.py +0 -42
  1382. jaclang/vendor/mypyc/test/test_rarray.py +0 -48
  1383. jaclang/vendor/mypyc/test/test_refcount.py +0 -59
  1384. jaclang/vendor/mypyc/test/test_run.py +0 -426
  1385. jaclang/vendor/mypyc/test/test_serialization.py +0 -108
  1386. jaclang/vendor/mypyc/test/test_struct.py +0 -112
  1387. jaclang/vendor/mypyc/test/test_tuplename.py +0 -33
  1388. jaclang/vendor/mypyc/test/test_typeops.py +0 -97
  1389. jaclang/vendor/mypyc/test/testutil.py +0 -283
  1390. jaclang/vendor/mypyc/test-data/alwaysdefined.test +0 -732
  1391. jaclang/vendor/mypyc/test-data/analysis.test +0 -470
  1392. jaclang/vendor/mypyc/test-data/commandline.test +0 -245
  1393. jaclang/vendor/mypyc/test-data/driver/driver.py +0 -48
  1394. jaclang/vendor/mypyc/test-data/exceptions-freq.test +0 -125
  1395. jaclang/vendor/mypyc/test-data/exceptions.test +0 -699
  1396. jaclang/vendor/mypyc/test-data/fixtures/ir.py +0 -373
  1397. jaclang/vendor/mypyc/test-data/fixtures/testutil.py +0 -103
  1398. jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +0 -169
  1399. jaclang/vendor/mypyc/test-data/irbuild-any.test +0 -236
  1400. jaclang/vendor/mypyc/test-data/irbuild-basic.test +0 -3399
  1401. jaclang/vendor/mypyc/test-data/irbuild-bool.test +0 -424
  1402. jaclang/vendor/mypyc/test-data/irbuild-bytes.test +0 -181
  1403. jaclang/vendor/mypyc/test-data/irbuild-classes.test +0 -1302
  1404. jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +0 -480
  1405. jaclang/vendor/mypyc/test-data/irbuild-dict.test +0 -584
  1406. jaclang/vendor/mypyc/test-data/irbuild-dunders.test +0 -215
  1407. jaclang/vendor/mypyc/test-data/irbuild-float.test +0 -497
  1408. jaclang/vendor/mypyc/test-data/irbuild-generics.test +0 -150
  1409. jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +0 -437
  1410. jaclang/vendor/mypyc/test-data/irbuild-i16.test +0 -526
  1411. jaclang/vendor/mypyc/test-data/irbuild-i32.test +0 -598
  1412. jaclang/vendor/mypyc/test-data/irbuild-i64.test +0 -2144
  1413. jaclang/vendor/mypyc/test-data/irbuild-int.test +0 -194
  1414. jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +0 -109
  1415. jaclang/vendor/mypyc/test-data/irbuild-lists.test +0 -513
  1416. jaclang/vendor/mypyc/test-data/irbuild-match.test +0 -1717
  1417. jaclang/vendor/mypyc/test-data/irbuild-math.test +0 -64
  1418. jaclang/vendor/mypyc/test-data/irbuild-nested.test +0 -807
  1419. jaclang/vendor/mypyc/test-data/irbuild-optional.test +0 -536
  1420. jaclang/vendor/mypyc/test-data/irbuild-set.test +0 -806
  1421. jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +0 -257
  1422. jaclang/vendor/mypyc/test-data/irbuild-statements.test +0 -1060
  1423. jaclang/vendor/mypyc/test-data/irbuild-str.test +0 -312
  1424. jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +0 -12
  1425. jaclang/vendor/mypyc/test-data/irbuild-try.test +0 -523
  1426. jaclang/vendor/mypyc/test-data/irbuild-tuple.test +0 -386
  1427. jaclang/vendor/mypyc/test-data/irbuild-u8.test +0 -543
  1428. jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +0 -241
  1429. jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +0 -153
  1430. jaclang/vendor/mypyc/test-data/lowering-int.test +0 -377
  1431. jaclang/vendor/mypyc/test-data/lowering-list.test +0 -33
  1432. jaclang/vendor/mypyc/test-data/opt-copy-propagation.test +0 -400
  1433. jaclang/vendor/mypyc/test-data/opt-flag-elimination.test +0 -296
  1434. jaclang/vendor/mypyc/test-data/refcount.test +0 -1482
  1435. jaclang/vendor/mypyc/test-data/run-async.test +0 -173
  1436. jaclang/vendor/mypyc/test-data/run-attrs.test +0 -318
  1437. jaclang/vendor/mypyc/test-data/run-bench.test +0 -196
  1438. jaclang/vendor/mypyc/test-data/run-bools.test +0 -229
  1439. jaclang/vendor/mypyc/test-data/run-bytes.test +0 -302
  1440. jaclang/vendor/mypyc/test-data/run-classes.test +0 -2505
  1441. jaclang/vendor/mypyc/test-data/run-dicts.test +0 -334
  1442. jaclang/vendor/mypyc/test-data/run-dunders.test +0 -945
  1443. jaclang/vendor/mypyc/test-data/run-exceptions.test +0 -448
  1444. jaclang/vendor/mypyc/test-data/run-floats.test +0 -516
  1445. jaclang/vendor/mypyc/test-data/run-functions.test +0 -1310
  1446. jaclang/vendor/mypyc/test-data/run-generators.test +0 -682
  1447. jaclang/vendor/mypyc/test-data/run-i16.test +0 -338
  1448. jaclang/vendor/mypyc/test-data/run-i32.test +0 -336
  1449. jaclang/vendor/mypyc/test-data/run-i64.test +0 -1519
  1450. jaclang/vendor/mypyc/test-data/run-imports.test +0 -265
  1451. jaclang/vendor/mypyc/test-data/run-integers.test +0 -540
  1452. jaclang/vendor/mypyc/test-data/run-lists.test +0 -411
  1453. jaclang/vendor/mypyc/test-data/run-loops.test +0 -485
  1454. jaclang/vendor/mypyc/test-data/run-match.test +0 -283
  1455. jaclang/vendor/mypyc/test-data/run-math.test +0 -106
  1456. jaclang/vendor/mypyc/test-data/run-misc.test +0 -1170
  1457. jaclang/vendor/mypyc/test-data/run-multimodule.test +0 -887
  1458. jaclang/vendor/mypyc/test-data/run-mypy-sim.test +0 -138
  1459. jaclang/vendor/mypyc/test-data/run-primitives.test +0 -375
  1460. jaclang/vendor/mypyc/test-data/run-python37.test +0 -159
  1461. jaclang/vendor/mypyc/test-data/run-python38.test +0 -88
  1462. jaclang/vendor/mypyc/test-data/run-sets.test +0 -150
  1463. jaclang/vendor/mypyc/test-data/run-singledispatch.test +0 -698
  1464. jaclang/vendor/mypyc/test-data/run-strings.test +0 -641
  1465. jaclang/vendor/mypyc/test-data/run-traits.test +0 -411
  1466. jaclang/vendor/mypyc/test-data/run-tuples.test +0 -258
  1467. jaclang/vendor/mypyc/test-data/run-u8.test +0 -303
  1468. jaclang/vendor/mypyc/transform/__init__.py +0 -0
  1469. jaclang/vendor/mypyc/transform/copy_propagation.py +0 -94
  1470. jaclang/vendor/mypyc/transform/exceptions.py +0 -182
  1471. jaclang/vendor/mypyc/transform/flag_elimination.py +0 -108
  1472. jaclang/vendor/mypyc/transform/ir_transform.py +0 -368
  1473. jaclang/vendor/mypyc/transform/lower.py +0 -33
  1474. jaclang/vendor/mypyc/transform/refcount.py +0 -294
  1475. jaclang/vendor/mypyc/transform/uninit.py +0 -190
  1476. jaclang/vendor/typing_extensions-4.12.2.dist-info/LICENSE +0 -279
  1477. jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA +0 -67
  1478. jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD +0 -5
  1479. jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL +0 -4
  1480. jaclang/vendor/typing_extensions.py +0 -3641
  1481. jaclang-0.7.34.dist-info/RECORD +0 -1563
  1482. /jaclang/{vendor/mypy/dmypy → compiler/larkparse}/__init__.py +0 -0
  1483. /jaclang/{tests → compiler/passes/main/tests}/fixtures/access_checker.jac +0 -0
  1484. /jaclang/langserve/{__init__.py → __init__.jac} +0 -0
  1485. /jaclang/{vendor/mypy/plugins/__init__.py → langserve/tests/fixtures/deep_check_crash.jac} +0 -0
  1486. /jaclang/{vendor/mypy/server/__init__.py → langserve/tests/server_test/code_test.py} +0 -0
  1487. /jaclang/{plugin → runtimelib}/tests/__init__.py +0 -0
  1488. /jaclang/{vendor/mypy/test → tests}/__init__.py +0 -0
  1489. /jaclang/{vendor/mypy/test/meta → tests/fixtures}/__init__.py +0 -0
  1490. /jaclang/tests/fixtures/{architype_def_bug.jac → archetype_def_bug.jac} +0 -0
  1491. /jaclang/vendor/{mypy/typeshed/stdlib/concurrent/__init__.pyi → attrs-25.3.0.dist-info/REQUESTED} +0 -0
  1492. /jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/licenses/LICENSE +0 -0
  1493. /jaclang/vendor/{mypy/typeshed/stdlib/distutils/command/__init__.pyi → cattrs-24.1.3.dist-info/REQUESTED} +0 -0
  1494. /jaclang/vendor/{cattrs-23.2.3.dist-info → cattrs-24.1.3.dist-info}/licenses/LICENSE +0 -0
  1495. /jaclang/vendor/{mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi → lark-1.2.2.dist-info/REQUESTED} +0 -0
  1496. /jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/entry_points.txt +0 -0
  1497. /jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/top_level.txt +0 -0
  1498. /jaclang/vendor/{mypy/typeshed/stdlib/email/mime/__init__.pyi → lsprotocol-2023.0.1.dist-info/REQUESTED} +0 -0
  1499. /jaclang/vendor/lsprotocol-2023.0.1.dist-info/{LICENSE → licenses/LICENSE} +0 -0
  1500. /jaclang/vendor/{mypy/typeshed/stdlib/lib2to3/__init__.pyi → pluggy-1.5.0.dist-info/REQUESTED} +0 -0
  1501. /jaclang/vendor/pluggy-1.5.0.dist-info/{LICENSE → licenses/LICENSE} +0 -0
  1502. /jaclang/vendor/{mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi → pygls-1.3.1.dist-info/REQUESTED} +0 -0
  1503. {jaclang-0.7.34.dist-info → jaclang-0.8.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,3444 @@
1
+ # The file was automatically generated by Lark v1.2.2
2
+ __version__ = "1.2.2"
3
+
4
+ #
5
+ #
6
+ # Lark Stand-alone Generator Tool
7
+ # ----------------------------------
8
+ # Generates a stand-alone LALR(1) parser
9
+ #
10
+ # Git: https://github.com/erezsh/lark
11
+ # Author: Erez Shinan (erezshin@gmail.com)
12
+ #
13
+ #
14
+ # >>> LICENSE
15
+ #
16
+ # This tool and its generated code use a separate license from Lark,
17
+ # and are subject to the terms of the Mozilla Public License, v. 2.0.
18
+ # If a copy of the MPL was not distributed with this
19
+ # file, You can obtain one at https://mozilla.org/MPL/2.0/.
20
+ #
21
+ # If you wish to purchase a commercial license for this tool and its
22
+ # generated code, you may contact me via email or otherwise.
23
+ #
24
+ # If MPL2 is incompatible with your free or open-source project,
25
+ # contact me and we'll work it out.
26
+ #
27
+ #
28
+
29
+ from copy import deepcopy
30
+ from abc import ABC, abstractmethod
31
+ from types import ModuleType
32
+ from typing import (
33
+ TypeVar, Generic, Type, Tuple, List, Dict, Iterator, Collection, Callable, Optional, FrozenSet, Any,
34
+ Union, Iterable, IO, TYPE_CHECKING, overload, Sequence,
35
+ Pattern as REPattern, ClassVar, Set, Mapping
36
+ )
37
+
38
+
39
+ class LarkError(Exception):
40
+ pass
41
+
42
+
43
+ class ConfigurationError(LarkError, ValueError):
44
+ pass
45
+
46
+
47
+ def assert_config(value, options: Collection, msg='Got %r, expected one of %s'):
48
+ if value not in options:
49
+ raise ConfigurationError(msg % (value, options))
50
+
51
+
52
+ class GrammarError(LarkError):
53
+ pass
54
+
55
+
56
+ class ParseError(LarkError):
57
+ pass
58
+
59
+
60
+ class LexError(LarkError):
61
+ pass
62
+
63
+ T = TypeVar('T')
64
+
65
+ class UnexpectedInput(LarkError):
66
+ #--
67
+ line: int
68
+ column: int
69
+ pos_in_stream = None
70
+ state: Any
71
+ _terminals_by_name = None
72
+ interactive_parser: 'InteractiveParser'
73
+
74
+ def get_context(self, text: str, span: int=40) -> str:
75
+ #--
76
+ assert self.pos_in_stream is not None, self
77
+ pos = self.pos_in_stream
78
+ start = max(pos - span, 0)
79
+ end = pos + span
80
+ if not isinstance(text, bytes):
81
+ before = text[start:pos].rsplit('\n', 1)[-1]
82
+ after = text[pos:end].split('\n', 1)[0]
83
+ return before + after + '\n' + ' ' * len(before.expandtabs()) + '^\n'
84
+ else:
85
+ before = text[start:pos].rsplit(b'\n', 1)[-1]
86
+ after = text[pos:end].split(b'\n', 1)[0]
87
+ return (before + after + b'\n' + b' ' * len(before.expandtabs()) + b'^\n').decode("ascii", "backslashreplace")
88
+
89
+ def match_examples(self, parse_fn: 'Callable[[str], Tree]',
90
+ examples: Union[Mapping[T, Iterable[str]], Iterable[Tuple[T, Iterable[str]]]],
91
+ token_type_match_fallback: bool=False,
92
+ use_accepts: bool=True
93
+ ) -> Optional[T]:
94
+ #--
95
+ assert self.state is not None, "Not supported for this exception"
96
+
97
+ if isinstance(examples, Mapping):
98
+ examples = examples.items()
99
+
100
+ candidate = (None, False)
101
+ for i, (label, example) in enumerate(examples):
102
+ assert not isinstance(example, str), "Expecting a list"
103
+
104
+ for j, malformed in enumerate(example):
105
+ try:
106
+ parse_fn(malformed)
107
+ except UnexpectedInput as ut:
108
+ if ut.state == self.state:
109
+ if (
110
+ use_accepts
111
+ and isinstance(self, UnexpectedToken)
112
+ and isinstance(ut, UnexpectedToken)
113
+ and ut.accepts != self.accepts
114
+ ):
115
+ logger.debug("Different accepts with same state[%d]: %s != %s at example [%s][%s]" %
116
+ (self.state, self.accepts, ut.accepts, i, j))
117
+ continue
118
+ if (
119
+ isinstance(self, (UnexpectedToken, UnexpectedEOF))
120
+ and isinstance(ut, (UnexpectedToken, UnexpectedEOF))
121
+ ):
122
+ if ut.token == self.token: ##
123
+
124
+ logger.debug("Exact Match at example [%s][%s]" % (i, j))
125
+ return label
126
+
127
+ if token_type_match_fallback:
128
+ ##
129
+
130
+ if (ut.token.type == self.token.type) and not candidate[-1]:
131
+ logger.debug("Token Type Fallback at example [%s][%s]" % (i, j))
132
+ candidate = label, True
133
+
134
+ if candidate[0] is None:
135
+ logger.debug("Same State match at example [%s][%s]" % (i, j))
136
+ candidate = label, False
137
+
138
+ return candidate[0]
139
+
140
+ def _format_expected(self, expected):
141
+ if self._terminals_by_name:
142
+ d = self._terminals_by_name
143
+ expected = [d[t_name].user_repr() if t_name in d else t_name for t_name in expected]
144
+ return "Expected one of: \n\t* %s\n" % '\n\t* '.join(expected)
145
+
146
+
147
+ class UnexpectedEOF(ParseError, UnexpectedInput):
148
+ #--
149
+ expected: 'List[Token]'
150
+
151
+ def __init__(self, expected, state=None, terminals_by_name=None):
152
+ super(UnexpectedEOF, self).__init__()
153
+
154
+ self.expected = expected
155
+ self.state = state
156
+ from .lexer import Token
157
+ self.token = Token("<EOF>", "") ##
158
+
159
+ self.pos_in_stream = -1
160
+ self.line = -1
161
+ self.column = -1
162
+ self._terminals_by_name = terminals_by_name
163
+
164
+
165
+ def __str__(self):
166
+ message = "Unexpected end-of-input. "
167
+ message += self._format_expected(self.expected)
168
+ return message
169
+
170
+
171
+ class UnexpectedCharacters(LexError, UnexpectedInput):
172
+ #--
173
+
174
+ allowed: Set[str]
175
+ considered_tokens: Set[Any]
176
+
177
+ def __init__(self, seq, lex_pos, line, column, allowed=None, considered_tokens=None, state=None, token_history=None,
178
+ terminals_by_name=None, considered_rules=None):
179
+ super(UnexpectedCharacters, self).__init__()
180
+
181
+ ##
182
+
183
+ self.line = line
184
+ self.column = column
185
+ self.pos_in_stream = lex_pos
186
+ self.state = state
187
+ self._terminals_by_name = terminals_by_name
188
+
189
+ self.allowed = allowed
190
+ self.considered_tokens = considered_tokens
191
+ self.considered_rules = considered_rules
192
+ self.token_history = token_history
193
+
194
+ if isinstance(seq, bytes):
195
+ self.char = seq[lex_pos:lex_pos + 1].decode("ascii", "backslashreplace")
196
+ else:
197
+ self.char = seq[lex_pos]
198
+ self._context = self.get_context(seq)
199
+
200
+
201
+ def __str__(self):
202
+ message = "No terminal matches '%s' in the current parser context, at line %d col %d" % (self.char, self.line, self.column)
203
+ message += '\n\n' + self._context
204
+ if self.allowed:
205
+ message += self._format_expected(self.allowed)
206
+ if self.token_history:
207
+ message += '\nPrevious tokens: %s\n' % ', '.join(repr(t) for t in self.token_history)
208
+ return message
209
+
210
+
211
+ class UnexpectedToken(ParseError, UnexpectedInput):
212
+ #--
213
+
214
+ expected: Set[str]
215
+ considered_rules: Set[str]
216
+
217
+ def __init__(self, token, expected, considered_rules=None, state=None, interactive_parser=None, terminals_by_name=None, token_history=None):
218
+ super(UnexpectedToken, self).__init__()
219
+
220
+ ##
221
+
222
+ self.line = getattr(token, 'line', '?')
223
+ self.column = getattr(token, 'column', '?')
224
+ self.pos_in_stream = getattr(token, 'start_pos', None)
225
+ self.state = state
226
+
227
+ self.token = token
228
+ self.expected = expected ##
229
+
230
+ self._accepts = NO_VALUE
231
+ self.considered_rules = considered_rules
232
+ self.interactive_parser = interactive_parser
233
+ self._terminals_by_name = terminals_by_name
234
+ self.token_history = token_history
235
+
236
+
237
+ @property
238
+ def accepts(self) -> Set[str]:
239
+ if self._accepts is NO_VALUE:
240
+ self._accepts = self.interactive_parser and self.interactive_parser.accepts()
241
+ return self._accepts
242
+
243
+ def __str__(self):
244
+ message = ("Unexpected token %r at line %s, column %s.\n%s"
245
+ % (self.token, self.line, self.column, self._format_expected(self.accepts or self.expected)))
246
+ if self.token_history:
247
+ message += "Previous tokens: %r\n" % self.token_history
248
+
249
+ return message
250
+
251
+
252
+
253
+ class VisitError(LarkError):
254
+ #--
255
+
256
+ obj: 'Union[Tree, Token]'
257
+ orig_exc: Exception
258
+
259
+ def __init__(self, rule, obj, orig_exc):
260
+ message = 'Error trying to process rule "%s":\n\n%s' % (rule, orig_exc)
261
+ super(VisitError, self).__init__(message)
262
+
263
+ self.rule = rule
264
+ self.obj = obj
265
+ self.orig_exc = orig_exc
266
+
267
+
268
+ class MissingVariableError(LarkError):
269
+ pass
270
+
271
+
272
+ import sys, re
273
+ import logging
274
+
275
+ logger: logging.Logger = logging.getLogger("lark")
276
+ logger.addHandler(logging.StreamHandler())
277
+ ##
278
+
279
+ ##
280
+
281
+ logger.setLevel(logging.CRITICAL)
282
+
283
+
284
+ NO_VALUE = object()
285
+
286
+ T = TypeVar("T")
287
+
288
+
289
+ def classify(seq: Iterable, key: Optional[Callable] = None, value: Optional[Callable] = None) -> Dict:
290
+ d: Dict[Any, Any] = {}
291
+ for item in seq:
292
+ k = key(item) if (key is not None) else item
293
+ v = value(item) if (value is not None) else item
294
+ try:
295
+ d[k].append(v)
296
+ except KeyError:
297
+ d[k] = [v]
298
+ return d
299
+
300
+
301
+ def _deserialize(data: Any, namespace: Dict[str, Any], memo: Dict) -> Any:
302
+ if isinstance(data, dict):
303
+ if '__type__' in data: ##
304
+
305
+ class_ = namespace[data['__type__']]
306
+ return class_.deserialize(data, memo)
307
+ elif '@' in data:
308
+ return memo[data['@']]
309
+ return {key:_deserialize(value, namespace, memo) for key, value in data.items()}
310
+ elif isinstance(data, list):
311
+ return [_deserialize(value, namespace, memo) for value in data]
312
+ return data
313
+
314
+
315
+ _T = TypeVar("_T", bound="Serialize")
316
+
317
+ class Serialize:
318
+ #--
319
+
320
+ def memo_serialize(self, types_to_memoize: List) -> Any:
321
+ memo = SerializeMemoizer(types_to_memoize)
322
+ return self.serialize(memo), memo.serialize()
323
+
324
+ def serialize(self, memo = None) -> Dict[str, Any]:
325
+ if memo and memo.in_types(self):
326
+ return {'@': memo.memoized.get(self)}
327
+
328
+ fields = getattr(self, '__serialize_fields__')
329
+ res = {f: _serialize(getattr(self, f), memo) for f in fields}
330
+ res['__type__'] = type(self).__name__
331
+ if hasattr(self, '_serialize'):
332
+ self._serialize(res, memo)
333
+ return res
334
+
335
+ @classmethod
336
+ def deserialize(cls: Type[_T], data: Dict[str, Any], memo: Dict[int, Any]) -> _T:
337
+ namespace = getattr(cls, '__serialize_namespace__', [])
338
+ namespace = {c.__name__:c for c in namespace}
339
+
340
+ fields = getattr(cls, '__serialize_fields__')
341
+
342
+ if '@' in data:
343
+ return memo[data['@']]
344
+
345
+ inst = cls.__new__(cls)
346
+ for f in fields:
347
+ try:
348
+ setattr(inst, f, _deserialize(data[f], namespace, memo))
349
+ except KeyError as e:
350
+ raise KeyError("Cannot find key for class", cls, e)
351
+
352
+ if hasattr(inst, '_deserialize'):
353
+ inst._deserialize()
354
+
355
+ return inst
356
+
357
+
358
+ class SerializeMemoizer(Serialize):
359
+ #--
360
+
361
+ __serialize_fields__ = 'memoized',
362
+
363
+ def __init__(self, types_to_memoize: List) -> None:
364
+ self.types_to_memoize = tuple(types_to_memoize)
365
+ self.memoized = Enumerator()
366
+
367
+ def in_types(self, value: Serialize) -> bool:
368
+ return isinstance(value, self.types_to_memoize)
369
+
370
+ def serialize(self) -> Dict[int, Any]: ##
371
+
372
+ return _serialize(self.memoized.reversed(), None)
373
+
374
+ @classmethod
375
+ def deserialize(cls, data: Dict[int, Any], namespace: Dict[str, Any], memo: Dict[Any, Any]) -> Dict[int, Any]: ##
376
+
377
+ return _deserialize(data, namespace, memo)
378
+
379
+
380
+ try:
381
+ import regex
382
+ _has_regex = True
383
+ except ImportError:
384
+ _has_regex = False
385
+
386
+ if sys.version_info >= (3, 11):
387
+ import re._parser as sre_parse
388
+ import re._constants as sre_constants
389
+ else:
390
+ import sre_parse
391
+ import sre_constants
392
+
393
+ categ_pattern = re.compile(r'\\p{[A-Za-z_]+}')
394
+
395
+ def get_regexp_width(expr: str) -> Union[Tuple[int, int], List[int]]:
396
+ if _has_regex:
397
+ ##
398
+
399
+ ##
400
+
401
+ ##
402
+
403
+ regexp_final = re.sub(categ_pattern, 'A', expr)
404
+ else:
405
+ if re.search(categ_pattern, expr):
406
+ raise ImportError('`regex` module must be installed in order to use Unicode categories.', expr)
407
+ regexp_final = expr
408
+ try:
409
+ ##
410
+
411
+ return [int(x) for x in sre_parse.parse(regexp_final).getwidth()]
412
+ except sre_constants.error:
413
+ if not _has_regex:
414
+ raise ValueError(expr)
415
+ else:
416
+ ##
417
+
418
+ ##
419
+
420
+ c = regex.compile(regexp_final)
421
+ ##
422
+
423
+ ##
424
+
425
+ MAXWIDTH = getattr(sre_parse, "MAXWIDTH", sre_constants.MAXREPEAT)
426
+ if c.match('') is None:
427
+ ##
428
+
429
+ return 1, int(MAXWIDTH)
430
+ else:
431
+ return 0, int(MAXWIDTH)
432
+
433
+
434
+
435
+ class Meta:
436
+
437
+ empty: bool
438
+ line: int
439
+ column: int
440
+ start_pos: int
441
+ end_line: int
442
+ end_column: int
443
+ end_pos: int
444
+ orig_expansion: 'List[TerminalDef]'
445
+ match_tree: bool
446
+
447
+ def __init__(self):
448
+ self.empty = True
449
+
450
+
451
+ _Leaf_T = TypeVar("_Leaf_T")
452
+ Branch = Union[_Leaf_T, 'Tree[_Leaf_T]']
453
+
454
+
455
+ class Tree(Generic[_Leaf_T]):
456
+ #--
457
+
458
+ data: str
459
+ children: 'List[Branch[_Leaf_T]]'
460
+
461
+ def __init__(self, data: str, children: 'List[Branch[_Leaf_T]]', meta: Optional[Meta]=None) -> None:
462
+ self.data = data
463
+ self.children = children
464
+ self._meta = meta
465
+
466
+ @property
467
+ def meta(self) -> Meta:
468
+ if self._meta is None:
469
+ self._meta = Meta()
470
+ return self._meta
471
+
472
+ def __repr__(self):
473
+ return 'Tree(%r, %r)' % (self.data, self.children)
474
+
475
+ def _pretty_label(self):
476
+ return self.data
477
+
478
+ def _pretty(self, level, indent_str):
479
+ yield f'{indent_str*level}{self._pretty_label()}'
480
+ if len(self.children) == 1 and not isinstance(self.children[0], Tree):
481
+ yield f'\t{self.children[0]}\n'
482
+ else:
483
+ yield '\n'
484
+ for n in self.children:
485
+ if isinstance(n, Tree):
486
+ yield from n._pretty(level+1, indent_str)
487
+ else:
488
+ yield f'{indent_str*(level+1)}{n}\n'
489
+
490
+ def pretty(self, indent_str: str=' ') -> str:
491
+ #--
492
+ return ''.join(self._pretty(0, indent_str))
493
+
494
+ def __rich__(self, parent:Optional['rich.tree.Tree']=None) -> 'rich.tree.Tree':
495
+ #--
496
+ return self._rich(parent)
497
+
498
+ def _rich(self, parent):
499
+ if parent:
500
+ tree = parent.add(f'[bold]{self.data}[/bold]')
501
+ else:
502
+ import rich.tree
503
+ tree = rich.tree.Tree(self.data)
504
+
505
+ for c in self.children:
506
+ if isinstance(c, Tree):
507
+ c._rich(tree)
508
+ else:
509
+ tree.add(f'[green]{c}[/green]')
510
+
511
+ return tree
512
+
513
+ def __eq__(self, other):
514
+ try:
515
+ return self.data == other.data and self.children == other.children
516
+ except AttributeError:
517
+ return False
518
+
519
+ def __ne__(self, other):
520
+ return not (self == other)
521
+
522
+ def __hash__(self) -> int:
523
+ return hash((self.data, tuple(self.children)))
524
+
525
+ def iter_subtrees(self) -> 'Iterator[Tree[_Leaf_T]]':
526
+ #--
527
+ queue = [self]
528
+ subtrees = dict()
529
+ for subtree in queue:
530
+ subtrees[id(subtree)] = subtree
531
+ queue += [c for c in reversed(subtree.children)
532
+ if isinstance(c, Tree) and id(c) not in subtrees]
533
+
534
+ del queue
535
+ return reversed(list(subtrees.values()))
536
+
537
+ def iter_subtrees_topdown(self):
538
+ #--
539
+ stack = [self]
540
+ stack_append = stack.append
541
+ stack_pop = stack.pop
542
+ while stack:
543
+ node = stack_pop()
544
+ if not isinstance(node, Tree):
545
+ continue
546
+ yield node
547
+ for child in reversed(node.children):
548
+ stack_append(child)
549
+
550
+ def find_pred(self, pred: 'Callable[[Tree[_Leaf_T]], bool]') -> 'Iterator[Tree[_Leaf_T]]':
551
+ #--
552
+ return filter(pred, self.iter_subtrees())
553
+
554
+ def find_data(self, data: str) -> 'Iterator[Tree[_Leaf_T]]':
555
+ #--
556
+ return self.find_pred(lambda t: t.data == data)
557
+
558
+
559
+ from functools import wraps, update_wrapper
560
+ from inspect import getmembers, getmro
561
+
562
+ _Return_T = TypeVar('_Return_T')
563
+ _Return_V = TypeVar('_Return_V')
564
+ _Leaf_T = TypeVar('_Leaf_T')
565
+ _Leaf_U = TypeVar('_Leaf_U')
566
+ _R = TypeVar('_R')
567
+ _FUNC = Callable[..., _Return_T]
568
+ _DECORATED = Union[_FUNC, type]
569
+
570
+ class _DiscardType:
571
+ #--
572
+
573
+ def __repr__(self):
574
+ return "lark.visitors.Discard"
575
+
576
+ Discard = _DiscardType()
577
+
578
+ ##
579
+
580
+
581
+ class _Decoratable:
582
+ #--
583
+
584
+ @classmethod
585
+ def _apply_v_args(cls, visit_wrapper):
586
+ mro = getmro(cls)
587
+ assert mro[0] is cls
588
+ libmembers = {name for _cls in mro[1:] for name, _ in getmembers(_cls)}
589
+ for name, value in getmembers(cls):
590
+
591
+ ##
592
+
593
+ if name.startswith('_') or (name in libmembers and name not in cls.__dict__):
594
+ continue
595
+ if not callable(value):
596
+ continue
597
+
598
+ ##
599
+
600
+ if isinstance(cls.__dict__[name], _VArgsWrapper):
601
+ continue
602
+
603
+ setattr(cls, name, _VArgsWrapper(cls.__dict__[name], visit_wrapper))
604
+ return cls
605
+
606
+ def __class_getitem__(cls, _):
607
+ return cls
608
+
609
+
610
+ class Transformer(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
611
+ #--
612
+ __visit_tokens__ = True ##
613
+
614
+
615
+ def __init__(self, visit_tokens: bool=True) -> None:
616
+ self.__visit_tokens__ = visit_tokens
617
+
618
+ def _call_userfunc(self, tree, new_children=None):
619
+ ##
620
+
621
+ children = new_children if new_children is not None else tree.children
622
+ try:
623
+ f = getattr(self, tree.data)
624
+ except AttributeError:
625
+ return self.__default__(tree.data, children, tree.meta)
626
+ else:
627
+ try:
628
+ wrapper = getattr(f, 'visit_wrapper', None)
629
+ if wrapper is not None:
630
+ return f.visit_wrapper(f, tree.data, children, tree.meta)
631
+ else:
632
+ return f(children)
633
+ except GrammarError:
634
+ raise
635
+ except Exception as e:
636
+ raise VisitError(tree.data, tree, e)
637
+
638
+ def _call_userfunc_token(self, token):
639
+ try:
640
+ f = getattr(self, token.type)
641
+ except AttributeError:
642
+ return self.__default_token__(token)
643
+ else:
644
+ try:
645
+ return f(token)
646
+ except GrammarError:
647
+ raise
648
+ except Exception as e:
649
+ raise VisitError(token.type, token, e)
650
+
651
+ def _transform_children(self, children):
652
+ for c in children:
653
+ if isinstance(c, Tree):
654
+ res = self._transform_tree(c)
655
+ elif self.__visit_tokens__ and isinstance(c, Token):
656
+ res = self._call_userfunc_token(c)
657
+ else:
658
+ res = c
659
+
660
+ if res is not Discard:
661
+ yield res
662
+
663
+ def _transform_tree(self, tree):
664
+ children = list(self._transform_children(tree.children))
665
+ return self._call_userfunc(tree, children)
666
+
667
+ def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
668
+ #--
669
+ res = list(self._transform_children([tree]))
670
+ if not res:
671
+ return None ##
672
+
673
+ assert len(res) == 1
674
+ return res[0]
675
+
676
+ def __mul__(
677
+ self: 'Transformer[_Leaf_T, Tree[_Leaf_U]]',
678
+ other: 'Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V,]]'
679
+ ) -> 'TransformerChain[_Leaf_T, _Return_V]':
680
+ #--
681
+ return TransformerChain(self, other)
682
+
683
+ def __default__(self, data, children, meta):
684
+ #--
685
+ return Tree(data, children, meta)
686
+
687
+ def __default_token__(self, token):
688
+ #--
689
+ return token
690
+
691
+
692
+ def merge_transformers(base_transformer=None, **transformers_to_merge):
693
+ #--
694
+ if base_transformer is None:
695
+ base_transformer = Transformer()
696
+ for prefix, transformer in transformers_to_merge.items():
697
+ for method_name in dir(transformer):
698
+ method = getattr(transformer, method_name)
699
+ if not callable(method):
700
+ continue
701
+ if method_name.startswith("_") or method_name == "transform":
702
+ continue
703
+ prefixed_method = prefix + "__" + method_name
704
+ if hasattr(base_transformer, prefixed_method):
705
+ raise AttributeError("Cannot merge: method '%s' appears more than once" % prefixed_method)
706
+
707
+ setattr(base_transformer, prefixed_method, method)
708
+
709
+ return base_transformer
710
+
711
+
712
+ class InlineTransformer(Transformer): ##
713
+
714
+ def _call_userfunc(self, tree, new_children=None):
715
+ ##
716
+
717
+ children = new_children if new_children is not None else tree.children
718
+ try:
719
+ f = getattr(self, tree.data)
720
+ except AttributeError:
721
+ return self.__default__(tree.data, children, tree.meta)
722
+ else:
723
+ return f(*children)
724
+
725
+
726
+ class TransformerChain(Generic[_Leaf_T, _Return_T]):
727
+
728
+ transformers: 'Tuple[Union[Transformer, TransformerChain], ...]'
729
+
730
+ def __init__(self, *transformers: 'Union[Transformer, TransformerChain]') -> None:
731
+ self.transformers = transformers
732
+
733
+ def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
734
+ for t in self.transformers:
735
+ tree = t.transform(tree)
736
+ return cast(_Return_T, tree)
737
+
738
+ def __mul__(
739
+ self: 'TransformerChain[_Leaf_T, Tree[_Leaf_U]]',
740
+ other: 'Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V]]'
741
+ ) -> 'TransformerChain[_Leaf_T, _Return_V]':
742
+ return TransformerChain(*self.transformers + (other,))
743
+
744
+
745
+ class Transformer_InPlace(Transformer[_Leaf_T, _Return_T]):
746
+ #--
747
+ def _transform_tree(self, tree): ##
748
+
749
+ return self._call_userfunc(tree)
750
+
751
+ def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
752
+ for subtree in tree.iter_subtrees():
753
+ subtree.children = list(self._transform_children(subtree.children))
754
+
755
+ return self._transform_tree(tree)
756
+
757
+
758
+ class Transformer_NonRecursive(Transformer[_Leaf_T, _Return_T]):
759
+ #--
760
+
761
+ def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
762
+ ##
763
+
764
+ rev_postfix = []
765
+ q: List[Branch[_Leaf_T]] = [tree]
766
+ while q:
767
+ t = q.pop()
768
+ rev_postfix.append(t)
769
+ if isinstance(t, Tree):
770
+ q += t.children
771
+
772
+ ##
773
+
774
+ stack: List = []
775
+ for x in reversed(rev_postfix):
776
+ if isinstance(x, Tree):
777
+ size = len(x.children)
778
+ if size:
779
+ args = stack[-size:]
780
+ del stack[-size:]
781
+ else:
782
+ args = []
783
+
784
+ res = self._call_userfunc(x, args)
785
+ if res is not Discard:
786
+ stack.append(res)
787
+
788
+ elif self.__visit_tokens__ and isinstance(x, Token):
789
+ res = self._call_userfunc_token(x)
790
+ if res is not Discard:
791
+ stack.append(res)
792
+ else:
793
+ stack.append(x)
794
+
795
+ result, = stack ##
796
+
797
+ ##
798
+
799
+ ##
800
+
801
+ ##
802
+
803
+ return cast(_Return_T, result)
804
+
805
+
806
+ class Transformer_InPlaceRecursive(Transformer):
807
+ #--
808
+ def _transform_tree(self, tree):
809
+ tree.children = list(self._transform_children(tree.children))
810
+ return self._call_userfunc(tree)
811
+
812
+
813
+ ##
814
+
815
+
816
+ class VisitorBase:
817
+ def _call_userfunc(self, tree):
818
+ return getattr(self, tree.data, self.__default__)(tree)
819
+
820
+ def __default__(self, tree):
821
+ #--
822
+ return tree
823
+
824
+ def __class_getitem__(cls, _):
825
+ return cls
826
+
827
+
828
+ class Visitor(VisitorBase, ABC, Generic[_Leaf_T]):
829
+ #--
830
+
831
+ def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
832
+ #--
833
+ for subtree in tree.iter_subtrees():
834
+ self._call_userfunc(subtree)
835
+ return tree
836
+
837
+ def visit_topdown(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
838
+ #--
839
+ for subtree in tree.iter_subtrees_topdown():
840
+ self._call_userfunc(subtree)
841
+ return tree
842
+
843
+
844
+ class Visitor_Recursive(VisitorBase, Generic[_Leaf_T]):
845
+ #--
846
+
847
+ def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
848
+ #--
849
+ for child in tree.children:
850
+ if isinstance(child, Tree):
851
+ self.visit(child)
852
+
853
+ self._call_userfunc(tree)
854
+ return tree
855
+
856
+ def visit_topdown(self,tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
857
+ #--
858
+ self._call_userfunc(tree)
859
+
860
+ for child in tree.children:
861
+ if isinstance(child, Tree):
862
+ self.visit_topdown(child)
863
+
864
+ return tree
865
+
866
+
867
+ class Interpreter(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
868
+ #--
869
+
870
+ def visit(self, tree: Tree[_Leaf_T]) -> _Return_T:
871
+ ##
872
+
873
+ ##
874
+
875
+ ##
876
+
877
+ return self._visit_tree(tree)
878
+
879
+ def _visit_tree(self, tree: Tree[_Leaf_T]):
880
+ f = getattr(self, tree.data)
881
+ wrapper = getattr(f, 'visit_wrapper', None)
882
+ if wrapper is not None:
883
+ return f.visit_wrapper(f, tree.data, tree.children, tree.meta)
884
+ else:
885
+ return f(tree)
886
+
887
+ def visit_children(self, tree: Tree[_Leaf_T]) -> List:
888
+ return [self._visit_tree(child) if isinstance(child, Tree) else child
889
+ for child in tree.children]
890
+
891
+ def __getattr__(self, name):
892
+ return self.__default__
893
+
894
+ def __default__(self, tree):
895
+ return self.visit_children(tree)
896
+
897
+
898
+ _InterMethod = Callable[[Type[Interpreter], _Return_T], _R]
899
+
900
+ def visit_children_decor(func: _InterMethod) -> _InterMethod:
901
+ #--
902
+ @wraps(func)
903
+ def inner(cls, tree):
904
+ values = cls.visit_children(tree)
905
+ return func(cls, values)
906
+ return inner
907
+
908
+ ##
909
+
910
+
911
+ def _apply_v_args(obj, visit_wrapper):
912
+ try:
913
+ _apply = obj._apply_v_args
914
+ except AttributeError:
915
+ return _VArgsWrapper(obj, visit_wrapper)
916
+ else:
917
+ return _apply(visit_wrapper)
918
+
919
+
920
+ class _VArgsWrapper:
921
+ #--
922
+ base_func: Callable
923
+
924
+ def __init__(self, func: Callable, visit_wrapper: Callable[[Callable, str, list, Any], Any]):
925
+ if isinstance(func, _VArgsWrapper):
926
+ func = func.base_func
927
+ self.base_func = func
928
+ self.visit_wrapper = visit_wrapper
929
+ update_wrapper(self, func)
930
+
931
+ def __call__(self, *args, **kwargs):
932
+ return self.base_func(*args, **kwargs)
933
+
934
+ def __get__(self, instance, owner=None):
935
+ try:
936
+ ##
937
+
938
+ ##
939
+
940
+ g = type(self.base_func).__get__
941
+ except AttributeError:
942
+ return self
943
+ else:
944
+ return _VArgsWrapper(g(self.base_func, instance, owner), self.visit_wrapper)
945
+
946
+ def __set_name__(self, owner, name):
947
+ try:
948
+ f = type(self.base_func).__set_name__
949
+ except AttributeError:
950
+ return
951
+ else:
952
+ f(self.base_func, owner, name)
953
+
954
+
955
+ def _vargs_inline(f, _data, children, _meta):
956
+ return f(*children)
957
+ def _vargs_meta_inline(f, _data, children, meta):
958
+ return f(meta, *children)
959
+ def _vargs_meta(f, _data, children, meta):
960
+ return f(meta, children)
961
+ def _vargs_tree(f, data, children, meta):
962
+ return f(Tree(data, children, meta))
963
+
964
+
965
+ def v_args(inline: bool = False, meta: bool = False, tree: bool = False, wrapper: Optional[Callable] = None) -> Callable[[_DECORATED], _DECORATED]:
966
+ #--
967
+ if tree and (meta or inline):
968
+ raise ValueError("Visitor functions cannot combine 'tree' with 'meta' or 'inline'.")
969
+
970
+ func = None
971
+ if meta:
972
+ if inline:
973
+ func = _vargs_meta_inline
974
+ else:
975
+ func = _vargs_meta
976
+ elif inline:
977
+ func = _vargs_inline
978
+ elif tree:
979
+ func = _vargs_tree
980
+
981
+ if wrapper is not None:
982
+ if func is not None:
983
+ raise ValueError("Cannot use 'wrapper' along with 'tree', 'meta' or 'inline'.")
984
+ func = wrapper
985
+
986
+ def _visitor_args_dec(obj):
987
+ return _apply_v_args(obj, func)
988
+ return _visitor_args_dec
989
+
990
+
991
+
992
+ TOKEN_DEFAULT_PRIORITY = 0
993
+
994
+
995
+ class Symbol(Serialize):
996
+ __slots__ = ('name',)
997
+
998
+ name: str
999
+ is_term: ClassVar[bool] = NotImplemented
1000
+
1001
+ def __init__(self, name: str) -> None:
1002
+ self.name = name
1003
+
1004
+ def __eq__(self, other):
1005
+ assert isinstance(other, Symbol), other
1006
+ return self.is_term == other.is_term and self.name == other.name
1007
+
1008
+ def __ne__(self, other):
1009
+ return not (self == other)
1010
+
1011
+ def __hash__(self):
1012
+ return hash(self.name)
1013
+
1014
+ def __repr__(self):
1015
+ return '%s(%r)' % (type(self).__name__, self.name)
1016
+
1017
+ fullrepr = property(__repr__)
1018
+
1019
+ def renamed(self, f):
1020
+ return type(self)(f(self.name))
1021
+
1022
+
1023
+ class Terminal(Symbol):
1024
+ __serialize_fields__ = 'name', 'filter_out'
1025
+
1026
+ is_term: ClassVar[bool] = True
1027
+
1028
+ def __init__(self, name, filter_out=False):
1029
+ self.name = name
1030
+ self.filter_out = filter_out
1031
+
1032
+ @property
1033
+ def fullrepr(self):
1034
+ return '%s(%r, %r)' % (type(self).__name__, self.name, self.filter_out)
1035
+
1036
+ def renamed(self, f):
1037
+ return type(self)(f(self.name), self.filter_out)
1038
+
1039
+
1040
+ class NonTerminal(Symbol):
1041
+ __serialize_fields__ = 'name',
1042
+
1043
+ is_term: ClassVar[bool] = False
1044
+
1045
+
1046
+ class RuleOptions(Serialize):
1047
+ __serialize_fields__ = 'keep_all_tokens', 'expand1', 'priority', 'template_source', 'empty_indices'
1048
+
1049
+ keep_all_tokens: bool
1050
+ expand1: bool
1051
+ priority: Optional[int]
1052
+ template_source: Optional[str]
1053
+ empty_indices: Tuple[bool, ...]
1054
+
1055
+ def __init__(self, keep_all_tokens: bool=False, expand1: bool=False, priority: Optional[int]=None, template_source: Optional[str]=None, empty_indices: Tuple[bool, ...]=()) -> None:
1056
+ self.keep_all_tokens = keep_all_tokens
1057
+ self.expand1 = expand1
1058
+ self.priority = priority
1059
+ self.template_source = template_source
1060
+ self.empty_indices = empty_indices
1061
+
1062
+ def __repr__(self):
1063
+ return 'RuleOptions(%r, %r, %r, %r)' % (
1064
+ self.keep_all_tokens,
1065
+ self.expand1,
1066
+ self.priority,
1067
+ self.template_source
1068
+ )
1069
+
1070
+
1071
+ class Rule(Serialize):
1072
+ #--
1073
+ __slots__ = ('origin', 'expansion', 'alias', 'options', 'order', '_hash')
1074
+
1075
+ __serialize_fields__ = 'origin', 'expansion', 'order', 'alias', 'options'
1076
+ __serialize_namespace__ = Terminal, NonTerminal, RuleOptions
1077
+
1078
+ origin: NonTerminal
1079
+ expansion: Sequence[Symbol]
1080
+ order: int
1081
+ alias: Optional[str]
1082
+ options: RuleOptions
1083
+ _hash: int
1084
+
1085
+ def __init__(self, origin: NonTerminal, expansion: Sequence[Symbol],
1086
+ order: int=0, alias: Optional[str]=None, options: Optional[RuleOptions]=None):
1087
+ self.origin = origin
1088
+ self.expansion = expansion
1089
+ self.alias = alias
1090
+ self.order = order
1091
+ self.options = options or RuleOptions()
1092
+ self._hash = hash((self.origin, tuple(self.expansion)))
1093
+
1094
+ def _deserialize(self):
1095
+ self._hash = hash((self.origin, tuple(self.expansion)))
1096
+
1097
+ def __str__(self):
1098
+ return '<%s : %s>' % (self.origin.name, ' '.join(x.name for x in self.expansion))
1099
+
1100
+ def __repr__(self):
1101
+ return 'Rule(%r, %r, %r, %r)' % (self.origin, self.expansion, self.alias, self.options)
1102
+
1103
+ def __hash__(self):
1104
+ return self._hash
1105
+
1106
+ def __eq__(self, other):
1107
+ if not isinstance(other, Rule):
1108
+ return False
1109
+ return self.origin == other.origin and self.expansion == other.expansion
1110
+
1111
+
1112
+
1113
+ from copy import copy
1114
+
1115
+ try: ##
1116
+
1117
+ has_interegular = bool(interegular)
1118
+ except NameError:
1119
+ has_interegular = False
1120
+
1121
+ class Pattern(Serialize, ABC):
1122
+ #--
1123
+
1124
+ value: str
1125
+ flags: Collection[str]
1126
+ raw: Optional[str]
1127
+ type: ClassVar[str]
1128
+
1129
+ def __init__(self, value: str, flags: Collection[str] = (), raw: Optional[str] = None) -> None:
1130
+ self.value = value
1131
+ self.flags = frozenset(flags)
1132
+ self.raw = raw
1133
+
1134
+ def __repr__(self):
1135
+ return repr(self.to_regexp())
1136
+
1137
+ ##
1138
+
1139
+ def __hash__(self):
1140
+ return hash((type(self), self.value, self.flags))
1141
+
1142
+ def __eq__(self, other):
1143
+ return type(self) == type(other) and self.value == other.value and self.flags == other.flags
1144
+
1145
+ @abstractmethod
1146
+ def to_regexp(self) -> str:
1147
+ raise NotImplementedError()
1148
+
1149
+ @property
1150
+ @abstractmethod
1151
+ def min_width(self) -> int:
1152
+ raise NotImplementedError()
1153
+
1154
+ @property
1155
+ @abstractmethod
1156
+ def max_width(self) -> int:
1157
+ raise NotImplementedError()
1158
+
1159
+ def _get_flags(self, value):
1160
+ for f in self.flags:
1161
+ value = ('(?%s:%s)' % (f, value))
1162
+ return value
1163
+
1164
+
1165
+ class PatternStr(Pattern):
1166
+ __serialize_fields__ = 'value', 'flags', 'raw'
1167
+
1168
+ type: ClassVar[str] = "str"
1169
+
1170
+ def to_regexp(self) -> str:
1171
+ return self._get_flags(re.escape(self.value))
1172
+
1173
+ @property
1174
+ def min_width(self) -> int:
1175
+ return len(self.value)
1176
+
1177
+ @property
1178
+ def max_width(self) -> int:
1179
+ return len(self.value)
1180
+
1181
+
1182
+ class PatternRE(Pattern):
1183
+ __serialize_fields__ = 'value', 'flags', 'raw', '_width'
1184
+
1185
+ type: ClassVar[str] = "re"
1186
+
1187
+ def to_regexp(self) -> str:
1188
+ return self._get_flags(self.value)
1189
+
1190
+ _width = None
1191
+ def _get_width(self):
1192
+ if self._width is None:
1193
+ self._width = get_regexp_width(self.to_regexp())
1194
+ return self._width
1195
+
1196
+ @property
1197
+ def min_width(self) -> int:
1198
+ return self._get_width()[0]
1199
+
1200
+ @property
1201
+ def max_width(self) -> int:
1202
+ return self._get_width()[1]
1203
+
1204
+
1205
+ class TerminalDef(Serialize):
1206
+ #--
1207
+ __serialize_fields__ = 'name', 'pattern', 'priority'
1208
+ __serialize_namespace__ = PatternStr, PatternRE
1209
+
1210
+ name: str
1211
+ pattern: Pattern
1212
+ priority: int
1213
+
1214
+ def __init__(self, name: str, pattern: Pattern, priority: int = TOKEN_DEFAULT_PRIORITY) -> None:
1215
+ assert isinstance(pattern, Pattern), pattern
1216
+ self.name = name
1217
+ self.pattern = pattern
1218
+ self.priority = priority
1219
+
1220
+ def __repr__(self):
1221
+ return '%s(%r, %r)' % (type(self).__name__, self.name, self.pattern)
1222
+
1223
+ def user_repr(self) -> str:
1224
+ if self.name.startswith('__'): ##
1225
+
1226
+ return self.pattern.raw or self.name
1227
+ else:
1228
+ return self.name
1229
+
1230
+ _T = TypeVar('_T', bound="Token")
1231
+
1232
+ class Token(str):
1233
+ #--
1234
+ __slots__ = ('type', 'start_pos', 'value', 'line', 'column', 'end_line', 'end_column', 'end_pos')
1235
+
1236
+ __match_args__ = ('type', 'value')
1237
+
1238
+ type: str
1239
+ start_pos: Optional[int]
1240
+ value: Any
1241
+ line: Optional[int]
1242
+ column: Optional[int]
1243
+ end_line: Optional[int]
1244
+ end_column: Optional[int]
1245
+ end_pos: Optional[int]
1246
+
1247
+
1248
+ @overload
1249
+ def __new__(
1250
+ cls,
1251
+ type: str,
1252
+ value: Any,
1253
+ start_pos: Optional[int] = None,
1254
+ line: Optional[int] = None,
1255
+ column: Optional[int] = None,
1256
+ end_line: Optional[int] = None,
1257
+ end_column: Optional[int] = None,
1258
+ end_pos: Optional[int] = None
1259
+ ) -> 'Token':
1260
+ ...
1261
+
1262
+ @overload
1263
+ def __new__(
1264
+ cls,
1265
+ type_: str,
1266
+ value: Any,
1267
+ start_pos: Optional[int] = None,
1268
+ line: Optional[int] = None,
1269
+ column: Optional[int] = None,
1270
+ end_line: Optional[int] = None,
1271
+ end_column: Optional[int] = None,
1272
+ end_pos: Optional[int] = None
1273
+ ) -> 'Token': ...
1274
+
1275
+ def __new__(cls, *args, **kwargs):
1276
+ if "type_" in kwargs:
1277
+ warnings.warn("`type_` is deprecated use `type` instead", DeprecationWarning)
1278
+
1279
+ if "type" in kwargs:
1280
+ raise TypeError("Error: using both 'type' and the deprecated 'type_' as arguments.")
1281
+ kwargs["type"] = kwargs.pop("type_")
1282
+
1283
+ return cls._future_new(*args, **kwargs)
1284
+
1285
+
1286
+ @classmethod
1287
+ def _future_new(cls, type, value, start_pos=None, line=None, column=None, end_line=None, end_column=None, end_pos=None):
1288
+ inst = super(Token, cls).__new__(cls, value)
1289
+
1290
+ inst.type = type
1291
+ inst.start_pos = start_pos
1292
+ inst.value = value
1293
+ inst.line = line
1294
+ inst.column = column
1295
+ inst.end_line = end_line
1296
+ inst.end_column = end_column
1297
+ inst.end_pos = end_pos
1298
+ return inst
1299
+
1300
+ @overload
1301
+ def update(self, type: Optional[str] = None, value: Optional[Any] = None) -> 'Token':
1302
+ ...
1303
+
1304
+ @overload
1305
+ def update(self, type_: Optional[str] = None, value: Optional[Any] = None) -> 'Token':
1306
+ ...
1307
+
1308
+ def update(self, *args, **kwargs):
1309
+ if "type_" in kwargs:
1310
+ warnings.warn("`type_` is deprecated use `type` instead", DeprecationWarning)
1311
+
1312
+ if "type" in kwargs:
1313
+ raise TypeError("Error: using both 'type' and the deprecated 'type_' as arguments.")
1314
+ kwargs["type"] = kwargs.pop("type_")
1315
+
1316
+ return self._future_update(*args, **kwargs)
1317
+
1318
+ def _future_update(self, type: Optional[str] = None, value: Optional[Any] = None) -> 'Token':
1319
+ return Token.new_borrow_pos(
1320
+ type if type is not None else self.type,
1321
+ value if value is not None else self.value,
1322
+ self
1323
+ )
1324
+
1325
+ @classmethod
1326
+ def new_borrow_pos(cls: Type[_T], type_: str, value: Any, borrow_t: 'Token') -> _T:
1327
+ return cls(type_, value, borrow_t.start_pos, borrow_t.line, borrow_t.column, borrow_t.end_line, borrow_t.end_column, borrow_t.end_pos)
1328
+
1329
+ def __reduce__(self):
1330
+ return (self.__class__, (self.type, self.value, self.start_pos, self.line, self.column))
1331
+
1332
+ def __repr__(self):
1333
+ return 'Token(%r, %r)' % (self.type, self.value)
1334
+
1335
+ def __deepcopy__(self, memo):
1336
+ return Token(self.type, self.value, self.start_pos, self.line, self.column)
1337
+
1338
+ def __eq__(self, other):
1339
+ if isinstance(other, Token) and self.type != other.type:
1340
+ return False
1341
+
1342
+ return str.__eq__(self, other)
1343
+
1344
+ __hash__ = str.__hash__
1345
+
1346
+
1347
+ class LineCounter:
1348
+ #--
1349
+
1350
+ __slots__ = 'char_pos', 'line', 'column', 'line_start_pos', 'newline_char'
1351
+
1352
+ def __init__(self, newline_char):
1353
+ self.newline_char = newline_char
1354
+ self.char_pos = 0
1355
+ self.line = 1
1356
+ self.column = 1
1357
+ self.line_start_pos = 0
1358
+
1359
+ def __eq__(self, other):
1360
+ if not isinstance(other, LineCounter):
1361
+ return NotImplemented
1362
+
1363
+ return self.char_pos == other.char_pos and self.newline_char == other.newline_char
1364
+
1365
+ def feed(self, token: Token, test_newline=True):
1366
+ #--
1367
+ if test_newline:
1368
+ newlines = token.count(self.newline_char)
1369
+ if newlines:
1370
+ self.line += newlines
1371
+ self.line_start_pos = self.char_pos + token.rindex(self.newline_char) + 1
1372
+
1373
+ self.char_pos += len(token)
1374
+ self.column = self.char_pos - self.line_start_pos + 1
1375
+
1376
+
1377
+ class UnlessCallback:
1378
+ def __init__(self, scanner):
1379
+ self.scanner = scanner
1380
+
1381
+ def __call__(self, t):
1382
+ res = self.scanner.match(t.value, 0)
1383
+ if res:
1384
+ _value, t.type = res
1385
+ return t
1386
+
1387
+
1388
+ class CallChain:
1389
+ def __init__(self, callback1, callback2, cond):
1390
+ self.callback1 = callback1
1391
+ self.callback2 = callback2
1392
+ self.cond = cond
1393
+
1394
+ def __call__(self, t):
1395
+ t2 = self.callback1(t)
1396
+ return self.callback2(t) if self.cond(t2) else t2
1397
+
1398
+
1399
+ def _get_match(re_, regexp, s, flags):
1400
+ m = re_.match(regexp, s, flags)
1401
+ if m:
1402
+ return m.group(0)
1403
+
1404
+ def _create_unless(terminals, g_regex_flags, re_, use_bytes):
1405
+ tokens_by_type = classify(terminals, lambda t: type(t.pattern))
1406
+ assert len(tokens_by_type) <= 2, tokens_by_type.keys()
1407
+ embedded_strs = set()
1408
+ callback = {}
1409
+ for retok in tokens_by_type.get(PatternRE, []):
1410
+ unless = []
1411
+ for strtok in tokens_by_type.get(PatternStr, []):
1412
+ if strtok.priority != retok.priority:
1413
+ continue
1414
+ s = strtok.pattern.value
1415
+ if s == _get_match(re_, retok.pattern.to_regexp(), s, g_regex_flags):
1416
+ unless.append(strtok)
1417
+ if strtok.pattern.flags <= retok.pattern.flags:
1418
+ embedded_strs.add(strtok)
1419
+ if unless:
1420
+ callback[retok.name] = UnlessCallback(Scanner(unless, g_regex_flags, re_, match_whole=True, use_bytes=use_bytes))
1421
+
1422
+ new_terminals = [t for t in terminals if t not in embedded_strs]
1423
+ return new_terminals, callback
1424
+
1425
+
1426
+ class Scanner:
1427
+ def __init__(self, terminals, g_regex_flags, re_, use_bytes, match_whole=False):
1428
+ self.terminals = terminals
1429
+ self.g_regex_flags = g_regex_flags
1430
+ self.re_ = re_
1431
+ self.use_bytes = use_bytes
1432
+ self.match_whole = match_whole
1433
+
1434
+ self.allowed_types = {t.name for t in self.terminals}
1435
+
1436
+ self._mres = self._build_mres(terminals, len(terminals))
1437
+
1438
+ def _build_mres(self, terminals, max_size):
1439
+ ##
1440
+
1441
+ ##
1442
+
1443
+ ##
1444
+
1445
+ postfix = '$' if self.match_whole else ''
1446
+ mres = []
1447
+ while terminals:
1448
+ pattern = u'|'.join(u'(?P<%s>%s)' % (t.name, t.pattern.to_regexp() + postfix) for t in terminals[:max_size])
1449
+ if self.use_bytes:
1450
+ pattern = pattern.encode('latin-1')
1451
+ try:
1452
+ mre = self.re_.compile(pattern, self.g_regex_flags)
1453
+ except AssertionError: ##
1454
+
1455
+ return self._build_mres(terminals, max_size // 2)
1456
+
1457
+ mres.append(mre)
1458
+ terminals = terminals[max_size:]
1459
+ return mres
1460
+
1461
+ def match(self, text, pos):
1462
+ for mre in self._mres:
1463
+ m = mre.match(text, pos)
1464
+ if m:
1465
+ return m.group(0), m.lastgroup
1466
+
1467
+
1468
+ def _regexp_has_newline(r: str):
1469
+ #--
1470
+ return '\n' in r or '\\n' in r or '\\s' in r or '[^' in r or ('(?s' in r and '.' in r)
1471
+
1472
+
1473
+ class LexerState:
1474
+ #--
1475
+
1476
+ __slots__ = 'text', 'line_ctr', 'last_token'
1477
+
1478
+ text: str
1479
+ line_ctr: LineCounter
1480
+ last_token: Optional[Token]
1481
+
1482
+ def __init__(self, text: str, line_ctr: Optional[LineCounter]=None, last_token: Optional[Token]=None):
1483
+ self.text = text
1484
+ self.line_ctr = line_ctr or LineCounter(b'\n' if isinstance(text, bytes) else '\n')
1485
+ self.last_token = last_token
1486
+
1487
+ def __eq__(self, other):
1488
+ if not isinstance(other, LexerState):
1489
+ return NotImplemented
1490
+
1491
+ return self.text is other.text and self.line_ctr == other.line_ctr and self.last_token == other.last_token
1492
+
1493
+ def __copy__(self):
1494
+ return type(self)(self.text, copy(self.line_ctr), self.last_token)
1495
+
1496
+
1497
+ class LexerThread:
1498
+ #--
1499
+
1500
+ def __init__(self, lexer: 'Lexer', lexer_state: LexerState):
1501
+ self.lexer = lexer
1502
+ self.state = lexer_state
1503
+
1504
+ @classmethod
1505
+ def from_text(cls, lexer: 'Lexer', text: str) -> 'LexerThread':
1506
+ return cls(lexer, LexerState(text))
1507
+
1508
+ def lex(self, parser_state):
1509
+ return self.lexer.lex(self.state, parser_state)
1510
+
1511
+ def __copy__(self):
1512
+ return type(self)(self.lexer, copy(self.state))
1513
+
1514
+ _Token = Token
1515
+
1516
+
1517
+ _Callback = Callable[[Token], Token]
1518
+
1519
+ class Lexer(ABC):
1520
+ #--
1521
+ @abstractmethod
1522
+ def lex(self, lexer_state: LexerState, parser_state: Any) -> Iterator[Token]:
1523
+ return NotImplemented
1524
+
1525
+ def make_lexer_state(self, text):
1526
+ #--
1527
+ return LexerState(text)
1528
+
1529
+
1530
+ def _check_regex_collisions(terminal_to_regexp: Dict[TerminalDef, str], comparator, strict_mode, max_collisions_to_show=8):
1531
+ if not comparator:
1532
+ comparator = interegular.Comparator.from_regexes(terminal_to_regexp)
1533
+
1534
+ ##
1535
+
1536
+ ##
1537
+
1538
+ max_time = 2 if strict_mode else 0.2
1539
+
1540
+ ##
1541
+
1542
+ if comparator.count_marked_pairs() >= max_collisions_to_show:
1543
+ return
1544
+ for group in classify(terminal_to_regexp, lambda t: t.priority).values():
1545
+ for a, b in comparator.check(group, skip_marked=True):
1546
+ assert a.priority == b.priority
1547
+ ##
1548
+
1549
+ comparator.mark(a, b)
1550
+
1551
+ ##
1552
+
1553
+ message = f"Collision between Terminals {a.name} and {b.name}. "
1554
+ try:
1555
+ example = comparator.get_example_overlap(a, b, max_time).format_multiline()
1556
+ except ValueError:
1557
+ ##
1558
+
1559
+ example = "No example could be found fast enough. However, the collision does still exists"
1560
+ if strict_mode:
1561
+ raise LexError(f"{message}\n{example}")
1562
+ logger.warning("%s The lexer will choose between them arbitrarily.\n%s", message, example)
1563
+ if comparator.count_marked_pairs() >= max_collisions_to_show:
1564
+ logger.warning("Found 8 regex collisions, will not check for more.")
1565
+ return
1566
+
1567
+
1568
+ class AbstractBasicLexer(Lexer):
1569
+ terminals_by_name: Dict[str, TerminalDef]
1570
+
1571
+ @abstractmethod
1572
+ def __init__(self, conf: 'LexerConf', comparator=None) -> None:
1573
+ ...
1574
+
1575
+ @abstractmethod
1576
+ def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token:
1577
+ ...
1578
+
1579
+ def lex(self, state: LexerState, parser_state: Any) -> Iterator[Token]:
1580
+ with suppress(EOFError):
1581
+ while True:
1582
+ yield self.next_token(state, parser_state)
1583
+
1584
+
1585
+ class BasicLexer(AbstractBasicLexer):
1586
+ terminals: Collection[TerminalDef]
1587
+ ignore_types: FrozenSet[str]
1588
+ newline_types: FrozenSet[str]
1589
+ user_callbacks: Dict[str, _Callback]
1590
+ callback: Dict[str, _Callback]
1591
+ re: ModuleType
1592
+
1593
+ def __init__(self, conf: 'LexerConf', comparator=None) -> None:
1594
+ terminals = list(conf.terminals)
1595
+ assert all(isinstance(t, TerminalDef) for t in terminals), terminals
1596
+
1597
+ self.re = conf.re_module
1598
+
1599
+ if not conf.skip_validation:
1600
+ ##
1601
+
1602
+ terminal_to_regexp = {}
1603
+ for t in terminals:
1604
+ regexp = t.pattern.to_regexp()
1605
+ try:
1606
+ self.re.compile(regexp, conf.g_regex_flags)
1607
+ except self.re.error:
1608
+ raise LexError("Cannot compile token %s: %s" % (t.name, t.pattern))
1609
+
1610
+ if t.pattern.min_width == 0:
1611
+ raise LexError("Lexer does not allow zero-width terminals. (%s: %s)" % (t.name, t.pattern))
1612
+ if t.pattern.type == "re":
1613
+ terminal_to_regexp[t] = regexp
1614
+
1615
+ if not (set(conf.ignore) <= {t.name for t in terminals}):
1616
+ raise LexError("Ignore terminals are not defined: %s" % (set(conf.ignore) - {t.name for t in terminals}))
1617
+
1618
+ if has_interegular:
1619
+ _check_regex_collisions(terminal_to_regexp, comparator, conf.strict)
1620
+ elif conf.strict:
1621
+ raise LexError("interegular must be installed for strict mode. Use `pip install 'lark[interegular]'`.")
1622
+
1623
+ ##
1624
+
1625
+ self.newline_types = frozenset(t.name for t in terminals if _regexp_has_newline(t.pattern.to_regexp()))
1626
+ self.ignore_types = frozenset(conf.ignore)
1627
+
1628
+ terminals.sort(key=lambda x: (-x.priority, -x.pattern.max_width, -len(x.pattern.value), x.name))
1629
+ self.terminals = terminals
1630
+ self.user_callbacks = conf.callbacks
1631
+ self.g_regex_flags = conf.g_regex_flags
1632
+ self.use_bytes = conf.use_bytes
1633
+ self.terminals_by_name = conf.terminals_by_name
1634
+
1635
+ self._scanner = None
1636
+
1637
+ def _build_scanner(self):
1638
+ terminals, self.callback = _create_unless(self.terminals, self.g_regex_flags, self.re, self.use_bytes)
1639
+ assert all(self.callback.values())
1640
+
1641
+ for type_, f in self.user_callbacks.items():
1642
+ if type_ in self.callback:
1643
+ ##
1644
+
1645
+ self.callback[type_] = CallChain(self.callback[type_], f, lambda t: t.type == type_)
1646
+ else:
1647
+ self.callback[type_] = f
1648
+
1649
+ self._scanner = Scanner(terminals, self.g_regex_flags, self.re, self.use_bytes)
1650
+
1651
+ @property
1652
+ def scanner(self):
1653
+ if self._scanner is None:
1654
+ self._build_scanner()
1655
+ return self._scanner
1656
+
1657
+ def match(self, text, pos):
1658
+ return self.scanner.match(text, pos)
1659
+
1660
+ def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token:
1661
+ line_ctr = lex_state.line_ctr
1662
+ while line_ctr.char_pos < len(lex_state.text):
1663
+ res = self.match(lex_state.text, line_ctr.char_pos)
1664
+ if not res:
1665
+ allowed = self.scanner.allowed_types - self.ignore_types
1666
+ if not allowed:
1667
+ allowed = {"<END-OF-FILE>"}
1668
+ raise UnexpectedCharacters(lex_state.text, line_ctr.char_pos, line_ctr.line, line_ctr.column,
1669
+ allowed=allowed, token_history=lex_state.last_token and [lex_state.last_token],
1670
+ state=parser_state, terminals_by_name=self.terminals_by_name)
1671
+
1672
+ value, type_ = res
1673
+
1674
+ ignored = type_ in self.ignore_types
1675
+ t = None
1676
+ if not ignored or type_ in self.callback:
1677
+ t = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column)
1678
+ line_ctr.feed(value, type_ in self.newline_types)
1679
+ if t is not None:
1680
+ t.end_line = line_ctr.line
1681
+ t.end_column = line_ctr.column
1682
+ t.end_pos = line_ctr.char_pos
1683
+ if t.type in self.callback:
1684
+ t = self.callback[t.type](t)
1685
+ if not ignored:
1686
+ if not isinstance(t, Token):
1687
+ raise LexError("Callbacks must return a token (returned %r)" % t)
1688
+ lex_state.last_token = t
1689
+ return t
1690
+
1691
+ ##
1692
+
1693
+ raise EOFError(self)
1694
+
1695
+
1696
+ class ContextualLexer(Lexer):
1697
+ lexers: Dict[int, AbstractBasicLexer]
1698
+ root_lexer: AbstractBasicLexer
1699
+
1700
+ BasicLexer: Type[AbstractBasicLexer] = BasicLexer
1701
+
1702
+ def __init__(self, conf: 'LexerConf', states: Dict[int, Collection[str]], always_accept: Collection[str]=()) -> None:
1703
+ terminals = list(conf.terminals)
1704
+ terminals_by_name = conf.terminals_by_name
1705
+
1706
+ trad_conf = copy(conf)
1707
+ trad_conf.terminals = terminals
1708
+
1709
+ if has_interegular and not conf.skip_validation:
1710
+ comparator = interegular.Comparator.from_regexes({t: t.pattern.to_regexp() for t in terminals})
1711
+ else:
1712
+ comparator = None
1713
+ lexer_by_tokens: Dict[FrozenSet[str], AbstractBasicLexer] = {}
1714
+ self.lexers = {}
1715
+ for state, accepts in states.items():
1716
+ key = frozenset(accepts)
1717
+ try:
1718
+ lexer = lexer_by_tokens[key]
1719
+ except KeyError:
1720
+ accepts = set(accepts) | set(conf.ignore) | set(always_accept)
1721
+ lexer_conf = copy(trad_conf)
1722
+ lexer_conf.terminals = [terminals_by_name[n] for n in accepts if n in terminals_by_name]
1723
+ lexer = self.BasicLexer(lexer_conf, comparator)
1724
+ lexer_by_tokens[key] = lexer
1725
+
1726
+ self.lexers[state] = lexer
1727
+
1728
+ assert trad_conf.terminals is terminals
1729
+ trad_conf.skip_validation = True ##
1730
+
1731
+ self.root_lexer = self.BasicLexer(trad_conf, comparator)
1732
+
1733
+ def lex(self, lexer_state: LexerState, parser_state: 'ParserState') -> Iterator[Token]:
1734
+ try:
1735
+ while True:
1736
+ lexer = self.lexers[parser_state.position]
1737
+ yield lexer.next_token(lexer_state, parser_state)
1738
+ except EOFError:
1739
+ pass
1740
+ except UnexpectedCharacters as e:
1741
+ ##
1742
+
1743
+ ##
1744
+
1745
+ try:
1746
+ last_token = lexer_state.last_token ##
1747
+
1748
+ token = self.root_lexer.next_token(lexer_state, parser_state)
1749
+ raise UnexpectedToken(token, e.allowed, state=parser_state, token_history=[last_token], terminals_by_name=self.root_lexer.terminals_by_name)
1750
+ except UnexpectedCharacters:
1751
+ raise e ##
1752
+
1753
+
1754
+
1755
+
1756
+ _ParserArgType: 'TypeAlias' = 'Literal["earley", "lalr", "cyk", "auto"]'
1757
+ _LexerArgType: 'TypeAlias' = 'Union[Literal["auto", "basic", "contextual", "dynamic", "dynamic_complete"], Type[Lexer]]'
1758
+ _LexerCallback = Callable[[Token], Token]
1759
+ ParserCallbacks = Dict[str, Callable]
1760
+
1761
+ class LexerConf(Serialize):
1762
+ __serialize_fields__ = 'terminals', 'ignore', 'g_regex_flags', 'use_bytes', 'lexer_type'
1763
+ __serialize_namespace__ = TerminalDef,
1764
+
1765
+ terminals: Collection[TerminalDef]
1766
+ re_module: ModuleType
1767
+ ignore: Collection[str]
1768
+ postlex: 'Optional[PostLex]'
1769
+ callbacks: Dict[str, _LexerCallback]
1770
+ g_regex_flags: int
1771
+ skip_validation: bool
1772
+ use_bytes: bool
1773
+ lexer_type: Optional[_LexerArgType]
1774
+ strict: bool
1775
+
1776
+ def __init__(self, terminals: Collection[TerminalDef], re_module: ModuleType, ignore: Collection[str]=(), postlex: 'Optional[PostLex]'=None,
1777
+ callbacks: Optional[Dict[str, _LexerCallback]]=None, g_regex_flags: int=0, skip_validation: bool=False, use_bytes: bool=False, strict: bool=False):
1778
+ self.terminals = terminals
1779
+ self.terminals_by_name = {t.name: t for t in self.terminals}
1780
+ assert len(self.terminals) == len(self.terminals_by_name)
1781
+ self.ignore = ignore
1782
+ self.postlex = postlex
1783
+ self.callbacks = callbacks or {}
1784
+ self.g_regex_flags = g_regex_flags
1785
+ self.re_module = re_module
1786
+ self.skip_validation = skip_validation
1787
+ self.use_bytes = use_bytes
1788
+ self.strict = strict
1789
+ self.lexer_type = None
1790
+
1791
+ def _deserialize(self):
1792
+ self.terminals_by_name = {t.name: t for t in self.terminals}
1793
+
1794
+ def __deepcopy__(self, memo=None):
1795
+ return type(self)(
1796
+ deepcopy(self.terminals, memo),
1797
+ self.re_module,
1798
+ deepcopy(self.ignore, memo),
1799
+ deepcopy(self.postlex, memo),
1800
+ deepcopy(self.callbacks, memo),
1801
+ deepcopy(self.g_regex_flags, memo),
1802
+ deepcopy(self.skip_validation, memo),
1803
+ deepcopy(self.use_bytes, memo),
1804
+ )
1805
+
1806
+ class ParserConf(Serialize):
1807
+ __serialize_fields__ = 'rules', 'start', 'parser_type'
1808
+
1809
+ rules: List['Rule']
1810
+ callbacks: ParserCallbacks
1811
+ start: List[str]
1812
+ parser_type: _ParserArgType
1813
+
1814
+ def __init__(self, rules: List['Rule'], callbacks: ParserCallbacks, start: List[str]):
1815
+ assert isinstance(start, list)
1816
+ self.rules = rules
1817
+ self.callbacks = callbacks
1818
+ self.start = start
1819
+
1820
+
1821
+ from functools import partial, wraps
1822
+ from itertools import product
1823
+
1824
+
1825
+ class ExpandSingleChild:
1826
+ def __init__(self, node_builder):
1827
+ self.node_builder = node_builder
1828
+
1829
+ def __call__(self, children):
1830
+ if len(children) == 1:
1831
+ return children[0]
1832
+ else:
1833
+ return self.node_builder(children)
1834
+
1835
+
1836
+
1837
+ class PropagatePositions:
1838
+ def __init__(self, node_builder, node_filter=None):
1839
+ self.node_builder = node_builder
1840
+ self.node_filter = node_filter
1841
+
1842
+ def __call__(self, children):
1843
+ res = self.node_builder(children)
1844
+
1845
+ if isinstance(res, Tree):
1846
+ ##
1847
+
1848
+ ##
1849
+
1850
+ ##
1851
+
1852
+ ##
1853
+
1854
+
1855
+ res_meta = res.meta
1856
+
1857
+ first_meta = self._pp_get_meta(children)
1858
+ if first_meta is not None:
1859
+ if not hasattr(res_meta, 'line'):
1860
+ ##
1861
+
1862
+ res_meta.line = getattr(first_meta, 'container_line', first_meta.line)
1863
+ res_meta.column = getattr(first_meta, 'container_column', first_meta.column)
1864
+ res_meta.start_pos = getattr(first_meta, 'container_start_pos', first_meta.start_pos)
1865
+ res_meta.empty = False
1866
+
1867
+ res_meta.container_line = getattr(first_meta, 'container_line', first_meta.line)
1868
+ res_meta.container_column = getattr(first_meta, 'container_column', first_meta.column)
1869
+ res_meta.container_start_pos = getattr(first_meta, 'container_start_pos', first_meta.start_pos)
1870
+
1871
+ last_meta = self._pp_get_meta(reversed(children))
1872
+ if last_meta is not None:
1873
+ if not hasattr(res_meta, 'end_line'):
1874
+ res_meta.end_line = getattr(last_meta, 'container_end_line', last_meta.end_line)
1875
+ res_meta.end_column = getattr(last_meta, 'container_end_column', last_meta.end_column)
1876
+ res_meta.end_pos = getattr(last_meta, 'container_end_pos', last_meta.end_pos)
1877
+ res_meta.empty = False
1878
+
1879
+ res_meta.container_end_line = getattr(last_meta, 'container_end_line', last_meta.end_line)
1880
+ res_meta.container_end_column = getattr(last_meta, 'container_end_column', last_meta.end_column)
1881
+ res_meta.container_end_pos = getattr(last_meta, 'container_end_pos', last_meta.end_pos)
1882
+
1883
+ return res
1884
+
1885
+ def _pp_get_meta(self, children):
1886
+ for c in children:
1887
+ if self.node_filter is not None and not self.node_filter(c):
1888
+ continue
1889
+ if isinstance(c, Tree):
1890
+ if not c.meta.empty:
1891
+ return c.meta
1892
+ elif isinstance(c, Token):
1893
+ return c
1894
+ elif hasattr(c, '__lark_meta__'):
1895
+ return c.__lark_meta__()
1896
+
1897
+ def make_propagate_positions(option):
1898
+ if callable(option):
1899
+ return partial(PropagatePositions, node_filter=option)
1900
+ elif option is True:
1901
+ return PropagatePositions
1902
+ elif option is False:
1903
+ return None
1904
+
1905
+ raise ConfigurationError('Invalid option for propagate_positions: %r' % option)
1906
+
1907
+
1908
+ class ChildFilter:
1909
+ def __init__(self, to_include, append_none, node_builder):
1910
+ self.node_builder = node_builder
1911
+ self.to_include = to_include
1912
+ self.append_none = append_none
1913
+
1914
+ def __call__(self, children):
1915
+ filtered = []
1916
+
1917
+ for i, to_expand, add_none in self.to_include:
1918
+ if add_none:
1919
+ filtered += [None] * add_none
1920
+ if to_expand:
1921
+ filtered += children[i].children
1922
+ else:
1923
+ filtered.append(children[i])
1924
+
1925
+ if self.append_none:
1926
+ filtered += [None] * self.append_none
1927
+
1928
+ return self.node_builder(filtered)
1929
+
1930
+
1931
+ class ChildFilterLALR(ChildFilter):
1932
+ #--
1933
+
1934
+ def __call__(self, children):
1935
+ filtered = []
1936
+ for i, to_expand, add_none in self.to_include:
1937
+ if add_none:
1938
+ filtered += [None] * add_none
1939
+ if to_expand:
1940
+ if filtered:
1941
+ filtered += children[i].children
1942
+ else: ##
1943
+
1944
+ filtered = children[i].children
1945
+ else:
1946
+ filtered.append(children[i])
1947
+
1948
+ if self.append_none:
1949
+ filtered += [None] * self.append_none
1950
+
1951
+ return self.node_builder(filtered)
1952
+
1953
+
1954
+ class ChildFilterLALR_NoPlaceholders(ChildFilter):
1955
+ #--
1956
+ def __init__(self, to_include, node_builder):
1957
+ self.node_builder = node_builder
1958
+ self.to_include = to_include
1959
+
1960
+ def __call__(self, children):
1961
+ filtered = []
1962
+ for i, to_expand in self.to_include:
1963
+ if to_expand:
1964
+ if filtered:
1965
+ filtered += children[i].children
1966
+ else: ##
1967
+
1968
+ filtered = children[i].children
1969
+ else:
1970
+ filtered.append(children[i])
1971
+ return self.node_builder(filtered)
1972
+
1973
+
1974
+ def _should_expand(sym):
1975
+ return not sym.is_term and sym.name.startswith('_')
1976
+
1977
+
1978
+ def maybe_create_child_filter(expansion, keep_all_tokens, ambiguous, _empty_indices: List[bool]):
1979
+ ##
1980
+
1981
+ if _empty_indices:
1982
+ assert _empty_indices.count(False) == len(expansion)
1983
+ s = ''.join(str(int(b)) for b in _empty_indices)
1984
+ empty_indices = [len(ones) for ones in s.split('0')]
1985
+ assert len(empty_indices) == len(expansion)+1, (empty_indices, len(expansion))
1986
+ else:
1987
+ empty_indices = [0] * (len(expansion)+1)
1988
+
1989
+ to_include = []
1990
+ nones_to_add = 0
1991
+ for i, sym in enumerate(expansion):
1992
+ nones_to_add += empty_indices[i]
1993
+ if keep_all_tokens or not (sym.is_term and sym.filter_out):
1994
+ to_include.append((i, _should_expand(sym), nones_to_add))
1995
+ nones_to_add = 0
1996
+
1997
+ nones_to_add += empty_indices[len(expansion)]
1998
+
1999
+ if _empty_indices or len(to_include) < len(expansion) or any(to_expand for i, to_expand,_ in to_include):
2000
+ if _empty_indices or ambiguous:
2001
+ return partial(ChildFilter if ambiguous else ChildFilterLALR, to_include, nones_to_add)
2002
+ else:
2003
+ ##
2004
+
2005
+ return partial(ChildFilterLALR_NoPlaceholders, [(i, x) for i,x,_ in to_include])
2006
+
2007
+
2008
+ class AmbiguousExpander:
2009
+ #--
2010
+ def __init__(self, to_expand, tree_class, node_builder):
2011
+ self.node_builder = node_builder
2012
+ self.tree_class = tree_class
2013
+ self.to_expand = to_expand
2014
+
2015
+ def __call__(self, children):
2016
+ def _is_ambig_tree(t):
2017
+ return hasattr(t, 'data') and t.data == '_ambig'
2018
+
2019
+ ##
2020
+
2021
+ ##
2022
+
2023
+ ##
2024
+
2025
+ ##
2026
+
2027
+ ambiguous = []
2028
+ for i, child in enumerate(children):
2029
+ if _is_ambig_tree(child):
2030
+ if i in self.to_expand:
2031
+ ambiguous.append(i)
2032
+
2033
+ child.expand_kids_by_data('_ambig')
2034
+
2035
+ if not ambiguous:
2036
+ return self.node_builder(children)
2037
+
2038
+ expand = [child.children if i in ambiguous else (child,) for i, child in enumerate(children)]
2039
+ return self.tree_class('_ambig', [self.node_builder(list(f)) for f in product(*expand)])
2040
+
2041
+
2042
+ def maybe_create_ambiguous_expander(tree_class, expansion, keep_all_tokens):
2043
+ to_expand = [i for i, sym in enumerate(expansion)
2044
+ if keep_all_tokens or ((not (sym.is_term and sym.filter_out)) and _should_expand(sym))]
2045
+ if to_expand:
2046
+ return partial(AmbiguousExpander, to_expand, tree_class)
2047
+
2048
+
2049
+ class AmbiguousIntermediateExpander:
2050
+ #--
2051
+
2052
+ def __init__(self, tree_class, node_builder):
2053
+ self.node_builder = node_builder
2054
+ self.tree_class = tree_class
2055
+
2056
+ def __call__(self, children):
2057
+ def _is_iambig_tree(child):
2058
+ return hasattr(child, 'data') and child.data == '_iambig'
2059
+
2060
+ def _collapse_iambig(children):
2061
+ #--
2062
+
2063
+ ##
2064
+
2065
+ ##
2066
+
2067
+ if children and _is_iambig_tree(children[0]):
2068
+ iambig_node = children[0]
2069
+ result = []
2070
+ for grandchild in iambig_node.children:
2071
+ collapsed = _collapse_iambig(grandchild.children)
2072
+ if collapsed:
2073
+ for child in collapsed:
2074
+ child.children += children[1:]
2075
+ result += collapsed
2076
+ else:
2077
+ new_tree = self.tree_class('_inter', grandchild.children + children[1:])
2078
+ result.append(new_tree)
2079
+ return result
2080
+
2081
+ collapsed = _collapse_iambig(children)
2082
+ if collapsed:
2083
+ processed_nodes = [self.node_builder(c.children) for c in collapsed]
2084
+ return self.tree_class('_ambig', processed_nodes)
2085
+
2086
+ return self.node_builder(children)
2087
+
2088
+
2089
+
2090
+ def inplace_transformer(func):
2091
+ @wraps(func)
2092
+ def f(children):
2093
+ ##
2094
+
2095
+ tree = Tree(func.__name__, children)
2096
+ return func(tree)
2097
+ return f
2098
+
2099
+
2100
+ def apply_visit_wrapper(func, name, wrapper):
2101
+ if wrapper is _vargs_meta or wrapper is _vargs_meta_inline:
2102
+ raise NotImplementedError("Meta args not supported for internal transformer")
2103
+
2104
+ @wraps(func)
2105
+ def f(children):
2106
+ return wrapper(func, name, children, None)
2107
+ return f
2108
+
2109
+
2110
+ class ParseTreeBuilder:
2111
+ def __init__(self, rules, tree_class, propagate_positions=False, ambiguous=False, maybe_placeholders=False):
2112
+ self.tree_class = tree_class
2113
+ self.propagate_positions = propagate_positions
2114
+ self.ambiguous = ambiguous
2115
+ self.maybe_placeholders = maybe_placeholders
2116
+
2117
+ self.rule_builders = list(self._init_builders(rules))
2118
+
2119
+ def _init_builders(self, rules):
2120
+ propagate_positions = make_propagate_positions(self.propagate_positions)
2121
+
2122
+ for rule in rules:
2123
+ options = rule.options
2124
+ keep_all_tokens = options.keep_all_tokens
2125
+ expand_single_child = options.expand1
2126
+
2127
+ wrapper_chain = list(filter(None, [
2128
+ (expand_single_child and not rule.alias) and ExpandSingleChild,
2129
+ maybe_create_child_filter(rule.expansion, keep_all_tokens, self.ambiguous, options.empty_indices if self.maybe_placeholders else None),
2130
+ propagate_positions,
2131
+ self.ambiguous and maybe_create_ambiguous_expander(self.tree_class, rule.expansion, keep_all_tokens),
2132
+ self.ambiguous and partial(AmbiguousIntermediateExpander, self.tree_class)
2133
+ ]))
2134
+
2135
+ yield rule, wrapper_chain
2136
+
2137
+ def create_callback(self, transformer=None):
2138
+ callbacks = {}
2139
+
2140
+ default_handler = getattr(transformer, '__default__', None)
2141
+ if default_handler:
2142
+ def default_callback(data, children):
2143
+ return default_handler(data, children, None)
2144
+ else:
2145
+ default_callback = self.tree_class
2146
+
2147
+ for rule, wrapper_chain in self.rule_builders:
2148
+
2149
+ user_callback_name = rule.alias or rule.options.template_source or rule.origin.name
2150
+ try:
2151
+ f = getattr(transformer, user_callback_name)
2152
+ wrapper = getattr(f, 'visit_wrapper', None)
2153
+ if wrapper is not None:
2154
+ f = apply_visit_wrapper(f, user_callback_name, wrapper)
2155
+ elif isinstance(transformer, Transformer_InPlace):
2156
+ f = inplace_transformer(f)
2157
+ except AttributeError:
2158
+ f = partial(default_callback, user_callback_name)
2159
+
2160
+ for w in wrapper_chain:
2161
+ f = w(f)
2162
+
2163
+ if rule in callbacks:
2164
+ raise GrammarError("Rule '%s' already exists" % (rule,))
2165
+
2166
+ callbacks[rule] = f
2167
+
2168
+ return callbacks
2169
+
2170
+
2171
+
2172
+ class Action:
2173
+ def __init__(self, name):
2174
+ self.name = name
2175
+ def __str__(self):
2176
+ return self.name
2177
+ def __repr__(self):
2178
+ return str(self)
2179
+
2180
+ Shift = Action('Shift')
2181
+ Reduce = Action('Reduce')
2182
+
2183
+ StateT = TypeVar("StateT")
2184
+
2185
+ class ParseTableBase(Generic[StateT]):
2186
+ states: Dict[StateT, Dict[str, Tuple]]
2187
+ start_states: Dict[str, StateT]
2188
+ end_states: Dict[str, StateT]
2189
+
2190
+ def __init__(self, states, start_states, end_states):
2191
+ self.states = states
2192
+ self.start_states = start_states
2193
+ self.end_states = end_states
2194
+
2195
+ def serialize(self, memo):
2196
+ tokens = Enumerator()
2197
+
2198
+ states = {
2199
+ state: {tokens.get(token): ((1, arg.serialize(memo)) if action is Reduce else (0, arg))
2200
+ for token, (action, arg) in actions.items()}
2201
+ for state, actions in self.states.items()
2202
+ }
2203
+
2204
+ return {
2205
+ 'tokens': tokens.reversed(),
2206
+ 'states': states,
2207
+ 'start_states': self.start_states,
2208
+ 'end_states': self.end_states,
2209
+ }
2210
+
2211
+ @classmethod
2212
+ def deserialize(cls, data, memo):
2213
+ tokens = data['tokens']
2214
+ states = {
2215
+ state: {tokens[token]: ((Reduce, Rule.deserialize(arg, memo)) if action==1 else (Shift, arg))
2216
+ for token, (action, arg) in actions.items()}
2217
+ for state, actions in data['states'].items()
2218
+ }
2219
+ return cls(states, data['start_states'], data['end_states'])
2220
+
2221
+ class ParseTable(ParseTableBase['State']):
2222
+ #--
2223
+ pass
2224
+
2225
+
2226
+ class IntParseTable(ParseTableBase[int]):
2227
+ #--
2228
+
2229
+ @classmethod
2230
+ def from_ParseTable(cls, parse_table: ParseTable):
2231
+ enum = list(parse_table.states)
2232
+ state_to_idx: Dict['State', int] = {s:i for i,s in enumerate(enum)}
2233
+ int_states = {}
2234
+
2235
+ for s, la in parse_table.states.items():
2236
+ la = {k:(v[0], state_to_idx[v[1]]) if v[0] is Shift else v
2237
+ for k,v in la.items()}
2238
+ int_states[ state_to_idx[s] ] = la
2239
+
2240
+
2241
+ start_states = {start:state_to_idx[s] for start, s in parse_table.start_states.items()}
2242
+ end_states = {start:state_to_idx[s] for start, s in parse_table.end_states.items()}
2243
+ return cls(int_states, start_states, end_states)
2244
+
2245
+
2246
+
2247
+ class ParseConf(Generic[StateT]):
2248
+ __slots__ = 'parse_table', 'callbacks', 'start', 'start_state', 'end_state', 'states'
2249
+
2250
+ parse_table: ParseTableBase[StateT]
2251
+ callbacks: ParserCallbacks
2252
+ start: str
2253
+
2254
+ start_state: StateT
2255
+ end_state: StateT
2256
+ states: Dict[StateT, Dict[str, tuple]]
2257
+
2258
+ def __init__(self, parse_table: ParseTableBase[StateT], callbacks: ParserCallbacks, start: str):
2259
+ self.parse_table = parse_table
2260
+
2261
+ self.start_state = self.parse_table.start_states[start]
2262
+ self.end_state = self.parse_table.end_states[start]
2263
+ self.states = self.parse_table.states
2264
+
2265
+ self.callbacks = callbacks
2266
+ self.start = start
2267
+
2268
+ class ParserState(Generic[StateT]):
2269
+ __slots__ = 'parse_conf', 'lexer', 'state_stack', 'value_stack'
2270
+
2271
+ parse_conf: ParseConf[StateT]
2272
+ lexer: LexerThread
2273
+ state_stack: List[StateT]
2274
+ value_stack: list
2275
+
2276
+ def __init__(self, parse_conf: ParseConf[StateT], lexer: LexerThread, state_stack=None, value_stack=None):
2277
+ self.parse_conf = parse_conf
2278
+ self.lexer = lexer
2279
+ self.state_stack = state_stack or [self.parse_conf.start_state]
2280
+ self.value_stack = value_stack or []
2281
+
2282
+ @property
2283
+ def position(self) -> StateT:
2284
+ return self.state_stack[-1]
2285
+
2286
+ ##
2287
+
2288
+ def __eq__(self, other) -> bool:
2289
+ if not isinstance(other, ParserState):
2290
+ return NotImplemented
2291
+ return len(self.state_stack) == len(other.state_stack) and self.position == other.position
2292
+
2293
+ def __copy__(self):
2294
+ return self.copy()
2295
+
2296
+ def copy(self, deepcopy_values=True) -> 'ParserState[StateT]':
2297
+ return type(self)(
2298
+ self.parse_conf,
2299
+ self.lexer, ##
2300
+
2301
+ copy(self.state_stack),
2302
+ deepcopy(self.value_stack) if deepcopy_values else copy(self.value_stack),
2303
+ )
2304
+
2305
+ def feed_token(self, token: Token, is_end=False) -> Any:
2306
+ state_stack = self.state_stack
2307
+ value_stack = self.value_stack
2308
+ states = self.parse_conf.states
2309
+ end_state = self.parse_conf.end_state
2310
+ callbacks = self.parse_conf.callbacks
2311
+
2312
+ while True:
2313
+ state = state_stack[-1]
2314
+ try:
2315
+ action, arg = states[state][token.type]
2316
+ except KeyError:
2317
+ expected = {s for s in states[state].keys() if s.isupper()}
2318
+ raise UnexpectedToken(token, expected, state=self, interactive_parser=None)
2319
+
2320
+ assert arg != end_state
2321
+
2322
+ if action is Shift:
2323
+ ##
2324
+
2325
+ assert not is_end
2326
+ state_stack.append(arg)
2327
+ value_stack.append(token if token.type not in callbacks else callbacks[token.type](token))
2328
+ return
2329
+ else:
2330
+ ##
2331
+
2332
+ rule = arg
2333
+ size = len(rule.expansion)
2334
+ if size:
2335
+ s = value_stack[-size:]
2336
+ del state_stack[-size:]
2337
+ del value_stack[-size:]
2338
+ else:
2339
+ s = []
2340
+
2341
+ value = callbacks[rule](s) if callbacks else s
2342
+
2343
+ _action, new_state = states[state_stack[-1]][rule.origin.name]
2344
+ assert _action is Shift
2345
+ state_stack.append(new_state)
2346
+ value_stack.append(value)
2347
+
2348
+ if is_end and state_stack[-1] == end_state:
2349
+ return value_stack[-1]
2350
+
2351
+
2352
+ class LALR_Parser(Serialize):
2353
+ def __init__(self, parser_conf: ParserConf, debug: bool=False, strict: bool=False):
2354
+ analysis = LALR_Analyzer(parser_conf, debug=debug, strict=strict)
2355
+ analysis.compute_lalr()
2356
+ callbacks = parser_conf.callbacks
2357
+
2358
+ self._parse_table = analysis.parse_table
2359
+ self.parser_conf = parser_conf
2360
+ self.parser = _Parser(analysis.parse_table, callbacks, debug)
2361
+
2362
+ @classmethod
2363
+ def deserialize(cls, data, memo, callbacks, debug=False):
2364
+ inst = cls.__new__(cls)
2365
+ inst._parse_table = IntParseTable.deserialize(data, memo)
2366
+ inst.parser = _Parser(inst._parse_table, callbacks, debug)
2367
+ return inst
2368
+
2369
+ def serialize(self, memo: Any = None) -> Dict[str, Any]:
2370
+ return self._parse_table.serialize(memo)
2371
+
2372
+ def parse_interactive(self, lexer: LexerThread, start: str):
2373
+ return self.parser.parse(lexer, start, start_interactive=True)
2374
+
2375
+ def parse(self, lexer, start, on_error=None):
2376
+ try:
2377
+ return self.parser.parse(lexer, start)
2378
+ except UnexpectedInput as e:
2379
+ if on_error is None:
2380
+ raise
2381
+
2382
+ while True:
2383
+ if isinstance(e, UnexpectedCharacters):
2384
+ s = e.interactive_parser.lexer_thread.state
2385
+ p = s.line_ctr.char_pos
2386
+
2387
+ if not on_error(e):
2388
+ raise e
2389
+
2390
+ if isinstance(e, UnexpectedCharacters):
2391
+ ##
2392
+
2393
+ if p == s.line_ctr.char_pos:
2394
+ s.line_ctr.feed(s.text[p:p+1])
2395
+
2396
+ try:
2397
+ return e.interactive_parser.resume_parse()
2398
+ except UnexpectedToken as e2:
2399
+ if (isinstance(e, UnexpectedToken)
2400
+ and e.token.type == e2.token.type == '$END'
2401
+ and e.interactive_parser == e2.interactive_parser):
2402
+ ##
2403
+
2404
+ raise e2
2405
+ e = e2
2406
+ except UnexpectedCharacters as e2:
2407
+ e = e2
2408
+
2409
+
2410
+ class _Parser:
2411
+ parse_table: ParseTableBase
2412
+ callbacks: ParserCallbacks
2413
+ debug: bool
2414
+
2415
+ def __init__(self, parse_table: ParseTableBase, callbacks: ParserCallbacks, debug: bool=False):
2416
+ self.parse_table = parse_table
2417
+ self.callbacks = callbacks
2418
+ self.debug = debug
2419
+
2420
+ def parse(self, lexer: LexerThread, start: str, value_stack=None, state_stack=None, start_interactive=False):
2421
+ parse_conf = ParseConf(self.parse_table, self.callbacks, start)
2422
+ parser_state = ParserState(parse_conf, lexer, state_stack, value_stack)
2423
+ if start_interactive:
2424
+ return InteractiveParser(self, parser_state, parser_state.lexer)
2425
+ return self.parse_from_state(parser_state)
2426
+
2427
+
2428
+ def parse_from_state(self, state: ParserState, last_token: Optional[Token]=None):
2429
+ #--
2430
+ try:
2431
+ token = last_token
2432
+ for token in state.lexer.lex(state):
2433
+ assert token is not None
2434
+ state.feed_token(token)
2435
+
2436
+ end_token = Token.new_borrow_pos('$END', '', token) if token else Token('$END', '', 0, 1, 1)
2437
+ return state.feed_token(end_token, True)
2438
+ except UnexpectedInput as e:
2439
+ try:
2440
+ e.interactive_parser = InteractiveParser(self, state, state.lexer)
2441
+ except NameError:
2442
+ pass
2443
+ raise e
2444
+ except Exception as e:
2445
+ if self.debug:
2446
+ print("")
2447
+ print("STATE STACK DUMP")
2448
+ print("----------------")
2449
+ for i, s in enumerate(state.state_stack):
2450
+ print('%d)' % i , s)
2451
+ print("")
2452
+
2453
+ raise
2454
+
2455
+
2456
+ class InteractiveParser:
2457
+ #--
2458
+ def __init__(self, parser, parser_state: ParserState, lexer_thread: LexerThread):
2459
+ self.parser = parser
2460
+ self.parser_state = parser_state
2461
+ self.lexer_thread = lexer_thread
2462
+ self.result = None
2463
+
2464
+ @property
2465
+ def lexer_state(self) -> LexerThread:
2466
+ warnings.warn("lexer_state will be removed in subsequent releases. Use lexer_thread instead.", DeprecationWarning)
2467
+ return self.lexer_thread
2468
+
2469
+ def feed_token(self, token: Token):
2470
+ #--
2471
+ return self.parser_state.feed_token(token, token.type == '$END')
2472
+
2473
+ def iter_parse(self) -> Iterator[Token]:
2474
+ #--
2475
+ for token in self.lexer_thread.lex(self.parser_state):
2476
+ yield token
2477
+ self.result = self.feed_token(token)
2478
+
2479
+ def exhaust_lexer(self) -> List[Token]:
2480
+ #--
2481
+ return list(self.iter_parse())
2482
+
2483
+
2484
+ def feed_eof(self, last_token=None):
2485
+ #--
2486
+ eof = Token.new_borrow_pos('$END', '', last_token) if last_token is not None else self.lexer_thread._Token('$END', '', 0, 1, 1)
2487
+ return self.feed_token(eof)
2488
+
2489
+
2490
+ def __copy__(self):
2491
+ #--
2492
+ return self.copy()
2493
+
2494
+ def copy(self, deepcopy_values=True):
2495
+ return type(self)(
2496
+ self.parser,
2497
+ self.parser_state.copy(deepcopy_values=deepcopy_values),
2498
+ copy(self.lexer_thread),
2499
+ )
2500
+
2501
+ def __eq__(self, other):
2502
+ if not isinstance(other, InteractiveParser):
2503
+ return False
2504
+
2505
+ return self.parser_state == other.parser_state and self.lexer_thread == other.lexer_thread
2506
+
2507
+ def as_immutable(self):
2508
+ #--
2509
+ p = copy(self)
2510
+ return ImmutableInteractiveParser(p.parser, p.parser_state, p.lexer_thread)
2511
+
2512
+ def pretty(self):
2513
+ #--
2514
+ out = ["Parser choices:"]
2515
+ for k, v in self.choices().items():
2516
+ out.append('\t- %s -> %r' % (k, v))
2517
+ out.append('stack size: %s' % len(self.parser_state.state_stack))
2518
+ return '\n'.join(out)
2519
+
2520
+ def choices(self):
2521
+ #--
2522
+ return self.parser_state.parse_conf.parse_table.states[self.parser_state.position]
2523
+
2524
+ def accepts(self):
2525
+ #--
2526
+ accepts = set()
2527
+ conf_no_callbacks = copy(self.parser_state.parse_conf)
2528
+ ##
2529
+
2530
+ ##
2531
+
2532
+ conf_no_callbacks.callbacks = {}
2533
+ for t in self.choices():
2534
+ if t.isupper(): ##
2535
+
2536
+ new_cursor = self.copy(deepcopy_values=False)
2537
+ new_cursor.parser_state.parse_conf = conf_no_callbacks
2538
+ try:
2539
+ new_cursor.feed_token(self.lexer_thread._Token(t, ''))
2540
+ except UnexpectedToken:
2541
+ pass
2542
+ else:
2543
+ accepts.add(t)
2544
+ return accepts
2545
+
2546
+ def resume_parse(self):
2547
+ #--
2548
+ return self.parser.parse_from_state(self.parser_state, last_token=self.lexer_thread.state.last_token)
2549
+
2550
+
2551
+
2552
+ class ImmutableInteractiveParser(InteractiveParser):
2553
+ #--
2554
+
2555
+ result = None
2556
+
2557
+ def __hash__(self):
2558
+ return hash((self.parser_state, self.lexer_thread))
2559
+
2560
+ def feed_token(self, token):
2561
+ c = copy(self)
2562
+ c.result = InteractiveParser.feed_token(c, token)
2563
+ return c
2564
+
2565
+ def exhaust_lexer(self):
2566
+ #--
2567
+ cursor = self.as_mutable()
2568
+ cursor.exhaust_lexer()
2569
+ return cursor.as_immutable()
2570
+
2571
+ def as_mutable(self):
2572
+ #--
2573
+ p = copy(self)
2574
+ return InteractiveParser(p.parser, p.parser_state, p.lexer_thread)
2575
+
2576
+
2577
+
2578
+ def _wrap_lexer(lexer_class):
2579
+ future_interface = getattr(lexer_class, '__future_interface__', False)
2580
+ if future_interface:
2581
+ return lexer_class
2582
+ else:
2583
+ class CustomLexerWrapper(Lexer):
2584
+ def __init__(self, lexer_conf):
2585
+ self.lexer = lexer_class(lexer_conf)
2586
+ def lex(self, lexer_state, parser_state):
2587
+ return self.lexer.lex(lexer_state.text)
2588
+ return CustomLexerWrapper
2589
+
2590
+
2591
+ def _deserialize_parsing_frontend(data, memo, lexer_conf, callbacks, options):
2592
+ parser_conf = ParserConf.deserialize(data['parser_conf'], memo)
2593
+ cls = (options and options._plugins.get('LALR_Parser')) or LALR_Parser
2594
+ parser = cls.deserialize(data['parser'], memo, callbacks, options.debug)
2595
+ parser_conf.callbacks = callbacks
2596
+ return ParsingFrontend(lexer_conf, parser_conf, options, parser=parser)
2597
+
2598
+
2599
+ _parser_creators: 'Dict[str, Callable[[LexerConf, Any, Any], Any]]' = {}
2600
+
2601
+
2602
+ class ParsingFrontend(Serialize):
2603
+ __serialize_fields__ = 'lexer_conf', 'parser_conf', 'parser'
2604
+
2605
+ lexer_conf: LexerConf
2606
+ parser_conf: ParserConf
2607
+ options: Any
2608
+
2609
+ def __init__(self, lexer_conf: LexerConf, parser_conf: ParserConf, options, parser=None):
2610
+ self.parser_conf = parser_conf
2611
+ self.lexer_conf = lexer_conf
2612
+ self.options = options
2613
+
2614
+ ##
2615
+
2616
+ if parser: ##
2617
+
2618
+ self.parser = parser
2619
+ else:
2620
+ create_parser = _parser_creators.get(parser_conf.parser_type)
2621
+ assert create_parser is not None, "{} is not supported in standalone mode".format(
2622
+ parser_conf.parser_type
2623
+ )
2624
+ self.parser = create_parser(lexer_conf, parser_conf, options)
2625
+
2626
+ ##
2627
+
2628
+ lexer_type = lexer_conf.lexer_type
2629
+ self.skip_lexer = False
2630
+ if lexer_type in ('dynamic', 'dynamic_complete'):
2631
+ assert lexer_conf.postlex is None
2632
+ self.skip_lexer = True
2633
+ return
2634
+
2635
+ if isinstance(lexer_type, type):
2636
+ assert issubclass(lexer_type, Lexer)
2637
+ self.lexer = _wrap_lexer(lexer_type)(lexer_conf)
2638
+ elif isinstance(lexer_type, str):
2639
+ create_lexer = {
2640
+ 'basic': create_basic_lexer,
2641
+ 'contextual': create_contextual_lexer,
2642
+ }[lexer_type]
2643
+ self.lexer = create_lexer(lexer_conf, self.parser, lexer_conf.postlex, options)
2644
+ else:
2645
+ raise TypeError("Bad value for lexer_type: {lexer_type}")
2646
+
2647
+ if lexer_conf.postlex:
2648
+ self.lexer = PostLexConnector(self.lexer, lexer_conf.postlex)
2649
+
2650
+ def _verify_start(self, start=None):
2651
+ if start is None:
2652
+ start_decls = self.parser_conf.start
2653
+ if len(start_decls) > 1:
2654
+ raise ConfigurationError("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse", start_decls)
2655
+ start ,= start_decls
2656
+ elif start not in self.parser_conf.start:
2657
+ raise ConfigurationError("Unknown start rule %s. Must be one of %r" % (start, self.parser_conf.start))
2658
+ return start
2659
+
2660
+ def _make_lexer_thread(self, text: str) -> Union[str, LexerThread]:
2661
+ cls = (self.options and self.options._plugins.get('LexerThread')) or LexerThread
2662
+ return text if self.skip_lexer else cls.from_text(self.lexer, text)
2663
+
2664
+ def parse(self, text: str, start=None, on_error=None):
2665
+ chosen_start = self._verify_start(start)
2666
+ kw = {} if on_error is None else {'on_error': on_error}
2667
+ stream = self._make_lexer_thread(text)
2668
+ return self.parser.parse(stream, chosen_start, **kw)
2669
+
2670
+ def parse_interactive(self, text: Optional[str]=None, start=None):
2671
+ ##
2672
+
2673
+ ##
2674
+
2675
+ chosen_start = self._verify_start(start)
2676
+ if self.parser_conf.parser_type != 'lalr':
2677
+ raise ConfigurationError("parse_interactive() currently only works with parser='lalr' ")
2678
+ stream = self._make_lexer_thread(text) ##
2679
+
2680
+ return self.parser.parse_interactive(stream, chosen_start)
2681
+
2682
+
2683
+ def _validate_frontend_args(parser, lexer) -> None:
2684
+ assert_config(parser, ('lalr', 'earley', 'cyk'))
2685
+ if not isinstance(lexer, type): ##
2686
+
2687
+ expected = {
2688
+ 'lalr': ('basic', 'contextual'),
2689
+ 'earley': ('basic', 'dynamic', 'dynamic_complete'),
2690
+ 'cyk': ('basic', ),
2691
+ }[parser]
2692
+ assert_config(lexer, expected, 'Parser %r does not support lexer %%r, expected one of %%s' % parser)
2693
+
2694
+
2695
+ def _get_lexer_callbacks(transformer, terminals):
2696
+ result = {}
2697
+ for terminal in terminals:
2698
+ callback = getattr(transformer, terminal.name, None)
2699
+ if callback is not None:
2700
+ result[terminal.name] = callback
2701
+ return result
2702
+
2703
+ class PostLexConnector:
2704
+ def __init__(self, lexer, postlexer):
2705
+ self.lexer = lexer
2706
+ self.postlexer = postlexer
2707
+
2708
+ def lex(self, lexer_state, parser_state):
2709
+ i = self.lexer.lex(lexer_state, parser_state)
2710
+ return self.postlexer.process(i)
2711
+
2712
+
2713
+
2714
+ def create_basic_lexer(lexer_conf, parser, postlex, options) -> BasicLexer:
2715
+ cls = (options and options._plugins.get('BasicLexer')) or BasicLexer
2716
+ return cls(lexer_conf)
2717
+
2718
+ def create_contextual_lexer(lexer_conf: LexerConf, parser, postlex, options) -> ContextualLexer:
2719
+ cls = (options and options._plugins.get('ContextualLexer')) or ContextualLexer
2720
+ parse_table: ParseTableBase[int] = parser._parse_table
2721
+ states: Dict[int, Collection[str]] = {idx:list(t.keys()) for idx, t in parse_table.states.items()}
2722
+ always_accept: Collection[str] = postlex.always_accept if postlex else ()
2723
+ return cls(lexer_conf, states, always_accept=always_accept)
2724
+
2725
+ def create_lalr_parser(lexer_conf: LexerConf, parser_conf: ParserConf, options=None) -> LALR_Parser:
2726
+ debug = options.debug if options else False
2727
+ strict = options.strict if options else False
2728
+ cls = (options and options._plugins.get('LALR_Parser')) or LALR_Parser
2729
+ return cls(parser_conf, debug=debug, strict=strict)
2730
+
2731
+ _parser_creators['lalr'] = create_lalr_parser
2732
+
2733
+
2734
+
2735
+
2736
+ class PostLex(ABC):
2737
+ @abstractmethod
2738
+ def process(self, stream: Iterator[Token]) -> Iterator[Token]:
2739
+ return stream
2740
+
2741
+ always_accept: Iterable[str] = ()
2742
+
2743
+ class LarkOptions(Serialize):
2744
+ #--
2745
+
2746
+ start: List[str]
2747
+ debug: bool
2748
+ strict: bool
2749
+ transformer: 'Optional[Transformer]'
2750
+ propagate_positions: Union[bool, str]
2751
+ maybe_placeholders: bool
2752
+ cache: Union[bool, str]
2753
+ regex: bool
2754
+ g_regex_flags: int
2755
+ keep_all_tokens: bool
2756
+ tree_class: Optional[Callable[[str, List], Any]]
2757
+ parser: _ParserArgType
2758
+ lexer: _LexerArgType
2759
+ ambiguity: 'Literal["auto", "resolve", "explicit", "forest"]'
2760
+ postlex: Optional[PostLex]
2761
+ priority: 'Optional[Literal["auto", "normal", "invert"]]'
2762
+ lexer_callbacks: Dict[str, Callable[[Token], Token]]
2763
+ use_bytes: bool
2764
+ ordered_sets: bool
2765
+ edit_terminals: Optional[Callable[[TerminalDef], TerminalDef]]
2766
+ import_paths: 'List[Union[str, Callable[[Union[None, str, PackageResource], str], Tuple[str, str]]]]'
2767
+ source_path: Optional[str]
2768
+
2769
+ OPTIONS_DOC = r"""
2770
+ **=== General Options ===**
2771
+
2772
+ start
2773
+ The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")
2774
+ debug
2775
+ Display debug information and extra warnings. Use only when debugging (Default: ``False``)
2776
+ When used with Earley, it generates a forest graph as "sppf.png", if 'dot' is installed.
2777
+ strict
2778
+ Throw an exception on any potential ambiguity, including shift/reduce conflicts, and regex collisions.
2779
+ transformer
2780
+ Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)
2781
+ propagate_positions
2782
+ Propagates positional attributes into the 'meta' attribute of all tree branches.
2783
+ Sets attributes: (line, column, end_line, end_column, start_pos, end_pos,
2784
+ container_line, container_column, container_end_line, container_end_column)
2785
+ Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.
2786
+ maybe_placeholders
2787
+ When ``True``, the ``[]`` operator returns ``None`` when not matched.
2788
+ When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.
2789
+ (default= ``True``)
2790
+ cache
2791
+ Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.
2792
+
2793
+ - When ``False``, does nothing (default)
2794
+ - When ``True``, caches to a temporary file in the local directory
2795
+ - When given a string, caches to the path pointed by the string
2796
+ regex
2797
+ When True, uses the ``regex`` module instead of the stdlib ``re``.
2798
+ g_regex_flags
2799
+ Flags that are applied to all terminals (both regex and strings)
2800
+ keep_all_tokens
2801
+ Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)
2802
+ tree_class
2803
+ Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.
2804
+
2805
+ **=== Algorithm Options ===**
2806
+
2807
+ parser
2808
+ Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").
2809
+ (there is also a "cyk" option for legacy)
2810
+ lexer
2811
+ Decides whether or not to use a lexer stage
2812
+
2813
+ - "auto" (default): Choose for me based on the parser
2814
+ - "basic": Use a basic lexer
2815
+ - "contextual": Stronger lexer (only works with parser="lalr")
2816
+ - "dynamic": Flexible and powerful (only with parser="earley")
2817
+ - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.
2818
+ ambiguity
2819
+ Decides how to handle ambiguity in the parse. Only relevant if parser="earley"
2820
+
2821
+ - "resolve": The parser will automatically choose the simplest derivation
2822
+ (it chooses consistently: greedy for tokens, non-greedy for rules)
2823
+ - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).
2824
+ - "forest": The parser will return the root of the shared packed parse forest.
2825
+
2826
+ **=== Misc. / Domain Specific Options ===**
2827
+
2828
+ postlex
2829
+ Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.
2830
+ priority
2831
+ How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")
2832
+ lexer_callbacks
2833
+ Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.
2834
+ use_bytes
2835
+ Accept an input of type ``bytes`` instead of ``str``.
2836
+ ordered_sets
2837
+ Should Earley use ordered-sets to achieve stable output (~10% slower than regular sets. Default: True)
2838
+ edit_terminals
2839
+ A callback for editing the terminals before parse.
2840
+ import_paths
2841
+ A List of either paths or loader functions to specify from where grammars are imported
2842
+ source_path
2843
+ Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading
2844
+ **=== End of Options ===**
2845
+ """
2846
+ if __doc__:
2847
+ __doc__ += OPTIONS_DOC
2848
+
2849
+
2850
+ ##
2851
+
2852
+ ##
2853
+
2854
+ ##
2855
+
2856
+ ##
2857
+
2858
+ ##
2859
+
2860
+ ##
2861
+
2862
+ _defaults: Dict[str, Any] = {
2863
+ 'debug': False,
2864
+ 'strict': False,
2865
+ 'keep_all_tokens': False,
2866
+ 'tree_class': None,
2867
+ 'cache': False,
2868
+ 'postlex': None,
2869
+ 'parser': 'earley',
2870
+ 'lexer': 'auto',
2871
+ 'transformer': None,
2872
+ 'start': 'start',
2873
+ 'priority': 'auto',
2874
+ 'ambiguity': 'auto',
2875
+ 'regex': False,
2876
+ 'propagate_positions': False,
2877
+ 'lexer_callbacks': {},
2878
+ 'maybe_placeholders': True,
2879
+ 'edit_terminals': None,
2880
+ 'g_regex_flags': 0,
2881
+ 'use_bytes': False,
2882
+ 'ordered_sets': True,
2883
+ 'import_paths': [],
2884
+ 'source_path': None,
2885
+ '_plugins': {},
2886
+ }
2887
+
2888
+ def __init__(self, options_dict: Dict[str, Any]) -> None:
2889
+ o = dict(options_dict)
2890
+
2891
+ options = {}
2892
+ for name, default in self._defaults.items():
2893
+ if name in o:
2894
+ value = o.pop(name)
2895
+ if isinstance(default, bool) and name not in ('cache', 'use_bytes', 'propagate_positions'):
2896
+ value = bool(value)
2897
+ else:
2898
+ value = default
2899
+
2900
+ options[name] = value
2901
+
2902
+ if isinstance(options['start'], str):
2903
+ options['start'] = [options['start']]
2904
+
2905
+ self.__dict__['options'] = options
2906
+
2907
+
2908
+ assert_config(self.parser, ('earley', 'lalr', 'cyk', None))
2909
+
2910
+ if self.parser == 'earley' and self.transformer:
2911
+ raise ConfigurationError('Cannot specify an embedded transformer when using the Earley algorithm. '
2912
+ 'Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)')
2913
+
2914
+ if o:
2915
+ raise ConfigurationError("Unknown options: %s" % o.keys())
2916
+
2917
+ def __getattr__(self, name: str) -> Any:
2918
+ try:
2919
+ return self.__dict__['options'][name]
2920
+ except KeyError as e:
2921
+ raise AttributeError(e)
2922
+
2923
+ def __setattr__(self, name: str, value: str) -> None:
2924
+ assert_config(name, self.options.keys(), "%r isn't a valid option. Expected one of: %s")
2925
+ self.options[name] = value
2926
+
2927
+ def serialize(self, memo = None) -> Dict[str, Any]:
2928
+ return self.options
2929
+
2930
+ @classmethod
2931
+ def deserialize(cls, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]]) -> "LarkOptions":
2932
+ return cls(data)
2933
+
2934
+
2935
+ ##
2936
+
2937
+ ##
2938
+
2939
+ _LOAD_ALLOWED_OPTIONS = {'postlex', 'transformer', 'lexer_callbacks', 'use_bytes', 'debug', 'g_regex_flags', 'regex', 'propagate_positions', 'tree_class', '_plugins'}
2940
+
2941
+ _VALID_PRIORITY_OPTIONS = ('auto', 'normal', 'invert', None)
2942
+ _VALID_AMBIGUITY_OPTIONS = ('auto', 'resolve', 'explicit', 'forest')
2943
+
2944
+
2945
+ _T = TypeVar('_T', bound="Lark")
2946
+
2947
+ class Lark(Serialize):
2948
+ #--
2949
+
2950
+ source_path: str
2951
+ source_grammar: str
2952
+ grammar: 'Grammar'
2953
+ options: LarkOptions
2954
+ lexer: Lexer
2955
+ parser: 'ParsingFrontend'
2956
+ terminals: Collection[TerminalDef]
2957
+
2958
+ def __init__(self, grammar: 'Union[Grammar, str, IO[str]]', **options) -> None:
2959
+ self.options = LarkOptions(options)
2960
+ re_module: types.ModuleType
2961
+
2962
+ ##
2963
+
2964
+ use_regex = self.options.regex
2965
+ if use_regex:
2966
+ if _has_regex:
2967
+ re_module = regex
2968
+ else:
2969
+ raise ImportError('`regex` module must be installed if calling `Lark(regex=True)`.')
2970
+ else:
2971
+ re_module = re
2972
+
2973
+ ##
2974
+
2975
+ if self.options.source_path is None:
2976
+ try:
2977
+ self.source_path = grammar.name ##
2978
+
2979
+ except AttributeError:
2980
+ self.source_path = '<string>'
2981
+ else:
2982
+ self.source_path = self.options.source_path
2983
+
2984
+ ##
2985
+
2986
+ try:
2987
+ read = grammar.read ##
2988
+
2989
+ except AttributeError:
2990
+ pass
2991
+ else:
2992
+ grammar = read()
2993
+
2994
+ cache_fn = None
2995
+ cache_sha256 = None
2996
+ if isinstance(grammar, str):
2997
+ self.source_grammar = grammar
2998
+ if self.options.use_bytes:
2999
+ if not grammar.isascii():
3000
+ raise ConfigurationError("Grammar must be ascii only, when use_bytes=True")
3001
+
3002
+ if self.options.cache:
3003
+ if self.options.parser != 'lalr':
3004
+ raise ConfigurationError("cache only works with parser='lalr' for now")
3005
+
3006
+ unhashable = ('transformer', 'postlex', 'lexer_callbacks', 'edit_terminals', '_plugins')
3007
+ options_str = ''.join(k+str(v) for k, v in options.items() if k not in unhashable)
3008
+ from . import __version__
3009
+ s = grammar + options_str + __version__ + str(sys.version_info[:2])
3010
+ cache_sha256 = sha256_digest(s)
3011
+
3012
+ if isinstance(self.options.cache, str):
3013
+ cache_fn = self.options.cache
3014
+ else:
3015
+ if self.options.cache is not True:
3016
+ raise ConfigurationError("cache argument must be bool or str")
3017
+
3018
+ try:
3019
+ username = getpass.getuser()
3020
+ except Exception:
3021
+ ##
3022
+
3023
+ ##
3024
+
3025
+ ##
3026
+
3027
+ username = "unknown"
3028
+
3029
+ cache_fn = tempfile.gettempdir() + "/.lark_cache_%s_%s_%s_%s.tmp" % (username, cache_sha256, *sys.version_info[:2])
3030
+
3031
+ old_options = self.options
3032
+ try:
3033
+ with FS.open(cache_fn, 'rb') as f:
3034
+ logger.debug('Loading grammar from cache: %s', cache_fn)
3035
+ ##
3036
+
3037
+ for name in (set(options) - _LOAD_ALLOWED_OPTIONS):
3038
+ del options[name]
3039
+ file_sha256 = f.readline().rstrip(b'\n')
3040
+ cached_used_files = pickle.load(f)
3041
+ if file_sha256 == cache_sha256.encode('utf8') and verify_used_files(cached_used_files):
3042
+ cached_parser_data = pickle.load(f)
3043
+ self._load(cached_parser_data, **options)
3044
+ return
3045
+ except FileNotFoundError:
3046
+ ##
3047
+
3048
+ pass
3049
+ except Exception: ##
3050
+
3051
+ logger.exception("Failed to load Lark from cache: %r. We will try to carry on.", cache_fn)
3052
+
3053
+ ##
3054
+
3055
+ ##
3056
+
3057
+ self.options = old_options
3058
+
3059
+
3060
+ ##
3061
+
3062
+ self.grammar, used_files = load_grammar(grammar, self.source_path, self.options.import_paths, self.options.keep_all_tokens)
3063
+ else:
3064
+ assert isinstance(grammar, Grammar)
3065
+ self.grammar = grammar
3066
+
3067
+
3068
+ if self.options.lexer == 'auto':
3069
+ if self.options.parser == 'lalr':
3070
+ self.options.lexer = 'contextual'
3071
+ elif self.options.parser == 'earley':
3072
+ if self.options.postlex is not None:
3073
+ logger.info("postlex can't be used with the dynamic lexer, so we use 'basic' instead. "
3074
+ "Consider using lalr with contextual instead of earley")
3075
+ self.options.lexer = 'basic'
3076
+ else:
3077
+ self.options.lexer = 'dynamic'
3078
+ elif self.options.parser == 'cyk':
3079
+ self.options.lexer = 'basic'
3080
+ else:
3081
+ assert False, self.options.parser
3082
+ lexer = self.options.lexer
3083
+ if isinstance(lexer, type):
3084
+ assert issubclass(lexer, Lexer) ##
3085
+
3086
+ else:
3087
+ assert_config(lexer, ('basic', 'contextual', 'dynamic', 'dynamic_complete'))
3088
+ if self.options.postlex is not None and 'dynamic' in lexer:
3089
+ raise ConfigurationError("Can't use postlex with a dynamic lexer. Use basic or contextual instead")
3090
+
3091
+ if self.options.ambiguity == 'auto':
3092
+ if self.options.parser == 'earley':
3093
+ self.options.ambiguity = 'resolve'
3094
+ else:
3095
+ assert_config(self.options.parser, ('earley', 'cyk'), "%r doesn't support disambiguation. Use one of these parsers instead: %s")
3096
+
3097
+ if self.options.priority == 'auto':
3098
+ self.options.priority = 'normal'
3099
+
3100
+ if self.options.priority not in _VALID_PRIORITY_OPTIONS:
3101
+ raise ConfigurationError("invalid priority option: %r. Must be one of %r" % (self.options.priority, _VALID_PRIORITY_OPTIONS))
3102
+ if self.options.ambiguity not in _VALID_AMBIGUITY_OPTIONS:
3103
+ raise ConfigurationError("invalid ambiguity option: %r. Must be one of %r" % (self.options.ambiguity, _VALID_AMBIGUITY_OPTIONS))
3104
+
3105
+ if self.options.parser is None:
3106
+ terminals_to_keep = '*'
3107
+ elif self.options.postlex is not None:
3108
+ terminals_to_keep = set(self.options.postlex.always_accept)
3109
+ else:
3110
+ terminals_to_keep = set()
3111
+
3112
+ ##
3113
+
3114
+ self.terminals, self.rules, self.ignore_tokens = self.grammar.compile(self.options.start, terminals_to_keep)
3115
+
3116
+ if self.options.edit_terminals:
3117
+ for t in self.terminals:
3118
+ self.options.edit_terminals(t)
3119
+
3120
+ self._terminals_dict = {t.name: t for t in self.terminals}
3121
+
3122
+ ##
3123
+
3124
+ if self.options.priority == 'invert':
3125
+ for rule in self.rules:
3126
+ if rule.options.priority is not None:
3127
+ rule.options.priority = -rule.options.priority
3128
+ for term in self.terminals:
3129
+ term.priority = -term.priority
3130
+ ##
3131
+
3132
+ ##
3133
+
3134
+ ##
3135
+
3136
+ elif self.options.priority is None:
3137
+ for rule in self.rules:
3138
+ if rule.options.priority is not None:
3139
+ rule.options.priority = None
3140
+ for term in self.terminals:
3141
+ term.priority = 0
3142
+
3143
+ ##
3144
+
3145
+ self.lexer_conf = LexerConf(
3146
+ self.terminals, re_module, self.ignore_tokens, self.options.postlex,
3147
+ self.options.lexer_callbacks, self.options.g_regex_flags, use_bytes=self.options.use_bytes, strict=self.options.strict
3148
+ )
3149
+
3150
+ if self.options.parser:
3151
+ self.parser = self._build_parser()
3152
+ elif lexer:
3153
+ self.lexer = self._build_lexer()
3154
+
3155
+ if cache_fn:
3156
+ logger.debug('Saving grammar to cache: %s', cache_fn)
3157
+ try:
3158
+ with FS.open(cache_fn, 'wb') as f:
3159
+ assert cache_sha256 is not None
3160
+ f.write(cache_sha256.encode('utf8') + b'\n')
3161
+ pickle.dump(used_files, f)
3162
+ self.save(f, _LOAD_ALLOWED_OPTIONS)
3163
+ except IOError as e:
3164
+ logger.exception("Failed to save Lark to cache: %r.", cache_fn, e)
3165
+
3166
+ if __doc__:
3167
+ __doc__ += "\n\n" + LarkOptions.OPTIONS_DOC
3168
+
3169
+ __serialize_fields__ = 'parser', 'rules', 'options'
3170
+
3171
+ def _build_lexer(self, dont_ignore: bool=False) -> BasicLexer:
3172
+ lexer_conf = self.lexer_conf
3173
+ if dont_ignore:
3174
+ from copy import copy
3175
+ lexer_conf = copy(lexer_conf)
3176
+ lexer_conf.ignore = ()
3177
+ return BasicLexer(lexer_conf)
3178
+
3179
+ def _prepare_callbacks(self) -> None:
3180
+ self._callbacks = {}
3181
+ ##
3182
+
3183
+ if self.options.ambiguity != 'forest':
3184
+ self._parse_tree_builder = ParseTreeBuilder(
3185
+ self.rules,
3186
+ self.options.tree_class or Tree,
3187
+ self.options.propagate_positions,
3188
+ self.options.parser != 'lalr' and self.options.ambiguity == 'explicit',
3189
+ self.options.maybe_placeholders
3190
+ )
3191
+ self._callbacks = self._parse_tree_builder.create_callback(self.options.transformer)
3192
+ self._callbacks.update(_get_lexer_callbacks(self.options.transformer, self.terminals))
3193
+
3194
+ def _build_parser(self) -> "ParsingFrontend":
3195
+ self._prepare_callbacks()
3196
+ _validate_frontend_args(self.options.parser, self.options.lexer)
3197
+ parser_conf = ParserConf(self.rules, self._callbacks, self.options.start)
3198
+ return _construct_parsing_frontend(
3199
+ self.options.parser,
3200
+ self.options.lexer,
3201
+ self.lexer_conf,
3202
+ parser_conf,
3203
+ options=self.options
3204
+ )
3205
+
3206
+ def save(self, f, exclude_options: Collection[str] = ()) -> None:
3207
+ #--
3208
+ if self.options.parser != 'lalr':
3209
+ raise NotImplementedError("Lark.save() is only implemented for the LALR(1) parser.")
3210
+ data, m = self.memo_serialize([TerminalDef, Rule])
3211
+ if exclude_options:
3212
+ data["options"] = {n: v for n, v in data["options"].items() if n not in exclude_options}
3213
+ pickle.dump({'data': data, 'memo': m}, f, protocol=pickle.HIGHEST_PROTOCOL)
3214
+
3215
+ @classmethod
3216
+ def load(cls: Type[_T], f) -> _T:
3217
+ #--
3218
+ inst = cls.__new__(cls)
3219
+ return inst._load(f)
3220
+
3221
+ def _deserialize_lexer_conf(self, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]], options: LarkOptions) -> LexerConf:
3222
+ lexer_conf = LexerConf.deserialize(data['lexer_conf'], memo)
3223
+ lexer_conf.callbacks = options.lexer_callbacks or {}
3224
+ lexer_conf.re_module = regex if options.regex else re
3225
+ lexer_conf.use_bytes = options.use_bytes
3226
+ lexer_conf.g_regex_flags = options.g_regex_flags
3227
+ lexer_conf.skip_validation = True
3228
+ lexer_conf.postlex = options.postlex
3229
+ return lexer_conf
3230
+
3231
+ def _load(self: _T, f: Any, **kwargs) -> _T:
3232
+ if isinstance(f, dict):
3233
+ d = f
3234
+ else:
3235
+ d = pickle.load(f)
3236
+ memo_json = d['memo']
3237
+ data = d['data']
3238
+
3239
+ assert memo_json
3240
+ memo = SerializeMemoizer.deserialize(memo_json, {'Rule': Rule, 'TerminalDef': TerminalDef}, {})
3241
+ options = dict(data['options'])
3242
+ if (set(kwargs) - _LOAD_ALLOWED_OPTIONS) & set(LarkOptions._defaults):
3243
+ raise ConfigurationError("Some options are not allowed when loading a Parser: {}"
3244
+ .format(set(kwargs) - _LOAD_ALLOWED_OPTIONS))
3245
+ options.update(kwargs)
3246
+ self.options = LarkOptions.deserialize(options, memo)
3247
+ self.rules = [Rule.deserialize(r, memo) for r in data['rules']]
3248
+ self.source_path = '<deserialized>'
3249
+ _validate_frontend_args(self.options.parser, self.options.lexer)
3250
+ self.lexer_conf = self._deserialize_lexer_conf(data['parser'], memo, self.options)
3251
+ self.terminals = self.lexer_conf.terminals
3252
+ self._prepare_callbacks()
3253
+ self._terminals_dict = {t.name: t for t in self.terminals}
3254
+ self.parser = _deserialize_parsing_frontend(
3255
+ data['parser'],
3256
+ memo,
3257
+ self.lexer_conf,
3258
+ self._callbacks,
3259
+ self.options, ##
3260
+
3261
+ )
3262
+ return self
3263
+
3264
+ @classmethod
3265
+ def _load_from_dict(cls, data, memo, **kwargs):
3266
+ inst = cls.__new__(cls)
3267
+ return inst._load({'data': data, 'memo': memo}, **kwargs)
3268
+
3269
+ @classmethod
3270
+ def open(cls: Type[_T], grammar_filename: str, rel_to: Optional[str]=None, **options) -> _T:
3271
+ #--
3272
+ if rel_to:
3273
+ basepath = os.path.dirname(rel_to)
3274
+ grammar_filename = os.path.join(basepath, grammar_filename)
3275
+ with open(grammar_filename, encoding='utf8') as f:
3276
+ return cls(f, **options)
3277
+
3278
+ @classmethod
3279
+ def open_from_package(cls: Type[_T], package: str, grammar_path: str, search_paths: 'Sequence[str]'=[""], **options) -> _T:
3280
+ #--
3281
+ package_loader = FromPackageLoader(package, search_paths)
3282
+ full_path, text = package_loader(None, grammar_path)
3283
+ options.setdefault('source_path', full_path)
3284
+ options.setdefault('import_paths', [])
3285
+ options['import_paths'].append(package_loader)
3286
+ return cls(text, **options)
3287
+
3288
+ def __repr__(self):
3289
+ return 'Lark(open(%r), parser=%r, lexer=%r, ...)' % (self.source_path, self.options.parser, self.options.lexer)
3290
+
3291
+
3292
+ def lex(self, text: str, dont_ignore: bool=False) -> Iterator[Token]:
3293
+ #--
3294
+ lexer: Lexer
3295
+ if not hasattr(self, 'lexer') or dont_ignore:
3296
+ lexer = self._build_lexer(dont_ignore)
3297
+ else:
3298
+ lexer = self.lexer
3299
+ lexer_thread = LexerThread.from_text(lexer, text)
3300
+ stream = lexer_thread.lex(None)
3301
+ if self.options.postlex:
3302
+ return self.options.postlex.process(stream)
3303
+ return stream
3304
+
3305
+ def get_terminal(self, name: str) -> TerminalDef:
3306
+ #--
3307
+ return self._terminals_dict[name]
3308
+
3309
+ def parse_interactive(self, text: Optional[str]=None, start: Optional[str]=None) -> 'InteractiveParser':
3310
+ #--
3311
+ return self.parser.parse_interactive(text, start=start)
3312
+
3313
+ def parse(self, text: str, start: Optional[str]=None, on_error: 'Optional[Callable[[UnexpectedInput], bool]]'=None) -> 'ParseTree':
3314
+ #--
3315
+ return self.parser.parse(text, start=start, on_error=on_error)
3316
+
3317
+
3318
+
3319
+
3320
+ class DedentError(LarkError):
3321
+ pass
3322
+
3323
+ class Indenter(PostLex, ABC):
3324
+ #--
3325
+ paren_level: int
3326
+ indent_level: List[int]
3327
+
3328
+ def __init__(self) -> None:
3329
+ self.paren_level = 0
3330
+ self.indent_level = [0]
3331
+ assert self.tab_len > 0
3332
+
3333
+ def handle_NL(self, token: Token) -> Iterator[Token]:
3334
+ if self.paren_level > 0:
3335
+ return
3336
+
3337
+ yield token
3338
+
3339
+ indent_str = token.rsplit('\n', 1)[1] ##
3340
+
3341
+ indent = indent_str.count(' ') + indent_str.count('\t') * self.tab_len
3342
+
3343
+ if indent > self.indent_level[-1]:
3344
+ self.indent_level.append(indent)
3345
+ yield Token.new_borrow_pos(self.INDENT_type, indent_str, token)
3346
+ else:
3347
+ while indent < self.indent_level[-1]:
3348
+ self.indent_level.pop()
3349
+ yield Token.new_borrow_pos(self.DEDENT_type, indent_str, token)
3350
+
3351
+ if indent != self.indent_level[-1]:
3352
+ raise DedentError('Unexpected dedent to column %s. Expected dedent to %s' % (indent, self.indent_level[-1]))
3353
+
3354
+ def _process(self, stream):
3355
+ for token in stream:
3356
+ if token.type == self.NL_type:
3357
+ yield from self.handle_NL(token)
3358
+ else:
3359
+ yield token
3360
+
3361
+ if token.type in self.OPEN_PAREN_types:
3362
+ self.paren_level += 1
3363
+ elif token.type in self.CLOSE_PAREN_types:
3364
+ self.paren_level -= 1
3365
+ assert self.paren_level >= 0
3366
+
3367
+ while len(self.indent_level) > 1:
3368
+ self.indent_level.pop()
3369
+ yield Token(self.DEDENT_type, '')
3370
+
3371
+ assert self.indent_level == [0], self.indent_level
3372
+
3373
+ def process(self, stream):
3374
+ self.paren_level = 0
3375
+ self.indent_level = [0]
3376
+ return self._process(stream)
3377
+
3378
+ ##
3379
+
3380
+ @property
3381
+ def always_accept(self):
3382
+ return (self.NL_type,)
3383
+
3384
+ @property
3385
+ @abstractmethod
3386
+ def NL_type(self) -> str:
3387
+ #--
3388
+ raise NotImplementedError()
3389
+
3390
+ @property
3391
+ @abstractmethod
3392
+ def OPEN_PAREN_types(self) -> List[str]:
3393
+ #--
3394
+ raise NotImplementedError()
3395
+
3396
+ @property
3397
+ @abstractmethod
3398
+ def CLOSE_PAREN_types(self) -> List[str]:
3399
+ #--
3400
+ raise NotImplementedError()
3401
+
3402
+ @property
3403
+ @abstractmethod
3404
+ def INDENT_type(self) -> str:
3405
+ #--
3406
+ raise NotImplementedError()
3407
+
3408
+ @property
3409
+ @abstractmethod
3410
+ def DEDENT_type(self) -> str:
3411
+ #--
3412
+ raise NotImplementedError()
3413
+
3414
+ @property
3415
+ @abstractmethod
3416
+ def tab_len(self) -> int:
3417
+ #--
3418
+ raise NotImplementedError()
3419
+
3420
+
3421
+ class PythonIndenter(Indenter):
3422
+ #--
3423
+
3424
+ NL_type = '_NEWLINE'
3425
+ OPEN_PAREN_types = ['LPAR', 'LSQB', 'LBRACE']
3426
+ CLOSE_PAREN_types = ['RPAR', 'RSQB', 'RBRACE']
3427
+ INDENT_type = '_INDENT'
3428
+ DEDENT_type = '_DEDENT'
3429
+ tab_len = 8
3430
+
3431
+
3432
+ import pickle, zlib, base64
3433
+ DATA = (
3434
+ b'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pVHUSqOolUZRK42iVhpFrTSKWmkUtdIoaqVR1EqjqJVGUSuNolYaRa00ilppFLXSKGqlUdRKo6iVRlErjaJWGkWtNIpaaRS10ihqpVHUSqOolUZRK42iVhpFrTSKWmkUtdIoaqVR1EqjqJVGUSuNolYaRa00amqlV9r+b2667fHmIjY0NAu0ArQStAq0GuQHzQbVgepBBaA1oCJQIWgOqBi0DjQX5ICaQdNBZaA9oA2gjaA20GbQPNAmUCVoC2g+aAFoIagKtA20GLQctAS0HbQUtBO0C1QN2g1aBuqwKehcJX8M0/lyyPvNA+dVvfRq25IrYcmVsORKWHIlLLkSllwJS66EJVfCkithyZWw5EpYciUsuRKWXAlLroQlV8KSK2HJlbDkSlhyJSy5EpZcCUuuhCVXwpIrYcmVsORKWHIlLLkSllwJS66EJVfCkithyZWw5EpYciUsuRKWXAlLroQlV8KSK2HJlbDkSlhyJSy5EpZcCUuuhCVXwpIrjSVf8+d+y0w/ArcLf6rtL/m6WdAJ2T/fsRe/aLnX/LjGtfZ3D3+iV8i1Ic+G0Tbk2zDGhiwbxtowzobxNkywYaINk2yYbMMUG6baMM2G6TbMsCDoXGf7jjiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygDiygLjJAq7/059Rdi7Qi2+w3WIpQqpShFSlCKlKEVKVIqQqRUhVipCqFCFVKUKqUoRUpQipShFSlSKkKkVIVYqQqhQhVSlCqlKEVKUIqUoRUpUipCpFSFWKkKoUIVUpQqpShFSlCKlKEVKVIqQqRUhVipCqFCFVKUKqUoRUpQipShFSlSKkKkVIVYqQqhQhVSlCqlKEVKUIqUoRUpUipCpFSFWK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k6gyiSqTqDKJKpOoMokqk6gyiSqTqDKJKpOoMokqk6gyiSqTqDKJKpOoMokqk6gyiSqTqDKJKpOoMokqk6gyiSqTdVX2N7wYMt9VC5mfwZx5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMmcececyZx5x5zJnHnHnMma+bcwBVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWURVRZRZRFVFlFlEVUWUWWxrsrPospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2ospWVNmKKltRZSuqbEWVraiyFVW2osrW/5+9e49v+s7vfG/ZBoG5WCCBIQTCVQiw+RlZAoN/BgRGGJsfFxtkQIBI6Dk91SYdBhCdSZSEXFBCSIh1/UlxgnK/+uye02232d3unr11u2fPObs93d12ZrtzdqY7l05ntu3D65lOpzOd8/tK0S+f15phCWFydf7J7ymbm/X7vT+f7+X3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I7QJOiWVMN7FSTSncmYvgu6EFkMzoNnQEuguaCm0DFoOrYBWQh5oHrQK8kKrIR+0BloLrYNaoVlQG7QemgppUDu0AfJDHdBcKAAFofnQRmgT1AlthqZDW6AuSIe6oa3QNmg75IRCUDPkgnZAO6EeaBfkhsLQbqgX2gP1Qf3QXqgFMqB90AJoP7QQOgBNgw5CTdAANBMahA5Bh6EINAQdgeZAR6FjUBQ6Dp2ATkIx6JRUwvj7Djk0eq7yLa9BD0EPQ3HoS9BFqB66D1oGpaAHoCegk9C90OvQOugN6MtQKzQLegp6E7oCTYWehjToGWgYSkMZKAsFoBx0AXoE6oSS0GZoOvQgdBZyQuegZugtyAE9Cj0GPQ6FoV7obegSdB5qhJ6E3oEuQ3VQE3QGGoQGoDIUgYagq9AUKAE1QPdDz0IvQPOgl6A8ZEIjkBt6HmqBZkJzoAJUhGZDz0Ee6Br0IvQyNB9yQSVoITQNekUqYfwDx+Re4c/oXuF/OLlX+OPYK/wPHdUls7r+rupJ238ypcpXnfEPGqpnXv9p6/9/Zv3/V1Oqh6jrP5tSlb6u/wHr/39u/f9iSvUrdf2XUiob6/qvWv//C+v/OfX7/zaaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaojKaonK1KfpHlYj9uhXZZRXy49bB79ZX/ql1RlG98gPr4PfUK1a/ZPy+OvihqqrqwO6TZlkH36qv/FF1xovqwFD1SB30WQeN6sBukP5SFVP1yo9U8VIHMevgx/WVn32d8VN1YPdKdkdUa6tq7U63Kq4NlX9rnfHLjpToc76mCqdseL5hvdDRmBI90resg271B9mdzzetg2vqFbsFsjsfu+Gxu5o96hW0N3ZXo7qRO67fqNjNTJd10KK+54DqGdQrf2UdfF0drLEOvuOoXILWD1kd2L2H3WXVWg5jo8P6B+62Xvlr65XvOyonRZ2xsKFyrdcZ4+oVu+HZZR38SL3yXetgrnrFbkLs3sNuOWoN6Tr1zjhSoiGd2IPMVR2HOrB7YY9qYdT32E3EfHU6qN/nT1Q3ob7Z7ibsfvw71kGzeuV71sEcdWC337W2e0JPPdt6YUR964T2+CfWCzn1wirrwK2+xal+6upgtXWwSB18W32POrB721pTbbe2dke7xDpYqb7X7k3tbtXuTfdZB6vU99Ra8J+qC0S9YPefdrdpd5Ju6+ABdK0zrIPW+kr4WI2o+sMntpR/Yx1sUK/YTa/dvtrdpt1b/sw62KRe+bF10Ck7QKNO7X/aol76Y+vgq+gFh6wDXR2stQ62qYOJQ6XaQMhwqN9ou/qm6dbBV9TBhHGOdV1ZRyH1tdrgZOJYxB4o2MMCu1VXd6XtQIfebB2cVJdCg/qdd6qv7VepYv3QjEb1Uo96yW6g56krR/2Wdt9cG9jV+mdjivpVu9Svshtou2+2W3O7S7ab41pPbCWGdbRb/ZWc6miP+vZj1kG/OqiN5oxp6mt71Uu1gZaVMNaRoX5hkzrap74Ysg72q4NF1sGgOthtHRxWB/boqTbGMWaoX3ZMfc0et9ijlNrgxDqpraPjGIvYIwZ7oPB9dWarA3t88KfqHaxX9eIfO+QuuTE0D2Mo5mNokcfQhI+huR1DgzeGBm8MLd0Ymv4xNP1jaOzH0O6NocEbQ7M5hpZuDC3dGFq6MQwPxjA8GEO7N4Z2bwwN3hgGEmMYOoyhwRtDSzeGgcQYmrgxDA/GMCAYQ9s2hgHBGJq4MQwIxjAgGMOAYAzt3hjatjEMFsYwWBjDYGEMg4UxDBbG0CaOYegwhuFBVfWQA5oCrYNmQVOhPFSATKgIlaDnoBHoeegF6BpUhl6EXoJehl6B6qBXoelQEzQAnYXOQeehBHQBeg2KQ69Db0BvQm9Bb0ON0DvQNGgmNBtyQXOgFsgNzYfmQR5ooVTC+D8cn4V5yinWgTk5YXmdccAnZJ5SjVSe/1xNWNplId4gS0a8ugXlnzjEkw76/1JEYhVNEjMkZkrMkpgqMVuiWcIlMUdiroRbwiMxT2K+RIvEAomFEndILJK4U2KxxBKJuySWSiyTWC6xQmKlxCoJr8RqCZ/EGom1EuskWiXaJNZLaBLtEhsk/BIdEgGJoMRGiU0SnRKbJbZIdEnoEt0SWyW2SWyXcEqEJHZI7JTokdglEZbYLdErsUeiT6JfYq+EIbFPYr/EAYmDEgMSgxKHJA5LRCSGJI5IHJU4JhGVOC5xQuKkREzilEDC+KcOuVHOid2WTuy2dGK3pRO7LZ3YbenEbksndls6sdvSid2WTuy2dGK3pRO7LZ3YbenEbksndls6sdvSid2WTuy2dGK3pRO7LZ3YbenEbksndls6sdvSid2WTuy2dGK3pRO7LZ3YbenEbksndls6sdvSid2WTuy2dGK3pRO7LZ3YbenEbksndls6sdvSWS11/8xxkx2m6hruv36reYPW8oO0lDfTStqdot0Z2h2h3QjaraHdCNr9n93b2S3dzXRydgM3sTmzWzG7A7MbrwkzLmyqvtWQurmm6ga91IdsoW6mc3p/hfef3+yZMvEEuYkxyO0+UX7u0OLWTpyJs8A3OJUmzgvbJ9fNDArUKCPR+EFPt5vp8z9pJ+CH3XTwLyqnZK2VX4xb0auaCpWhJugkNAjdDz0AfQn6MpSENkMPQg9BD0MXISfUDD0KPQY9Dt0HLYPCUC90CUpBT0BPQpehe6EzUCv0FBSBrkBD0NOQBj0DXYWehYahNJSBslAAapAyVvJ0zUGPQJ3QAFQPTYHWQbOgPFSATKgIlaDnoBHoeegF6Br0IvQS9DL0ClQHvQpNh16D4tBsyAPNg16H3oDehOZDF6Cz0DnIBb0FuaG3ofNQC/QOtBCaBs2EEtAcqYTxOw45M/ID8ROvoklihsRMiVkSUyVmSzRLuCTmSMyVcEt4JOZJzJdokVggsVDiDolFEndKLJZYInGXxFKJZRLLJVZIrJRYJeGVWC3hk1gjsVZinUSrRJvEeglNol1ig4RfokMiIBGU2CixSaJTYrPEFokuCV2iW2KrxDaJ7RJOiZDEDomdEj0SuyTCErsleiX2SPRJ9EvslTAk9knslzggcVBiQGJQ4pDEYYmIxJDEEYmjEsckohLHJU5InJSISZwSSBj/0vHznxnzHxtSt+2ZMQnjd60/qbK+UWpQj8j9V+oPNgy1sv51tX6/Tx2dUlsQ9qujbQ3q1/yfjmrXWtd/zfrCAXXwQkpV9Lr+X1df/9e1rxt/1yES341Ud6MSuqvp/H9VfmWd9SsXq19Za01TWGJPYaE+hYX6FBbqqzoplTD+b/UvVn/Eb1X+xf+PLAhGFA8FjuKhwFE8FDiKhwJH8VDgKO47juKhwFE8FDiKhwJH8VDgKB4KHMVDgaN4KHAUDwWO4qHAUTwUOIqHAkfxUOAoHgocxUOBo3gocBQPBY7iocBRPBQ4iocCR/FQ4CgeChzFQ4GjeChwFA8FjuKhwFE8FDiKhwJH8VDgKB4KHMVDgaN4KHAUDwWO4qHAUTwUOIqHAkfxUOAoHgocxUOBo3gocBQPBY7iocBRPBQ4iocCR/FQ4CgeChzFQ4GjeChwFA8FjuKhwFE8FDiKhwJHcQd9FA8FjuKhwFE8FDiKhwJH8VDgKB4KHMVDgaN4KHAUDwWO4qHAUTwUOIqHAkfxUOAoHgocxUOBo3gocBQPBY7iocBRPBQ4iocCR/FQ4CgeChzFQ4GjeChwFA8FjuKhwFE8FDiKhwJH8VDgKB4KHMVDgaN4KHAUDwWO4qHAUTwUOFp9OsK/sXP9N1UNqg2C38B2jDeqKftvK4WkWX3zSRXl6uBQY7VKGA851Lf83s8pcjd+7KXxB7X5nw/z3Mv/92P7s+0f1HeqP6jft3+or9d+PD+p7E77dw55w8g17DO5hr1j17B37Br2oFzDXrVr2Fd2DbuNrmFH2DXsCLuGfV7XUGSvYdfXNZTca9jndQ37Ya5hB9M17I65hoJ/DTvCrmGv07X394flHXWOOvWf/fKb+KYr0FToaUiDnoGGoTSUgbJQAMpBF6BHoE4oCW2GpkMPQmchJ3QOaobeghzQo9Bj0ONQGOqF3oYuQeehRuhJ6B3oMlQHNUFnoEFoACpDEWgIugpNgRJQA3Q/9Cz0AjQPegnKQyY0Armh56EWaCY0BypARWg29Bzkga5BL0IvQ/MhF1SCFkLToFekEsa/r2Styt7hBlGsqvXrfG0L2IXK6Oc/2IFdakxVN3LfUalnf/BzaoqqF42O69aUW6xef+i47kqWXWN/Mdvrqj+N38Bil9p49W5DavLO4M/JRrvP6v46den/ffXKdRbpvoJG7DIasctoxC6jEbuMRuwyGrHLaMQuoxG7jEbsMhqxy2jELqMRu4xG7DIasctoxC6jEbuMRuwyGrHLaMQuoxG7jEbs8vuNmK03oSvQVOhpSIOegYahNJSBslAAykEXoEegTigJbYamQw9CZyEndA5qht6CHNCj0GPQ41AY6oXehi5B56FG6EnoHegyVAc1QWegQWgAKkMRaAi6Ck2BElADdD/0LPQCNA96CcpDJjQCuaHnoRZoJjQHKkBFaDb0HOSBrkEvQi9D8yEXVIIWQtOgV6QSxlcdcifgOKYexzH1OI6px3FMyY5jonUc05LjmJYcx7TkOKYlxzEtOY5pyXFMS45jEnYck7DjmLIcx5TlOKYsxzFlOY4py3FMWY5jynIcU5bjmIAexwTmOCYwxzE5PY7pzHFMZ45jOnMc05njmM4cx1T1OCY3xzG5OY7J6XFMdY5jqnMcU53jmOqsajq0BeqCdKgb2gptg7ZDTigENUMuaAe0E+qBdkFuKAzthnqhPVAf1A/thVogA9oHLYD2QwuhA9A06CDUBA1AM6FB6BB0GIpAQ9ARaA50FDoGRaHj0AnoJBSDTkkljP/ouOW9iWoI9ju3NqKbfLDT5PDtMzF8u86o7Y8cctSWw6gth1FbDqO2HEZtOYzachi15TBqy2HUlsOoLYdRWw6jthxGbTmM2nIYteUwasth1JbDqC2HUVsOo7YcRm05jNpyGLXlMGrLYdSWw6gth1FbDqO2HEZtOYzachi15TBqy2HUlsOoLYdRWw6jthxGbTmM2nIYteUwasth1JbDqC2HUVsOo7YcRm05jNpyGLXlMGrLYdSWw6gth1FbDqO2HEZtOYzachi15TBqy2HUlsOoLYdRWw6jthxGbTmM2nIYteUwasth1JbDqC2HUVsOo7YcRm05jNpyGLXlMGrLYdSWw6gth1FbDqO2HEZtOYzachi15TBqy2HUlsOoLYdRWw6jthxGbTmM2nIYteUwasth1JbDqC2HUVsOo7YcRm05jNpyGLXlMGrLYdSWw6gtVx21/SdErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINRGxJiLWRMSaiFgTEWsiYk1ErImINasR+7VKxH7B6mqH6lPV8VOdOlDjtF+v9Ln/n+OWR46vq8HeL27kGLa+8khqcgR5KyNINagfnRxKfjKGkv/5+peYeo9Wqq3Ra9QO6H8mrzX76vu56+7GavWLfucDXXTGWvVr/p11EFQr8U84bu46/MRdf4ZP/Tt+et0L8ax1MAWPrJx4RZ5T7xUuzQvq/LoN12jCOvih44NerJ+Qa/S8dbDkc3+xft26WCubcr7gUNv7v3Hr5fEzMZ96g5vEJ158uNR+uzF1+4rfh7yj/ANdTze4jD6Cm81v5lr5mC+RP3bIW17asJbWhrWYNqyvtmEtpg0rjm1YVWzDSmwbVsjasELWhtWXNqwjtmEVrA2rrW1YbW3DqmIbVrPasGLVhjWqqu6AFkF3QouhJdBd0FJoGbQcWgGthFZBXmg15IPWQGuhdVAr1AathzSoHdoA+aEOKAAFoY3QJqgT2gxtgbogHeqGtkLboO2QEwpBO6CdUA+0CwpDu6FeaA/UB/VDeyED2gfthw5AB6EBaBA6BB2GItAQdAQ6Ch2DotBx6AR0EopBp6C7oXug01IJ478gKsOIyjCiMoyoDCMqw4jKMKIyjKgMIyrDiMowojKMqAwjKsOIyjCiMoyoDCMqw4jKMKIyjKgMIyrDiMowojKMqAwjKsOIyjCiMoyoDCMqw4jKMKIyjKgMIyrDiMowojKMqAwjKsOIyjCiMoyoDCMqw4jKMKIyjKgMIyrDiMowojKMqAwjKsOIyjCiMoyoDCMqw4jKMKIyjKgMIyrDiMowojKMqAwjKsOIyjCiMoyoDCMqw4jKMKIyjKgMIyrDiMowojKMqAwjKsOIyjCiMoyoDCMqw4jKMKIyjKgMIyrDiMowojKMqAwjKsOIyjCiMoyoDCMqw4jKMKIyjKgMIyrDiMpwNSq/6fhFPl7rVkZYNzOy+qhGVLdrIKVGOctvw4hq8tFcqRsPkr5VOZ3VP+aCQ77Htb+ocVDNwS1pSN3G+3q+jW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DjW7DXe02vnPr3cYHmNdVSzwPfLIneD8Ty53q7to56pVPyFLK53oF5U8ql9aTllerv5/6XKpWdfC4dRBQBxetg22N7/1JT6iD2u6fKHa5RLEXKIqdVlHsD4tif1gUu6mi2D8VxS6XKPZPRbGHKIodU1HsgIliJ0sU+6ei2EMUxR6iKPZPRbHTKoqdVlHsVYtiV00UO9ei2IkUxT62KPZdRbEbLopdPFHsg4pi51oU+9Gi2GUWxU6kql6FpkNN0ABUhs5C56AEdB66AL0GxaG3oLehRugd6HXoDehNqYTxXYe8Me1n9bLz/BlO76oWQ1ugs5AObYW2QfXQdugcdBe0A9oJLYV6oOXQMmgFtBLqhbxQP3Qe2gstgHzQSeggNAgdhlqhQ1AbFIHWQxrUDm2AjkAJqAPqhALQUSgIRaHj0AVoI3QC2gSdkkoYf/qRdFiTjVVq8k6kz2I/pYYOS9Tf5/3G6nu3fkWp02Ch4+YuqclPIpic5bzxufn+Kfl99DfNlTqwCLoTWgzNgGZDS6C7oKXQMmg5tAJaCXmgedAqyAuthnzQGmgttA5qhWZBbdB6aCqkQe3QBsgPdUBzoQAUhOZDG6FNUCe0GZoObYG6IB3qhrZC26DtkBMKQc2QC9oB7YR6oF2QGwpDu6FeaA/UB/VDe6EWyID2QQug/dBC6AA0DToINUED0ExoEDoEHYYi0BB0BJoDHYWOQVHoOHQCOgnFoFNSCeO/OuSSSwxLLjEsucSw5BLDkksMSy4xLLnEsOQSw5JLDEsuMSy5xLDkEsOSSwxLLjEsucSw5BLDkksMSy4xLLnEsOQSw5JLDEsuMSy5xLDkEsOSSwxLLjEsucSw5BLDkksMSy4xLLnEsOQSw5JLDEsuMSy5xLDkEsOSSwxLLjEsucSw5BLDkksMSy4xLLnEsOQSw5JLDEsuMSy5xLDkEsOSSwxLLjEsucSw5BLDkksMSy4xLLnEsOQSw5JLDEsuMSy5xLDkEsOSSwxLLjEsucSw5BLDkksMSy4xLLnEsOQSw5JLDEsuMSy5xLDkEsOSSwxLLjEsucSw5BLDkksMSy4xLLnEsOQSw5JLDEsuMSy5xLDkEsOSSwxLLjEsucSw5BLDkksMSy4xLLnEsOQSw5JLDEsuseqSy59VotK+BU2NGM6ogzHr4Buq0bzXGhcssf7/a9YL61XD+QXrheWp6nb8NvXCfdZBa2PlB1nX71W/6Z9XftP3ZjH7vyWCpYKE8ReVb1C/0NeYEnfAqd9zc+N/96cuFn9qwhpJq1+qHun8z1XPXZukvrtSBy5Dm6F7oYegh6GLUCv0FBSBrkBOSIOaoavQI9Aw9Cj0GPQ4lIXSUAa6D2qAeqFlUBhKQc9CT0L10BTIAa2DZkFToTroVWg61AQNQGXoLHQOOg8loAvQa1Acegt6G2qE3oFeh96A3pRKGGOOG294mbjNpboFZueH2PDy3yp/Zu3CPI1L8TQuvtO4+E7j4juNi+g0LpvTuBhO42I4jYvhNE7x0ziNT+M0Po0T/jRO6tM4jU8jak4jXKo6A7VCT0ER6AqkQVehZ6FhKA1loCzUAD0C1UNTIAe0DpoFTYXqoFeh6VATNACVobPQOeg8lIAuQK9Bcegt6G2oEXoHeh16A3pTKmGMOz7stLwxoC7bueqSVpOUX1Nf+ozP1BuD6p/8nz5Xc/bGJnWXbSg1OXn/YSZIf3Drl9vkruaP6vZQdV7/ncYbXxaTE/84r3/4ocvIZ75mHFI1Y/fnqmbcqFSoXuHRyZpxE9fWX6pry9haa30fqnxs8mEyAtqN/0PVz0H8UeV3GFInYLO61+CIOpp3/WGZ9WPsfzt1G+9C+KubHgjaV/HP/yOrY8ShG//hxlH1Tb9S+dN/PDGYyjcZTDezJv4hC+tPrINcg0yYW1sEv8GS9w2ue/tyn2sd/FLDda/pG9Q5+1ocVz8Wx39/LX7kVc2+4G5web1/Vf115cRQl+QU9YXapMGvYtKgqgehh6CHoYuQE2qGHoEehR6DHofug5ZBYagXugSloCegJ6HL0L3QGagVegqKQFegIehpSIOega5Cw1AaykBZKAA1QDnoWageckBToHXQLGgqVAe9Ck2HmqABqAydhc5B56EEdAF6DYpDr0NvQG9Cb0FvQ43QO1IJ4ycO+Snr3xM/jyqaJGZIzJSYJTFVYrZEs4RLYo7EXAm3hEdinsR8iRaJBRILBRLGTyvV237A1zorsjY6Kv+cOmNRo3hgmDFb1b0rjfKRWPZTnGpPwqo+7OvextT7D76yHwT2/oOvak+uMmap7/5RgzjHv4nz/5vVd+hvPpJxrerazqBB+MQMAD7VA95P7NOPPrkD3p855E63n1SuiTuhzdBiaAt0FtKhrdA2qB7aDp2D7oJ2QDuhpVAPtBxaBq2AVkK9kBfqh85De6EFkA86CR2EBqHDUCt0CGqDItB6SIPaoQ3QESgBdUCdUAA6CgWhKHQcugBthE5Am6BTUgmjrl6d+l+3LoWyujhU9/+76uKYYx0U1Ss/sA5+T71ilQHj99XBD1XA1KdE/Kvi9S31yjTr4EV1YKjrWB30WQeN6sDO/79USaNe+ZG66NVBzDr4sTposQ5+Wp8SFcDO+VrVqIV4t4og9YWF1sEvqzCx0/trKmfkPM43rBc6GlMi+b9lHXSrP8gO+G9aB9fUK3bA29M49uyNneJ71CuIczvF1UzIHdcPZju8u6yDFvU9B1Sgqlf+yjr4ujpYYx18Rx0MqB+yQwazXVXsPP5r6+D76hWXdbBQfU+TdTCuXrEjf5eq+OqV71oHc+tlQk8M5lp1VV3Jjx0pUV0nzqOoYWZDfer9Cm/1Meqb1Ese62Bdo0zf+ep8UL/jn6gYrpcxbPcZ37EOmtUr37MO5qiDCW3FhFZhtvXCSH3qOlXfHo2vsg7c6luc6seuDqZaB4vVwWrrYJE6+Lb6ZnVgF/Na0zBxR/oSVZXrU9er03ZV3mcdrFLfU2sxfqouFfXCxLG4XXDd1sEDmJWbYR20qoOZqkw7UtebKfsb62ADJvXs4m5Potm1+GfWwSb1yo+tg05ZQ4069e5tUS/9sXXwVVTTIetAVwdrrYNt9anr9YK1js9wqN9ou/qm6dbBV9TBhD7OusKso5D6Wq35mjjZardIdvtjT0WqDT470L+oO1FPqpWthsq+A/W1/SpfVNvbqF7qUS/Zncc8dQ2h86jNXNc6EKu/to52qV9ltyB252HPONp9xoRJCSs7rKPd6q/kVEd71Lcfsw761UGtWzWmqa/tVS/VGkora6wjQ/3CJnW0T30xZB3sVweLrINBdbDbOjisDuy+sdb4GTPULzumvmZPx9rNXK2Hs05q6+g4pljtnstutb6vzmx1YHdYf6rewXpVORyVyhFQfzG5gyqOfimOOZc45lzimHOJY84ljjmXOOZc4phziWPOJY45lzjmXOKYc4mj74ljziWOTieOWZY4ZlnimGWJY5YljlmWOGZZ4uhY4phliaNHiWOWJY5ZljhmWeLoX+KYZYljliWOWZY4ZlnimGWJY5YljnmVOOZV4phXiaOnjWNeJY55lTjmVeKYV4ljXiWOeZU45lXimFeJY14ljnmVOOZV4ujZ4+i24+hi4+jy4ujB4phXiWNeJY55lTjmVeKYV4ljXiWOeZU45lXimFeJVzu5+nq5X+oMLsMzuAzP4DI8g8vwDC7DM7gMz+AyPIML7wwuvDO48M7gwjuDC+8MLrwzuPCqugSloCegJ6HL0L3QGagVegqKQFegIehpSIOega5Cz0LDUBrKQFkoADVAOegRqBOqhxzQFGgdNAuaCtVBr0LToSZoACpDZ6Fz0HkoAV2AXoPi0OvQG9Cb0FvQ21Aj9I5Uwuqe1VRgq6rDETTCaqT1F6qif8iFLdUCj9/OFa4JC1uGR002/tfUDe+Evl0rXKqdXYs2+9ZWuOzW+QNNWqnH0Pwr1ej8/NkrY556L9vU127/Eldj/U2uvFYXTHc6Uh90DVZ95EvgxouxCWNK5a/x3uRY/7fPpd7fk1/BXRJLJZZJrJCYJ+GVWC3RKtEm0S6xQWKuRFBio8QmiekSXRK6xN0S3RLbJUISOyR2SbglwhK7Jfok+iX2SrRIGBL7JBZIHJA4KDFT4h6JiMQciaMSxyVOSNwhsUhihsRsiSUSyyVWSngkVkn4JNZIrJVYJzFLYr3EVAlNwi/RIRGQOC0xX6JTYrPEFomtEtsknBLNEi6JnRI9Er0SeyT2SyyUmCbRJDEgMShxSOKwxJDEEYljElGJkxIxiVMCCWNqJcwaVNiq1K31iN3oervRB3ajl+1GJ92NXrYbvWU3eqhu9Ffd6L260VF1o6PqRu/Vjf6qG/1VN/qrbvRX3eivutFfdaNr6ka31Y3+qhu9Vzf6q270V93or7rRNXWja+pG19SNrqkbfVk3+rJu9GXd1f7KWXl3/5uaaGpMVedGn6nMXEyrfOEh6yf3B+Kd7cI724VRQxfOiC68z114n7vwPnfhfe7C+9yF97kL73MX3ucuvM9deJ+78D534X3uwvvchfe5C+9zF97ZLryzXTgHuvA+d+F97sL73IX3uQvvcxfe5y68z114n7vwPnfhfe6qvs/TK330MdXHPKj66Getg5+o67k2AuzDWKoPY6k+vM99OAf6MJbqw7i1D1d+H86IPpwRfciPPoxi+3Be9eHc6cO504dzpw/nRx/OpD6cSX04d/pw7vTh3OnDudOHc6cP504fzp0+nC19OFv6cF714dzpw7nTh3OnD+dOH86dPpw7fTh3+nDu9OHc6cO501c9d5rq5cpvDje253Bjew43tudww38Ot/HncNN7Dje953DTew43vedw03sON73ncNN7Drf453CLfw43xOdwQ3wON8TncEN8DjfE53BDfA43xOdwQ3wOjzfI4fb4HG6Pz+HRBzncLJ/DzfI53Cyfw83yOdwsn8ODEHK4dT6HW+dzePRBDjfS53AjfQ430udwI31V06EtUBekQ93QVmgbtB1yQiGoGXJBO6CdUA+0C3JDYWg31Avtgfqgfmgv1AIZ0D5oAbQfWggdgKZBB6EmaACaCQ1Ch6DDUAQago5Ac6Cj0DEoCh2HTkAnoRh0SiphzJhc//8krf+rddnmxtSneiPAJ335//O76v+pWuxXuzQ8k6v+n7BV/5n11Wey1PVfsH675eq3W9SgvjCr8oXaQKoDA6kODHM6MFjqwGCpA4OeDgyIOjAE6sCgpwODng4MjzowBOrAEKgDQ6AODIE6MATqwBCoA0OgDgxzOjAg6sCAqANDoA4MZTow6OnA8KgDw6MODHM6MMzpwDCnA0OnDgyWOqpDoNmV4XNUvZN16oRKWQc/UFdLbfjci+FzL4bPvRg+9+Jd78XwuRfD514Mn3txRvTijOjF8LkXZ1Ivzo9enDu9OFt6cUb04tzpxbnTi7OlF2dLL86WXpwtvThbenG29OJs6cUZ0YtzpxfnTi/Oll6cEb04I3px7vTiXe/FWdaLc6AXZ1IvzqRenEm91bOlGQPmPAbMeQyY8xgw5zFgzmPAnMeAOY8Bcx4D5jwGzHkMmPMYMOcxYM5jwJzHgDmPAXMeA+Y8Bsx5DJjzGDDnMWDOY8Ccx4A5jwFzHgPmPAbMeQyY8xgw5zFgzmPAnMeAOY8Bcx4D5jwGzHkMmPMYMOcxYM5jwJzHgDmPAXMeA+Y8Bsx5DJjzGDDnMWDOY8Ccx4A5jwFzHgPmPAbMeQyY8xgw5zFgzmPAnMeAOY8Bcx4D5jwGzHkMmPMYMOcxYM5jwJzHgDmPAXMeA+Y8Bsx5DJjzGDDnMWDOY8Ccx4A5jwFzHgPmPAbMeQyY8xgw5zFgzmPAnMeAOY8Bcx4D5jwGzHkMmPMYMOcxYM5jwJzHgDmPAXMeA+Y8Bsx5DJjz1QGzqxKAtTXi31bfcbfEbIlmCZeEW8IjMU+iT6JFYoHEfomFEtMkmiRmSsySuEdijsRcidMS8wUS1vBNVokMqkQGVSKDKpFBlcigSmRQJTKoEhlUiQyqRAZVIoMqkUGVyKBKZFAlMqgSGVSJDKpEBlUigyqRQZXIoEpkUCUyqBIZVIkMqkQGVSKDKpFBlcigSmRQJTKoEhlUiQyqRAZVIoMqkUGVyKBKZFAlMqgSGVSJDKpEBlUigyqRQZXIoEpkUCUyqBIZVIkMqkQGVSKDKpFBlcigSmRQJTKoEhlUiQyqRAZVIoMqkUGVyKBKZFAlMqgSGVSJDKpEBlUigyqRQZXIoEpkUCUyqBIZVIkMqkQGVSKDKpFBlcigSmRQJTKoEhlUiQyqRAZVIoMqkUGVyKBKZFAlMqgSGVSJDKpEBlUiU60Sc+vlo6NbcHq34MfTgshrwY+nBSHQggu9BeHYgpO2BSdtC34gLbi0W3BitiAAWxCALbjQW3CCteAkasFpU9Ud0CLoTmgxtAS6C1oKLYOWQyugldAqyAuthnzQGmgttA5qhdqg9ZAGtUMbID/UAQWgILQR2gR1QpuhLVAXpEPd0FZoG7QdckIhaAe0E+qBdkFhaDfUC+2B+qB+aC9kQPug/dAB6CA0AA1Ch6DDUAQago5AR6FjUBQ6Dp2ATkIx6BR0N3QPdFoqYbjrJ582NvlZUpOfJXVTTzH4I+tk+SepGz3NwA69uuqEnQfz8u2YoW3HvGs75l3bMbfajrnVdsyttmM2tR2zqe2Yd23H3Go75lbbMbfajrnVdsyttmNutR1zq+2YW23H3Go75lbbMbfajjnSdsymtmPetR3zru2YaW3H3Go75lbbMbfajrnV9upbNa/yVt3Ew7Wv8/Q2dVY/fOPN++IxbvNvPXMnP2Ssf/JDxj7so1dUtXmuISXvb2mZbAM+/W2AKk+br3shTLYDH82V9f4FtaByQb1Xsvv/tajKFSSMhdY3VPZUHLL+/uesn9iEC7DzJi/Aj+Dhmh/vMzU/5I2Gn4InaC6q7AL4IM+SrT6C9tt4k2/xqbJ3YrYsiNmyIGbLgpgtC2K2LIjZsiBmy4KYLQtitiyI2bIgZsuCmC0LYrYsiNmyIGbLgpgtC2K2LIjZsiBmy4KYLQtitiyI2bIgZsuCmC0LYrYsiNmyIGbLgpgtC2K2LIjZsiBmy4KYLQtitiyI2bIgZsuCmC0LYrYsiNmyIGbLgpgtC2K2LIjZsiBmy4KYLQtitiyI2bIgZsuCmC0LYrYsiNmyIGbLgpgtC2K2LIjZsiBmy4KYLQtitiyI2bIgZsuCmC0LYrYsiNmyIGbLgpgtC2K2LIjZsiBmy4KYLQtitiyI2bIgZsuCmC0LYrYsiNmyIGbLgpgtC2K2LIjZsiBmy4KYLQtitiyI2bIgZsuCmC0LYrYsiNmyIGbLgpgtC2K2LIjZsiBmy4KYLQtitiyI2bJgdbZssbz/2hhGCAzjsh/GZT+My34YF/owomsYl/YwLu1hXKLDuESHcRkO4zIcRowO41IbxqU2jEttGKVgGJfTMC6nYVxOw7hkhnGRDOMiGcaFMIyAH8ZlMYzLYhin/jBO/WGc+sMI/2FcCMO4EIZRGIZxIQzjQhhG4RvG6T2MAjaME3oYJ+0wTtphlJ5hlJ6q4tAMaDa0BFoOrYQ80CrIB62B1kLroFnQemgqpEF+qAMKQPOhTmgztAXaCm2DnFAz5IJ2Qj1QL7QH2g8thKZBTdAANAgdgg5DQ9ARKWOuA188BkWhk1AMOgWdhu6G7sEfvxl/vLEFTBhLJicjPv2TEZOfe5L6mGcjqh+Tc1r9hd4fad6FwV4nKnwn0qcTdaYTNa8TSd+JbO9ERepEnnYiTztRKzvRpXSiF+hEtepEx9SJmtCJet+Jmt6J5O1Exe1Exa3qTmgxtAS6C1oKLYOWQyugldAqyAuthnzQGmgttA5qhdqg9ZAGtUMbID/UAQWgILQR2gR1QpuhLVAXpEPd0FZoG7QdckIhaAe0E+qBdkFhaDfUC+2B+qB+aC9kQPug/dAB6CA0AA1Ch6DDUAQago5AR6FjUBQ6Dp2ATkIx6BR0N3QPdFoqYSzFXuPfEr+6itkSzRIuCbeER2KeRJ9Ei8QCif0SCyWmSTRJzJSYJXGPxByJuRKnJeYLJIxln89eTbUemzEhPtm0Ta4c3ZaVo+V4kuz5elnzqnoQegh6GLoIOaFm6FHoMehx6D5oGRSGeqFLUAp6AnoSugzdC52BWqGnoAh0BRqCnoY06BnoKvQsNAyloQyUhQJQA5SDHoE6oXrIAU2B1kGzoKlQHfQqNB1qggagMnQWOgedhxLQBeg1KA69Dr0BvQm9Bb0NNULvSCWsXPpclsCJS8ETK55VEPpbUzf83KZPdcH7hXyk022tah9zMVv5Ob82JrvCz1xXqHZZ/duP7YJaVds21Negtg15r399qYm/Q9ffAHI7LjSjWf0BDzs+gktODbT+vWPy2rvOtaeeif6Hjs/nRXhrF1+9dfBHjttwFa6ecNkZe272cpt4eanHvp2V15lxXD3Yf23qF/np2OpNWt+Qurk+7gZb+uzT2j7jb7Bp+3Z9TPatfYjAR7qlzycXWvq/L0ZJVTRJzJCYKTFLYqrEbIlmCZfEHIm5Em4Jj8Q8ifkSLRILJBYKJKzLX21oXKnKxDfk51ONYjpjFNMZo5jOGMV0RlVfgi5CTqgZegR6FHoMehy6D1oGhaFe6BKUgh6AnoCehC5D90JnoC9Dg1Ar9BQUga5AQ9DTkAY9A12FnoWGoTSUgbJQAGqA7ody0EmoE6qHHNAUaB00C5oK5aECZEJFqAQ9B41Az0MvQNegMvQi9BL0MvQKVAe9Ck2HmqAB6Cx0DjoPJaAL0GtQHHodegN6E3oLehtqhN6RShhra5330Urnva6S76o3+Ga9OH1DuFhDiJEQTt8Q4i6EUAnh0g3hYg0h7kI4YUM4mUM40UM4mUM4mUM4mUN460N460N460N460N460M4DUN4e0M4LUI4EUI4SUI4EUI4EUI4EUJ4e0N4e0N4e0N4e0M4gUI4gUI4gULVE6G19hBGfiJR5dOYjD+s9VZfVQe1flB8NtHEnfh2uzXxTkO7caq1f5UPrOrPp97vfBJWZ6z+PuoBq6/Xi3NPw7mn4fzScH5pOIc0nEMaziENZ42Gs0bD+aXhHNJwDmk4hzScQxrOIQ3nkIZzSMM5pOEc0nAOaTiHNJwLGs4aDeeXhvNLwxml4RzScA5pOIc0nENa9Rxab71n1vGEUcSf16cmb/r5nNz00155+9UTpr8rr9tfwQ6Rqu6DWqUSxob3ClP/JlWX/J/PGVc1tJ/VmPocTf98lLM+ahbuC+qXf6qnfz7srE/HrV9a6gf4xcaP6Rr7D/XXvcb+zDp4oPFWLrbJa2xyZvV2Xlp2T5dpkD1dVfXQeegcdEEqYQQmPiz9ikN9IXjr1/FH+NyNT1r7ZSWW8c7/oA/7FD064xZrwEbsn/dg/7wH++c92D/vwf55D/bPe7B/3oP98x7sn/dg/7wH++c92D/vwf55D/bPe7B/3oP98x7sn/dg/7wH++c92D/vwf55D/bPe7B/3oP98x7sn/dg/7wH++c92D/vwf55D/bPe7B/3oP98x7sn/dg/7wH++c92D/vwf55D/pwD/bPe7B/3oP98x7sn/dg/7wH++c92D/vwf55D/bPe7B/3oP98x7sn/dg/7wH++c92D/vwf55D/bPe7B/3oP98x7sn/dg/3xFeUedo079Z2+k92AjvQcb6T3YSO/BRnoPhkkebKT3YCO9BxvpPdhI78FGeg820nuwkd6DjfQebKT3YCO9BxvpPdhI78FGeg820nuwkd6DjfQebKT3YCO9BxvpPdhI78FGeg820nuwkd6DjfQebKT3YCO9BxvpPdhI78FGek91gLoJz6OeXS+Toqo7ocXQDGg2tAS6C1oKLYOWQyuglZAHmgetgrzQasgHrYHWQuugVmgW1Aath6ZCGtQObYD8UAc0FwpAQWg+tBHaBHVCm6Hp0BaoC9KhbmgrtA3aDjmhENQMuaAd0E6oB9oFuaEwtBvqhfZAfVA/tBdqgQxoH7QA2g8thA5A06CDUBM0AM2EBqFD0GEoAg1BR6A50FHoGBSFjkMnoJNQDDollTA68diIXQ0y5Kq6C1oKLYNWQPMgL7QaaoXaoHZoAzQXCkIboU3QdKgL0qFuaDsUgnZAuyA3FIZ2Q31QP7QXaoEMaB+0ADoAHYRmQhFoDnQUOg6dgO6AFkEzoNnQEmg5tBLyQKsgH7QGWgutg2ZB66GpkAb5oQ4oAM2HOqHN0BZoK7QNckLNkAvaCfVAvdAeaD+0EJoGNUED0CB0CDoMDUFHoGNQFDoJxaBTUgljM26l/HvqO+6WmC3RLOGScEt4JOZJ9Em0SCyQ2C+xUGKaRJPETIlZEvdIzJGYK3FaYr5AwtiCNnkEA+oRDKhHMKAewUTDCKYPRjDYHsFgewSD7REMtkcw2B7BYHsEg+0RTC2MYGphBAPxEQzERzAQH8FAfAQD8REMxEcwEB/BQHwE0yojGJaPYFg+gimXEQzSRzBIH8EgfQSD9BEM0kcwATOCIfsIhuwjmHIZwQB+BAP4EQzgRzCAr2o6tAXqgnSoG9oKbYO2Q04oBDVDLmgHtBPqgXZBbigM7YZ6oT1QH9QP7YVaIAPaBy2A9kMLoQPQNOgg1AQNQDOhQegQdBiKQEPQEWgOdBQ6BkWh49AJ6CQUg05JJYyuifsh/nFDanI/xOdkP4T++dy5MLmYesPFVLVyvkB9z+Sq6o0vpOssVnVjsaoB/UID6k0DesgG1JsGdFUN6Jwa0G02oAtoQBfQgArTgF6pAZW+AR1lAzrKBnRODajYDajKDajDVd0BLYLuhBZDS6C7oKXQMmg5tAJaCa2CvNBqyAetgdZC66BWqA1aD2lQO7QB8kMdUAAKQhuhTVAntBnaAnVBOtQNbYW2QdshJxSCdkA7oR5oFxSGdkO90B6oD+qH9kIGtA/aDx2ADkID0CB0CDoMRaAh6Ah0FDoGRaHj0AnoJBSDTkF3Q/dAp6USVnJO7gm5rS2oXYHtwqtK8YXG1MfdlN7aVpD3i+q26nbb6tkzU03wnzO21+4N+duNiqEaByvcgYmdURSfURSfURSfURTlUZTaURSmURSmURSmURSmURSmURSmURSmUZThUZThURStURStURStURStURStURStURStURStUbQgoyhhoyhho2hPRlHQRlHQRlHQRlHQRlHQRtGsjKK8jaK8jaI9GUWxG0WxG0WxG0Wxq2o6tAXqgnSoG9oKbYO2Q04oBDVDLmgHtBPqgXZBbigM7YZ6oT1QH9QP7YVaIAPaBy2A9kMLoQPQNOgg1AQNQDOhQegQdBiKQEPQEWgOdBQ6BkWh49AJ6CQUg05JJYydtTsU7lNx2IM4TCMO04jDNOIwjThMIw7TiMM04jCNOEwjDtOIwzTiMI04TCMO04jDNOIwjThMIw7TiMM04jCNOEwjDtOIwzTiMI04TCMO04jDNOIwjThMIw7TiMM04jCNOEwjDtOIwzTiMI04TCMO04jDNOIwjThMIw7TiMM04jCNOEwjDtOIwzTiMI04TCMO04jDNOIwjThMIw7TiMM04jCNOEwjDtOIwzTiMI04TCMO04jDNOIwjThMIw7TiMM04jCNOEwjDtOIwzTiMI04TCMO04jDNOIwjThMIw7TiMM04jCNOEwjDtOIwzTiMI04TCMO04jDNOIwjThMIw7TiMN0NQ53IQBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADQRgCYC0EQAmghAEwFoIgBNBKCJADSrARj+kB+1G7j+XdLX+Wy73bXO85+qzrMXn8b8ECLloepfbQ+yuYRsLiGbS8jmErK5hGwuIZtLyOYSsrmEbC4hm0vI5hKyuYRsLiGbS8jmErK5hGwuIZtLyOYSsrmEbC7hB1lCNpeQzSVkcwnZXEI2l5DNJWRzCdlcQjaXkM0lZHMJ2VxCNpeQzSVkcwnZXEI2l5DNJWRzCdlcQjaXkM0lZHMJ2VxCNpeQzSVkcwnZXEI2l5DNJWRzCdlcQjaXkM0lZHMJ2VxCNpeQzSVkcwnZXEI2l5DNJWRzCdlcQjaXkM0lZHMJ2VxCNpeQzSVkcwnZXEI2l5DNJWRzCdlcQjaXkM0lZHMJ2VxCNpeQzSVkcwnZXEI2l5DNJWRzCdlcqgZgXyUA1URzXKXs37IODloHxgl1/2SXSulfsw5+vfrEgrr+Jdb/v2D9f7n6tf1yanRGdWp0b20u9B81KBrI1wLytYB8LSBfC8jXAvK1gHwtIF8LyNcC8rWAfC0gXwvI1wLytYB8LSBfC8jXAvK1gHwtIF8LyNcC8rWAfC0gXwvI1wLytYB8LSBfC8jXAvK1gHwtIF8LyNcC8rWAfC0gXwvI1wLytYB8LSBfC8jXAvK1gHwtIF8LyNcC8rWAfC0gXwvI1wLytYB8LSBfC8jXAvK1gHwtIF8LyNcC8rWAfC0gXwvI1wLytYB8LSBfC8jXAvK1gHwtIF8LyNcC8rWAfC0gXwvI1wLytYB8LSBfC8jXAvK1gHwtIF8LyNcC8rWAfC0gXwvI1wLytYB8LSBfC8jXAvK1gHwtVPN1HwKwiAAsIgCLCMAiArCIACwiAIsIwCICsIgALCIAiwjAIgKwiAAsIgCLCMAiArCIACwiAIsIwCICsIgALCIAiwjAIgKwiAAsIgCLCMAiArCIACwiAIsIwCICsIgALCIAiwjAIgKwiAAsIgCLCMAiArCIACwiAIsIwCICsIgALCIAiwjAIgKwiAAsIgCLCMAiArCIACwiAIsIwCICsIgALCIAiwjAIgKwiAAsIgCLCMAiArCIACwiAIsIwCICsIgALCIAiwjAIgKwiAAsIgCLCMAiArCIACwiAIsIwCICsIgALCIAiwjAIgKwiAAsIgCLCMAiArCIACwiAIvVANx//Z0Wap/fjJvd7Tu53/Mzu99zcptn6oNu8zyAaa0HUSwfrF50B3EH6kV0FhfRL1xEv3AR/cJFdAgX0QVcRN2/iLp/EX+li6jYF1GHL6IOX0StvYjqehH19CLq6UXUzKruhrogHeqGtkMhaAfkhnZBYWg31Af1Q3uhFmgBZED7oAPQQWgmdA8UgeZAR6Hj0AnoDmgRNAOaDS2BlkMrIQ+0CvJBa6C10DpoFrQemgppkB/qgALQaWg+1AlthrZAW6FtkBNqhlzQTqgH6oX2QPuhhdA0qAkagAahQ9BhaAg6Ah2DotBJKAadkkoYA0hTP56i68eTIvx4coMfT+zw4ym6fjxh149n6vrxbA8/nt/hxzNB/Himrh/P1PXjmRl+PHPBj2cu+PFMXT+eqevHU3T9eIquH8/b9eOZun48U9ePZ+r68UxdP56p68dzc/14bq4fz8314+m7fjx91199ysKgnH2cVZ19PITR9pHKvcl3QpuhxdAWSIe2Qtug7dBd0A5oJ7QU6oGWQ8ugFdBKqBfyQv3QXmgB5INOQgegg9AgdBhqhQ5BbVAEWg9pUDu0AToCdUCdUAA6CgWhKHQc2gidgDZBp6QSxuHJG+EmB0afrYGRGt3P/fhGSJHKFWU/ln/CzoPqs/sfwdYD+68zcQ/CTT3W//1NCEO4De8qBidX0RxdxVDlKhr0q2hLr6Jdv4r2+Sravato966ilb+KAdZVDGOuokm9ikb7KoZ+V9HAXkVjeBVDnKsYxlzFMOYqWsir1WbsyGQUTkbhZysK7QRUmZhr/Kij8Gjlilpo+ZfVX/Tr1kG5sXJR1hm/0VjJhjqjqA6+ax0cc1Rypc4Yqa+ESJ2xUP0B37cONtZXwqLOeKC+klLWO6G++ZvWwX+pr6SD9eNurISG9WOq/NnHansBspW9ANGJF/ev3OTFrX4K4fobXtVGhwrnx+vFdW0E1Evp+htf2bd0I56xR30wSyR1U3fkGX719xitT13v3rwz1sHF+tSt3qRXZx1cvv4VdYO79dR5X7j+85o/uQ+MOI7B3TVML1V1J7QYmgHNhpZAd0FLoWXQcmgFtBLyQPOgVZAXWg35oDXQWmgd1ArNgtqg9dBUSIPaoQ2QH+qA5kIBKAjNhzZCm6BOaDM0HdoCdUE61A1thbZB2yEnFIKaIRe0A9oJ9UC7IDcUhnZDvdAeqA/qh/ZCLZAB7YMWQPuhhdABaBp0EGqCBqCZ0CB0CDoMRaAh6Ag0BzoKHYOi0HHoBHQSikGnpBLGCQRgFgGYRQBmEYBZBGAWAZhFAGYRgFkEYBYBmEUAZhGAWQRgFgGYRQBmEYBZBGAWAZhFAGYRgFkEYBYBmEUAZhGAWQRgFgGYRQBmEYBZBGAWAZhFAGYRgFkEYBYBmEUAZhGAWQRgFgGYRQBmEYBZBGAWAZhFAGYRgFkEYBYBmEUAZhGAWQRgFgGYRQBmEYBZBGAWAZhFAGYRgFkEYBYBmEUAZhGAWQRgFgGYRQBmEYBZBGAWAZhFAGYRgFkEYBYBmEUAZhGAWQRgFgGYRQBmEYBZBGAWAZhFAGYRgFkEYBYBmEUAZhGAWQRgFgGYRQBmEYBZBGAWAZhFAGarAXhy4hPjdjakJp8Y9zl5Ylzspu8jUv+YZfjHTJjMu+EU3ilM4fUgR3twHfagtvbgOuxBtelBRelBFe5BOvYgHXtw5fWghvQgAXtQaXtQaXtQUXqQZD1Iqx7kU1V3QIugO6HF0BLoLmgptAxaDq2AVkKrIC+0GvJBa6C10DqoFWqD1kMa1A5tgPxQBxSAgtBGaBPUCW2GtkBdkA51Q1uhbdB2yAmFoB3QTqgH2gWFod1QL7QH6oP6ob2QAe2D9kMHoIPQADQIHYIOQxFoCDoCHYWOQVHoOHQCOgnFoFPQ3dA90GmphHE3olJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlhqjUEJUaolJDVGqISg1RqSEqNUSlVo3KexCVlxCVlxCVl/BbX0JUXkJUXsIfewlReQlReQlReQlReQlReQlReQn/lEsIzksIzksIzks4NS7hdLuEUL2EUL2EUL1U/dGdxo8uiR9dEj+6JKpMEj+6JH50SVSZJH50SfzokvjRJfGjS+JHl8SPLokfVhI/rCR+WEn8QJL4gSTxA0miyiRRZZKoMklUmSSqTBJVJokqk0SVSaLKJFFlkqgySVSZJKpMElUmiSqTRJVJosokUWWSqDJJVJkkqkwSVSaJKpNElUmiyiRRZZKoMklUmSSqTBJVJokqk0SVSaLKJFFlkqgySVSZJKpMElUmiSqTRJVJosokUWWSqDJJVJkkqkwSVSaJKpNElUmiyiRx2SdRZZKoMklUmSSqTBJRkkSVSaLKJFFlkqgySVSZJKpMElUmiSqTRJVJosokUWWSqDJJVJkkqkwSVSaJKpNElUmiFCQR90lEc7Ialb/0c2ZJ1JxIsT51c49dualZkv8JW6cfxsX5cPUv8z+rLQDqV6xwqC0Av1z5FV+qZXtlW++XoUHofugB6CSUhDZDD0IPQQ9DFyEn1Aw9Aj0KPQY9Dt0HLYPCUC90CUpBT0BPQpehe6EzUCv0FBSBrkBD0NOQBj0DXYWehYahNJSBslAAaoByUCdUDzmgKdA6aBY0FcpDBciEilAJeg4agZ6HXoCuQWXoRegl6GXoFagOehWaDjVBA9BZ6Bx0HkpAF6DXoDj0OvQG9Cb0FvQ21Ai9A02DZkKzIRc0B2qB3NB8aB7kgRZKJYz/pRKxtZP2i6iHX0TF3YkN/DtxQ0RVZ6BDUBDqhbZCGyEfdAqqk3/PhPErtf1jj1eKR7zyL7N3sI2rVRLsYPuBdfB7qsKphaHfVwf2MtAP1eJIfeWKrTO+VV95C+uMF9WBodYp1EGfddCoDuyFob9UyyXqlR+pRQ11ELMOflyfqu6f+yl2ltkrRLXtpbVtn6rw7lff0a3WWhoqb9l72/HshaKvqQUVuQP0G9YLHY0psaj0LeugW/2J9lqS2nt3Tb1i7wm1t4LaO0DtRaU96hXs97S3eaqdiXdcf+emvbuzyzpoUd9zQK0cqVf+yjr4ujpYYx18x1E5zawfsjqwl5nsbae1zZjGcbVvbq31yl9br3zfkRK7DJusg3H1ir0VdJd18CP1itqbOFe9Yq9JTVyKqu3QXafeIvWL7JW6ibsz56olKXVQWww0NqotejPqU+/vX3x/KWq+OkPU7/gnak1KfY+90dJei/yOddCsXvmedTBHHdgrj7UdyRO2G9sbLSfsHP6J9UJOvbDKOnCrb3Gqn786mGodLFYHq62DRerg2+qbsbmwtvHY3v5r7/pdYh2sVN9rrx/aK4r2QuI+62CV+p7aNuWfqqtIvTBxZdHedmvvDLW3+M6wDlqxV3Ti/tu/sQ42YIewvdfXXnT8mXWwSb3yY+ugU26ONerUm7ZFvfTH1sFXsU12yDrQ1cFa62Db9Z8gWFsTNhzqN9quvmm6dfAVdTBhCdi6wqyjkPpabd/2xG3a9tKt3Unb25lVkO3ALuZm6+Ckuiga1O+8U31tvwoadYdCo3qpR71kN/D2Dlt7ibW257221GpMUb9ql/pV9lqrvaXY3r5sr7VOWGK1ssM62q3+Sk51tEd9u73Ofcw66Fdfm6a+tld9zd7hOl29ZKgvNqmjfeqLIetgvzpYZB0MqoPd1sFhdWAvbNcWrY0Z6pcdU1+z93ZP+EgJ61y2jo5jv7a9uGyPatRm5ZXqwN46/afqHaxXFeVvYRpJxzSSjmkkHdNIOqaRdEwj6ZhG0jGNpGMaScc0ko5pJB3TSDqmkXRMI+mYRtIxjaRjGknHNJKOaSQd00g6ppF0TCPpmEbSMY2kYxpJxzSSjmkkHdNIOqaRdEwj6ZhG0jGNpGMaScc0ko5pJB3TSDqmkXSMVHVMI+mYRtIxjaRjGknHNJKOaSQd00g6ppF0TCPpmEbSMY2kYxpJxzSSjmkkHdNIOqaRdEwj6ZhG0jGNpGMaScc0ko5pJB3TSDqmkXRMI+mYRtIxjaRjGknHNJKOaSQd00g6ppF0NLU6ppF0TCPpmEbSMY2kYxpJR9usYxpJxzSSjmkkHdNIOqaRdEwj6ZhG0jGNpGMaScc0ko5pJB3TSDqmkXRMI+mYRtIxjaRjGkmvNt/3VqJSFS2XCuranE0KczYpzNmkMGeTwpxNCnM2qepY5b5bv93rF3Sb181s8/rgt3XdYBvYxNu57C7udt28NbHVs5uTm7l56wa3at3gDq0PdGPWJ+0Toqw23LgTLcQt3n31q7UR7C81qhHsFz7ntzd+iq4DNYw513jdC8Ieq3xir4ybuVPxY36I1ZnKpWDf12ffmf3+rXL2jXE3WIuw736zzyP7r6x+YDPr/0f3BdpngH1t1H6+CeOLcrDQ/xUxVqiiSWKGxEyJWRJTJWZLNEu4JOZIzJVwS3gk5knMl2iRWCCxUOIOiUUSd0osllgicZfEUollEsslVkislFgl4ZVYLeGTWCOxVmKdRKtEm8R6CU2iXWKDhF+iQyIgEZTYKLFJolNis8QWiS4JXaJbYqvENontEk6JkMQOiZ0SPRK7JMISuyV6JfZI9En0S+yVMCT2SeyXOCBxUGJAYlDikMRhiYjEkMQRiaMSxySiEsclTkiclIhJnJK4W+IeidMCCeNsJcxqcx1XMNdxBTMYVU2DZkAzoVnQbKgZckFzoLmQG/JA86D5UAu0AFoI3Q3dA52G9kN9UgnjXOXH+qZVM+5T1fUN6+Axh/rCefnz7n9XvlXvyux/V2b/uzL735UJ/65M+Hdlwr8rL5h3ZcK/KxP+XXlZvCvj/l3xdlfRJDFTYpbEPRJzJOZKnJaYL5AwEpUfkirGSxtT1Q9u+Rfq9Qu1tvmNysLPr6EQ/4H6faZLNEnMkJgpMUtiqsRsiWYJl8QcibkSbgmPxDyJ+RItEgskFkrcIbFI4k6JxRJLJO6SWCqxTGK5xAqJlRKrJLwSqyV8Emsk1kqsk2iVaJNYL6FJtEtskPBLdEgEJIISGyU2SXRKbJbYItEloUt0S2yV2CaxXcIpEZLYIbFTokdil0RYYrdEr8QeiT6Jfom9EobEPon9EgckDkoMSAxKHJI4LBGRGJI4InFU4phEVOK4xAmJkxIxiVMSd0vcI3FaIGF8qTYH0H8wVV2p/pfXH+RM3sKY+uzdwvhlLECFsAAVQlMWQuMVQuMVQuMVQvsWQhsWQhsWQhsWQhsWQhsWQhsWQhsWQhsWQhsWQhsWQhsWQhsWwgJUCAtQISxAhbAAFcICVAgLUCEsQIWwABXCAlQIC1AhLECFsAAVwgJUCAtQISxAhbAAFcICVAgLUCEsQIWwABXCAlQIC1AhLECFsAAVwgJUCAtQISxAhbAAFcIC1P/P3p0HRnWtiYGXSkiAChWF2b2AwWBjsxmzCCGoQgUGClHWiiRALLIn6Ylldzy2pTbP5QVjyxvebWzLS3nDi9Rk684y1oTu6SyQZZJ2L5NklJetXzr72kn3JJOeTt0qJJ9f28/x27r98njvD92fVAgsnfud73znu6ea2IBqYgOqiQ2oJjagmtiAamIDqokNqCY2oJrYgGpiA6qJDagmNqCa2IBqYgOqiQ2oJjagmtiAamIDqokNqCY2oJpI/pvYgGpiA6qJDagmNqCaWFA0sQHVxAZUExtQTWxANbEB1cQGVBMbUE1sQDWxAdXEBlQTG1BNbEA1sQHVxAZUExtQTWxANbEB1cSyq4llVxPLrqby0upb9Arn2XfKs++UZ98pz75Tnn2nPL3CeXqF8/QK5+kVztMrnKdXOE+vcJ5e4Ty9wnl6hfP0CufpFc7TK5ynVzhPr3CeXuE8vcJ5eoXz9Arn6RXO0yucp1c4T69wnl7hPL3CeXqF8/QK5+kVztMrnKdXOE+vcJ5e4Ty9wnl6hfP0CufpFc7TK5ynVzhPr3CeXuE8vcJ5eoXz9Arn6RXO0yucp1c4T69wnl7hPL3CeXqF8/QK5+kVztMrnKdXOE+vcJ5e4Ty9wnl6hfP0CufpFc7TK5ynVzhPr3CeXuE8vcJ5eoXz9Arn6RXO0yucp1c4T69wnl7hPL3CeXqF8/QK5+kVztMrnKdXOE+vcJ5e4Ty9wnl6hfP0CufpFc7TK5ynVzhPr3CeXuE8vcJ5eoXz9Arn6RXOl/ff7w97hZv/cfSKqwIMFF8XnjhVxXnqVTQMV3GCehUnqFfRFFzFCepVnKBexZnpVZyZXsWZ6VWcmV7FmelVnJlexZnpVZyZXkXzchWnpFdxSnoVp6RX0cpcxSnpVbRVV3EuehXnoldxLnoVTdZVnItexbnoVZyLXsXZ51WcfV7F2edVnH1exdnnVZx9XkWLdxVnn1fR1F3F+eZVNHVXlc83f6A0iJ6L1kmVwSyTJV5niddZZqAss2GWeJ1lbswya2eZKbPMXFnmqiwzZZYZPUtkzxL1s8wIWaJ+lqifJepniZFZYmSWGJklRmaJkVnidZY4mCViZommWeJnloiZJWJmiZhZ4mCWOJglDmaJg1kibZZImyXSZstx6UEKvv8i+HmUURsiHmJGiLoQNSESIWaGSIaYFeKyELNDzAkxN8S8EPNDLAixMMBA7iGC7uzSD+gKdCW6CsVRAi1Ci9HVaAlaiq5By9AcNBctR9ei69AKdD26Aa1Eq1AdWo3WoBq0Ft2I1qGb0Hp0GdqANqJ5aBOqR5tRA5qOtqBGtBVtQymURtvRVNSEZqIkyqAdaCe6Gc1Gu9ButAdl0V7UjPah+SiHbkELUAtaiFrRNNSGalE7moE6UCfaj7pQN+pBs9ABdBAdQr3oMDqCjqJjoQZyD0++fUO6cuhL3r7hh/cE84nS3xQVhx+MvnC8ePELUTW+ULz4tPTEwCMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFMUbFPlgu3JUqiMdhArohh6R3F9s2goWrdV5BJR1P6Z4kUyuvjjxa8sHSp3ePybUrfMo9+lG7TUqDkv2kv7Ot2g370J9POJ4qsaPh/7ns4XnVP5/c87Qyxw/k4wqZRRGyIeYkaIuhA1IRIhZoZIhpgV4rIQs0PMCTE3xLwQ80MsCLEwxOUhrghxZYirQiwKsTjE1SGWhFga4poQy0IsD3FtiOtCrAhxfYgbQqwMsSrE6hBrQqwNcWOIdSFuCrE+xIYQG0NsClEfYnOIhhBbQjSG2BpiW4hUiHSI7SGmhmgKkQmxI8TOEDeH2BVid4g9IbIh9oZoDrEvRC7ELSFaQrSGaAvRHqIjRGeI/SG6QnSH6AlxIMTBEIdC9IY4HOJIiKMhjoXoC3FriNsCDOQeJ0WOkSLHSJFjpMgxUuQYKXKMFDlGihwjRY6RIsdIkWOkyDFS5BgpcowUOUaKHCNFjpEix0iRY6TIMVLkGClyjBQ5RoocI0WOkSLHSJFjpMgxUuQYKXKMFDlGihwjRY6RIsdIkWOkyDFS5BgpcowUOUaKHCNFjpEix0iRY6TIMVLkGClyjBQ5RoocI0WOkSLHSJFjpMgxUuQYKXKMFDlGihwjRY6RIsdIkWOkyDFS5BgpcowUOUaKHCNFjpEix0iRY6TIMVLkGClyjBQ5RoocI0WOkSLHSJFjpMgxUuQYKXKMFDlGihwjRY6RIsdIkWOkyDFS5BgpcowUOUaKHCNFjpEix0iRY6TIMVLkGClyrJwiP0GozBAqM4TKDKEyQ6jMECozhMoMoTJDqMwQKjOEygyhMkOozBAqM4TKDKEyQ6jMECozhMoMoTJDqMwQKjOEygyhMkOozBAqM4TKDKEyQ6jMECozhMoMoTJDqMwQKjOEygyhMkOozBAqM4TKDKEyQ6jMECozhMoMoTJDqMwQKjOEygyhMkOozBAqM4TKDKEyQ6jMECozhMoMoTJDqMwQKjOEygyhMkOozBAqM4TKDKEyQ6jMECozhMoMoTJDqMwQKjOEygyhMkOozBAqM4TKDKEyQ6jMECozhMoMoTJDqMwQKjOEygyhMkOozBAqM4TKDKEyQ6jMECozhMoMoTJDqMwQKjPlUPlkKVRGR0r9/XI1ofzVO0uvvRPtQqtCDeSeYjetjf2zNvbP2tgHa2Pnq41dsTb2wdrYB2tjB6uNfak2dqLa2IlqY++pjd2mNvaX2thRamNHqY09pDb2kNrYQ2pjD6mNXaM29ona2BlqY2eojZ2hNnZ42tjhaWOHp42dmjZ2Y9rYjWljj6WNvZI2dkDa2PNoYz+kjR2QNvY82tjlaGNfo42djDZ2MtrYu2hjT7WNPc42dhLb2CtpK+95PM0wbWeYtjNM2xmm7QzTdoZpO8O0nWHazjBtZ5i2M0zbGabtDNN2hmk7w7SdYdrOMG1nmLYzTNsZpu0M03aGaTvDtJ1h2s4wbWeYtjNM2xmm7QzTdoZpO8O0nWHazjBtZ5i2M0zbGabtDNN2hmk7w7SdYdrOMG1nmLYzTNsZpu0M03aGaTvDtJ1h2l4epqcYpq0M01aGaSvDtJVh2sowbWWYtjJMWxmmrQzTVoZpK8O0lWHayjBtZZi2MkxbGaatDNNWhmkrw7SVYdrKMG1lmLYyTFsZpq0M01aGaSvDtJVh2sowbWWYtjJMWxmmrQzTVoZpK8O0lWHayjBtZZi2MkxbGaatDNNWhmkrw7SVYdrKMG1lmLYyTFvLw/SZb8hBK9GDwTd+6WmC3+Q3lI/OA70nNnTpneV/TN5Z/iueToseSB+JDf0oTnB5tnSPTXQfVpZy7w9QBapGlagd1aDpqBbtQnegVaEGcs9xAMKaUqNqH0qgmSiJZqM5aC7ai+ajBagFLUTTUC2agerQrWgWugzdhuaFGsg9z6TfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfwqTfUp70X5g8TeJ/jQXx5m4izN1EprvLseFFBvgZipFnKEaeoRh5hiLtGUqvZyhUnqFQeYZC5RkKlWcoVJ6hUHmGQuUZyrJnKMueoYh5hiLmGYqYZyhinqGIeYYi5hmKmGcIsmXVodVoDapBa9GNaB26Ca1Hl6ENaCOahzaherQZNaDpaAtqRFvRNpRCabQdTUVNaCZKogzagXaim9FstAvtRntQFu1FzWgfmo9y6Ba0ALWghagVTUNtqBa1oxmoA3Wi/agLdaMeNAsdQAfRIdSLDqMj6Cg6Fmog99LFw15Ln2z+R8GdXcYdAQZyL9O99CvBvVBGbYh4iBkh6kLUhEiEmBkiGWJWiMtCzA4xJ8TcEPNCzA+xIMTCEJeHuCLElSGuCrEoxOIQV4dYEmJpiGtCLAuxPMS1Ia4LsSLE9SFuCLEyxKoQq0OsCbE2xI0h1oW4KcT6EBtCbAyxKUR9iM0hGkJsCdEYYmuIbSFSIdIhtoeYGqIpRCbEjhA7Q9wcYleI3SH2hMiG2BuiOcS+ELkQt4RoCdEaoi1Ee4iOEJ0h9ofoCtEdoifEgRAHQxwK0RvicIgjIY6GOBaiL8StIW4LMJB75Ws3fX6x1zNa5P+N/0FT6udNn6cvPm1b0Tw49HJuaZSoXhEtsieS0Z8tJbWV6D7UgY6jb6H70ZFQA7lXSXc7Wc91sp7rZD3XyXquk/VcJ+u5TtZznaznOlnPdbKe62Q918l6rpP1XCfruU7Wc52s5zpZz3WynutkPdfJeq6T9Vwn67lO1nOdrOc6Wc91sp7rZD3XyXquk/VcJ+u5TtZznaznOlnPdTJQOlnPdbKe62Q918l6rpP1XCfruU7Wc50MsE7Wc52s5zpZz3WynutkPddZHqav2U8e1Ufvii7+Y/Hi2YmG8meii7DV/KXKoXJn+Rthq3l78eO10Td9Pfqmub3RzTd7ouq6f+KP/Ez07X+6+NKFpRFa0bw++iPDX15Mjr5F55d3fP8wqsq5mdFfcCT6LlE9to9Q9N1P9C6Gl9xtU4Z+PArN31N9OVa8+KkpQ5cKzd/IQvMPv778BodTfCeYlkoYyL3JMuTfRC+YHqI2RDzEjBB1IWpCJELMDJEMMSvEZSFmh5gTYm6IeSHmh1gQYmGAgdxbTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOIdTOId5Un8bW7Sz8Kb9LPwJv0svEk/C2/Sz8Kb9LPwJv0svEk/C2/Sz8Kb9LPwJv0svEk/C2/Sz8Kb9LPwJv0svEk/C2/Sz8Kb9LPwJi3h8hBXhLgyxFUhFoVYHOLqEEtCLA1xTYhlIZaHuDbEdSFWhLg+xA0hVoZYFWJ1iDUh1oa4McS6EDeFWB9iQ4iNITaFqA+xOURDiC0hGkNsDbEtRCpEOsT2EFNDNIXIhNgRYmeIm0PsCrE7xJ4Q2RB7QzSH2BciF+KWEC0hWkO0hWgP0RGiM8T+EF0hukP0hDgQ4mCIQyF6QxwOcSTE0RDHQvSFuDXEbQEGcgX2kFezh7yaPeTV7CGvZg95NXvIq9lDXs0e8mr2kFezh7yaPeTV7CGvZg95NXvIq9lDXs0e8mr2kFezh7yaPeTV7CGvZg95NXvIq8t7yO+UfnTReuW6KN+LlikXoid8V0WrnN+oil7yLhlNjMPGYhw2FuOwsRiHjcU4bCzGYWMxDhuLcdhYjMPGYhw2FuOwsRiHjcU4bCzGYWMxDhuLcdhYjMPGYhw2FuN3G+OwsRiHjcU4bCzGYWMxDhuLcdhYjMPGYhw2FuOwsRiHjcU4bCzGYWMxDhuLcdhYjMPGYhw2FuOwsRiHjcU4bCzGYWMxDhuLlcfZexffOqD5z0bvHPB+uK+RW0SBrazpqBbVoA/QqlADuQ9Ic/5l8J3LqA0RDzEjRF2ImhCJEDNDJEPMCnFZiNkh5oSYG2JeiPkhFoRYGGAgd6b0Xz8xJn+H7PV3qE7+DtXJ36HG+TtUNcvKowb0AHoQPYQeRlPRTHQCPYJOokfRnWgJ2oX2oMfQEHocPYGeRHegu9Aq9BTqQk+jbnQKrUXPoGfRc+h59AJ6Eb2ENqAq9DLajGKoElWjlagO1aBX0Gn0KnoNvY6G0RvoTfQWehsV0DvoXfQeeh9VoA/QdFSL2tHd6B50LxpAg+gMuh19iD5CH6NP0AiagkbRNDQDJVASzULz0Ww0D81Fc9DCUAO5D7+8CB2Vhv/6j64I/Q18D8kffaH5Un156CehvvyR20vRZlJ/dBFtBD3y+w8w+mPRJy5uJg3kPiatXMzsspi4uZi4uZj5ZDHxdjGz9eLyXf9JlM1GDxH8uaoonR2ZfCby9vK2V/nFP0WD1k/xhORP0ab3U+V2n1Gy1f8a/IPLqA0RDzEjRF2ImhCJEKUM65XKisqK6H8Tn02GL5kV4rIQs0PMCTE3xLwQ80MsCLEwxOUhrghxZYirQiwKsTjE1SGWhFga4poQy0IsD3FtiOtCrAhxfYgbQqwMsSrE6hBrQqwNcWOIdSFuCrE+xIYQG0NsClEfYnOIhhBbQjSG2BpiW4hUiHSI7SGmhmgKkQmxI8TOEDeH2BVid4g9IbIh9oZoDrEvRC7ELSFaQrSGaAvRHqIjRGeI/SG6QnSH6AlxIMTBEIdC9IY4HOJIiKMhjgUYyP1sFAWjt/r96SlRFDz7DXm461IGdCkD+qZmQNG6oOVrp0J/YqIzLXdt9IWJVOY7LKK/U05J/mTptb9VfO2e6LvVRiO8dFLun6IINE4RaJwi0DhFoHGKQOMUgcYpAo1TBBqnCDROEWicItA4RaBxikDjFIHGKQKNUwQapwg0ThFonCLQOEWgcYpA4xSBxikCjVMEGqcINE4RaJwi0DhFoHGKQOOkleMUgcYpAo1TBBqnCDROEWicItA4RaBxikDjFIHGKQKNUwQapwg0ThFonCLQOEWgcYpA4xSBxkmwxykwjFNgGGekj1NuGKdANE7xYZxy0TiliHGS/XGKHeMsEsYpoIxTQBmnoDHOUmOc8sY4pZZxih3jFDvGKfuMs0QZp7QzTpmprGo0gF5Bp9Gr6DX0OhpGb6A30VvobfQOehe9h95HCTQHzUXzUBLNRvPRQjQNzUCzQg3k/nSpeXFetGX2QjSjRFnLX57IM96pGipnD69EF1GW8lbxIrc4evVKUpuJpCA3P/ra34o+NZkITc47ExNibkH0ol+OrhZGV59FV5dHV78SXV0RXf1q1cXp5NeiT10VferXo0/tiLK24mcWFT/THM0sxYSgOfrmxRm5ubr4haujL9QUP/GLxY9Th0r5QfP06D/1z5Rmk4ntvxM8dneCh+lO8DDdCR6mO8Hjcyd4RO4ED8Wd4KG4E6yaT/A42wkeUjvBQ2oneBDtBI+eneBhsxM8bHaCB8rK6kONaCvahrajJpRBs9HNaBfajfaiZrQPzUcLUA7dglpRG5qBbkVdaBY6gHrRYXQ5ugLFUQItQkvRMjQHLUcr0PXoBrQS1aE1qAatRTeh9WgDug3NQ5tRA9qCUiiNpqKZKIl2oJ1oD8qiFrQQTUO1qB11oE60H3WjHnQQHUJH0FF0LNRA7ucms/fnppT+pRW5uaW0/uc5bbKWGFPLf2MtY7uW+6yW0VXLeKrlLqjlt1bLb62WO7KWOFlLNKrlDqklZtcy8mqJMbXEmFp+v7Xc17Xc12Vdia5Ci9BidDVagpaia9AytBxdi65DK9D16Aa0Eq1Cq9EatBbdiNahm9B6tAFtRJtQPdqMGtAW1Ii2om0ohdJoO5qKmlAG7UA70c1oF9qN9qAs2oua0T6UQ7egFtSK2lA76kCdaD/qQt2oBx1AB9Eh1IsOoyPoKDqG+tCt6LZQA7k/S6iMEyrjhMo4oTJOqIwTKuOEyjihMk6ojBMq44TKOKEyTqiMEyrjhMo4oTJOqIwTKuOEyjihMk6ojBMq44TKOKEyTqiMEyrjhMo4oTJOqIwTKuOEyjihMk6ojBMq44TKOKEyTqiMEyrjhMo4oTJOqIwTKuOEyjihMk6ojBMq44TKOKEyTqiMEyrjhMo4oTJOqIwTKuOEyjihMk6ojBMq44TKOKEyTqiMEyrjhMo4oTJOqIwTKuOEyjihMk6ojBMq44TKOKEyTqiMEyrjhMo4oTJOqIwTKuOEyjihMk6ojBMq44TKOKEyTqiMEyrjhMo4oTJOqIwTKuOEyjihMk6ojBMq4+VQ+ecmjtlpPjP0edXxE2pKn5TrFX9+8qXng5eO8tLR8kv/grvx0Z77jVOGgqc+J3bjo6c/N0ZfiTbsF0cX4dsJLbqYAZcf9vzfS9/0jmh7JDZU3kLaVMqMPy0VUpJRoWIzNfrJrZTo/Yb+LPX3yY2g/634jT4YKu8LzPvyB8O/1vPgY6V/XX/xu71Z/tc3/72hcgXnulJB/f8ofj3XFf0bt1VG+15/sfT66D3qruXfPLmL8BV/6+RW2OROw+Q2yeR/cvTf87tV4X/y5PZPtNX1r6uGgg2GyZ/G5HbY5H/85O7XFze9vriDMrFxMpA7d2lb7w98Wy/aJjoV/RWX9ve+dHR+Y/f3vta23i98+dEWuX1RTNk18Z++5EujXO5I9KLEDxDefnGiE78UvP7Pybv7b1SW7+7cX/3ykzO+eHt/xe38xTD0xdv369y2k7fn5O04eRtO3n2TP8jJu2/yppu8oSZvn69z10zeLF+8ESZ/npOjfXKQT45kBvA//fLw+sUB/BXj9nsarpOj9CvG5OdD8ZdKv/7Hin4n+sLEjm4/O7r97Oj2s6Pbz45uPzu6/ezo9rOj288ebj97uP3s4fazh9vPHm4/e7j97OH2s2vbz65tP7u2/eza9rNr28+ubT+7tv3s2vaza9vPrm0/u7b97Nr2s2vbz65tP7u2/eza9rNr28+ubT+7tv3s2vaza9vPrm0/u7b97Lr3sxfbz45nPzuQ/ezM9rMX28/uaz8pZz/7wv3sxfazG9rPbmg/u6H97Nr2s2vbz15sPzul/ewE97Mr3c+udD/70P3sPPez19zPLnE/+8L97AT3sxPcX06+/9LFPLn8ye/ww/oOv4CLTSB/mV6P346Fy6CyvoXuR/eh4yiPGtAD6EH0EHoYTUUz0Qn0CDqJHkV3oiVoF9qDHkND6HH0BHoS3YHuQqvQU6gLPY260Sm0Fj2DnkXPoefRC+hF9BLagKrQy2gziqFKVI1WojpUg15Bp9Gr6DX0OhpGb6A30VvobVRA76B30XvofVSBPkDTUS1qR3eje9C9aAANojPodvQh+gh9jD5BI2gKGkXT0AyUQEk0C81Hs9E8NBfNQQtDDeT+yve/HP4RLYO/Th79vS97vyLP/uJydzLh/mH1rE7m4pPZ+WS+/nXWtF9M3Ivr/1wy+uOTS9mvWMF+TwvXP9x0/4e/Ov2rF3OIiubG8phqPlIeF823FT/+2+LHnx6KMoeK5ruHoiyhovn+4sd/V/z48FCUQ1Q0PzYU5RkVzc8WP/774seXo297/uKyM/diLFp3Xij9LRP5x5nSnXYEdaBvoV3oPnQc5VEDegA9iB5CD6OpaCY6gR5BJ9Gj6E60BO1Bj6Eh9Dh6Aj2J7kB3oVXoKdSFnkbd6BRai55Bz6Ln0PPoBfQiegltQFXoZbQZxVAlqkYrUR2qQa+g0+hV9Bp6HQ2jN9Cb6C30Niqgd9C76D30PqpAH6DpqBa1o7vRPeheNIAG0Rl0O/oQfYQ+Rp+gETQFjaJpaAZKoCSaheaj2WgemovmoIWhBnJ/7UeaqfywM5Tvmpl8nYwkyjYe+fIS4GRG8g1JRL6igviTmG389dIgjTYPp0wMkLsmHvuNTVSAJ7ceB8MdxyiZuDJ4/vfz/cW/UfqmE2nBI6QFj5BcPEJyUdb96AjKowb0AHoQPYQeRlPRTHQCPYJOokfRnWgJ2oX2oMfQEHocPYGeRHegu9Aq9BTqQk+jbnQKrUXPoGfRc+h59AJ6Eb2ENqAq9DLajGKoElWjlagO1aBX0Gn0KnoNvY6G0RvoTfQWehsV0DvoXfQeeh9VoA/QdFSL2tHd6B50LxpAg+gMuh19iD5CH6NP0AiagkbRNDQDJVASzULz0Ww0D81Fc9DCUAO5vxkt5yaeX/+le6Il3f/FKXyp0ilgcZRAM1ESzUZz0Fw0Hy1AC9E0VItmoDpUg2ahy9C8UAO5v1X6gUw0Oq3jGLZ1HBC3jmP01nHwWlnfQp1oFUqhTWgFOhZqIPe3f3Lyxf9B4epk9JpL+eLQNzBf/GUOoxylDXaUNthR2mBHaQ8epel3lBbZUVpkR2mRHaVFdpQW2VFaZEdpkR2lIXiUhuBR2mdHaZ8dpX12lPbZUdpnR2mfHaV9dpT22VGaoUdpph2lmXaURulRWmtHaa0dpbV2lNbaUVprR2mbHqXRdpRG21EapUdpux2l7XaUtttR2m7Lmo62oEa0FW1DKZRG29FU1IRmoiTKoB1oJ7oZzUa70G60B2XRXtSM9qH5KIduQQtQC1qIWtE01IZqUTuagTpQJ9qPulA36kGz0AF0EB1CvegwOoKOomOhBnKfEQD3x8KQV9ZV6Gq0FC1B16BlaAVahVajNWgtWofWow1oI9qE6tFm1IC2oK0ohdJoO8qgHWgn2oOa0T60ALWhDrQfdaIu1IMOoEPoMDqCjqHF6Fp0I+oNNZD7lYvvQl3R3F76K8q7Sa8VPx4eipaUFc29Q1/YXcotiXrS/+jFd+FqvmPoi/tNbxQ/3jv08sTbdRWXoxXNx4eiBWxF87eGPt+PeqX48cGhaIFa0fzQ0Of7U68WPz4yFC1/K5ofHfp8v+qd4senhqIFdEXz00PRkrSi+dTQF/axigvXiubTQ9FytqL51aHPC0LHGX5lPYAeRA+hh9FUNBM9gk6iR9EutATtQY+hIfQ4egI9ie5CT6Eu9DTqRqfQWvQMehY9h55HL6AX0UtoA6pCL6MTaHOogdyvEqO7iNFdxOguYnQXMbqLX1wXMbqLGN1FjO4iRncRo7uI0V38kLuI0V3E6C5+PF3E6C5idBcxuosfTxc3SRcxuosY3UWM7iJGdxGju4jRXcToLmJ0F0O/ixjdRYzuIkZ3EaO7iNFdxOguYnQXQ7+LGN1FjO4iRncRo7uI0V3E6C5idBcxuosY3UWM7ioP019jmHYzTLsZpt0M026GaTfDtJth2s0w7WaYdjNMuxmm3QzTboZpN8O0m2HazTDtZph2M0y7GabdDNNuhmk3w7SbYdrNMO1mmHYzTLsZpt0M026GaTfDtJth2s0w7WaYdjNMuxmm3QzTboZpN8O0m2HazTDtZph2M0y7GabdDNNuhmk3w7SbYdrNMO0uD9Nf/8EfQJp8auz7acEaL37iLwz9QT2RVHr6rfnPD31Fj9Z/KX78uaEf9BGlqOrzF2NDP/CzShXF///poR/+o0q5o9EP4k8OfVmZ7I8Uv3J26Bvz7FJr8Z/zs0PBM0wTjyJOVt+++wN23+eTS9Hjhr8QG/rDKsP930wdh3lPmLIa0FVoC9qKUiiNtqMM2oGuRjvRUrQEXYOWoT2oGe1DC9AKdAS1oQ60H61CnWg16kJr0Fq0DvWg9Wgz2oAOoI3oENqEDqN6dCzUQO7vMNx6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6yFR6ypnK32UH9BTFylMU009R5DzF5sQpCpmnKNefYuPiFAXlUxSUT1GsPEXZ/RRF41NsTpxic+IURfhTFH9PUeA9RUm3rMvRFehKdBVahBajq9EStBRdg5ah5ehadB1aga5HN6CVaBVajdagtehGtA7dhNajDWgj2oTq0WbUgLagRrQVbUMplEbb0VTUhDJoB9qJbka70G60B2XRXtSM9qEcugW1oFbUhtpRB+pE+1EX6kY96AA6iA6hXnQYHUFH0THUh25Ft4UayP29UqicWUwoH5jyeZxqHg/CYhmzQ8wIURdiXoi5IeaEmB8iESIZYmGAgdz/U/q3TlQ7m0uR/wX0IroD3Ymq0BL0INqFVqEuNISmoudQNapEMbQS1aEaVIE+QNNRLWpHBXQ3ugcNoHvRIDqDbkefoBE0BY2iD9FH6ONQA7lx3s3lnwc/jzJqQ8RDzAhRF6ImRCLEzBDJELNCXBZidog5IeaGmBdifogFIRYGGMj9/UvHxvzEvxtEdIzNz0bf8NKxMUM/eM3l21+4o3LZLz/15Q/lqJb/Vrx4eaJj/wc4s+U/FW+c+8JRPTl0J0f15Ij94mCeHLqXFS/+l6ovHZ//sx3i8g849eE/s54u61vofnQfOo7yqAE9gB5ED6GH0VQ0E51Aj6CT6FF0J1qCdqE96DE0hB5HT6An0R3oLrQKPYW60NOoG51Ca9Ez6Fn0HHoevYBeRC+hDagKvYw2oxiqRNVoJapDNegVdBq9il5Dr6Nh9AZ6E72F3kYF9A56F72H3kcV6AM0HdWidnQ3ugfdiwbQIDqDbkcfoo/Qx+gTNIKmoFE0Dc1ACZREs9B8NBvNQ3PRHLQw1EDuH5ZC7MSP7pmq8EdeVgzdi+5Bg6EGcv8ofEqg+dvRK9pCXBViY4jOEKkQm0KsCHEsxOUhrgyxJcTWEOkQ20NkQuwIcXWInSGWhrgmxLIQzSEWhDgSoiPE/hCrQqwOsSbEuhA9IdaHuCzEoRD1AQZy/5hR8yyj5llGzbOMmmcZNc8yap4tj5p/cvEI1/Jf93vBRFfCQO43WH3+chBNyqgNEQ8xI0RdiJoQiRAzQyRDzApxWYjZIeaEmBtiXoj5IRaEWBji8hBXhLgyxFUhFoVYHOLqEEtCLA1xTYhlIZaHuDbEdSFWhLg+xA0hVoZYFWJ1iDUh1oa4McS6EDeFWB9iQ4iNITaFqA+xOURDiC0hGkNsDbEtRCpEOsT2EFNDNIXIhNgRYmeIm0PsCrE7xJ4Q2RB7QzSH2BciF+KWEC0hWkO0hWgP0RGiM8T+EF0hukP0hDgQ4mCIQyF6QxwOcSTE0RDHQvSFuDXEbQEGct/5sTx06fsvHn1jD1/6K8WL4e//YbZLhy8NfXWN55+WBvrCon8q+mf9o+JFIXrp/OLFz5c3Sipyr0UX/6J4cTB6TaJ48Ub0XZLFi4XRX7CyePEL0cW/Ll5sir40u3hxf3QxI/opR38qen/QJ6LXfKd48RvRl+ZGP9zoO88pXqws/Wt+M9zPbv40vGM/DVOAT8MU4NMwBfg0nOg/DSf6T8OJ/tMwbn4aTvSfhhP9p2F0/DSc9UuYFqI2xIwQdSFuDTErxGUhbgsxL8BA7p+VfkgT25PNNBw10/zUTPNTM209zTQANdOM1EyTTzNtPc00HDXTYtRcThX/+Y9zJT4qIc+K/vSlkvylA9y/KZX4f/HjfEd9/Rspuvfuu3RHXbqjfvR31L+kwXOYfrFh+sWG6RcbpnNumO64YXrJhuklG6aXbJhesmF6yYbpJRuml2yYzrlhOueG6TMbps9smD6zYfrMhukzG6bPbJg+s2H6zIbpExym62yYrrNhOhGH6UEbpgdtmB60YXrQhulBG6a/cJiOtGE60obpKBymP22Y/rRh+tOG6U8razraghrRVrQNpVAabUdTUROaiZIog3agnehmNBvtQrvRHpRFe1Ez2ofmoxy6BS1ALWghakXTUBuqRe1oBupAnWg/6kLdqAfNQgfQQXQI9aLD6Ag6io6FGsj9qx+rw3d+SIfufMXbs3zFFv+Xz+B3Rq/5/s7R+QmqL/zr0jB7vui/U/xC7trozYQWRK99unjxa9FrHylefBYbKmdefzu6iFKVvxZdPFu8eCu6yBcvno4uXipevBpdnIx+utHFU8WL56OLh4oXp6KLE8WLp6KLiU3zHNvPObafc2yo59jcz7H9nGOrP0cTQo6N/xwb8Tm23nNs/OdoUMixhZ5j2zrHlnaO7e4cW9o5trRzbGnn2ADOsQGcYwM4xwZwjg3gHJvRObaDc2wH59gAzrE5nGM7OMd2cI7t4BybvDk2eXNs8ubY5M2xjZxjGznHNnKuvOn6byaODE+V3qrq35beHDA18UO/P6pu5PbLLjj5S7+/XAn5dz+Ko80nm2QGYmGGUtYD6EH0EHoYTUUz0SPoJHoU3YmWoF1oD3oMDaHH0RPoSXQHugutQk+hLvQ06kan0Fr0DHoWPYeeRy+gF9FLaAOqQi+jE2gziqFKVI1WojpUgyrQB2g6qkXtqIDuRvege9EAGkRn0O3oQ/QR+hh9gkbQFDQaaiD371lmzim95Ap0JboKxVECLUKL0dVoCVqKrkHL0Bw0Fy1H16Lr0Ap0PboBrUSrUB1ajdagGrQW3YjWoZvQenQZ2oA2onloE6pHm1EDmo62oEa0FW1DKZRG29FU1IRmoiTKoB1oJ7oZzUa70G60B2XRXtSM9qH5KIduQQtQC1qIWtE01IZqUTuagTpQJ9qPulA36kGz0AF0EB1CvegwOoKOomOhBnL/4YfaQ/6fihd3hwvNXG+0oDgwZehH2VYeLcXWRBdfXHR+sfz8FYvOL/aVf533BP0h9ZXnVkU/qd/+nleU1cWLC5VDf8Ad5v/xJ2PD49I+x/8c+xzRxtXWL79JvikbHr/1tRs9ogaN+dHFFxs9oh6Q89GXokaPe6OLLzZ6fElbx38iC67m8JZqOhaq6Vio5riWao5rqea4lmqOa6nmuJZqjmup5riWaronqjmupZrjWqrpkKjmuJZqjmup5riWao5rqaZ7oprjWqrppajmuJZqujWqOa6lmspDNce1VNPJUc1xLdX0dVRzQEs1B7RUc0BLNQe0VHNASzUHtFRzQEs1B7RUc0BLNUeyVHMkS3W5lvKfv/YAjmbM+ujiHxcv1kcXtxUvvh39qb3FiynRcK0rXhyILv5ZFL+i0uSxaH78V9Eon1a8eCf62vTixd+NLv5J8eLvxb70luiLomb0mX9avNgWu3j/vB1d/Gbx4uXoIup9+iQ2VJ6L/nP0p/5VdP9Ef+vO6G+NRf/Gf1C8+E16p6KH1Y9EF/+8eNEQ3mS53dEfS0afaonCSuXFe/Oy6DPzovgS3om5KdGrl0dXfdFVzcQdvCy8TXN7oq+tjT717eJFc3Qx0az0p0q/gd/+ympWRfEPfRz9tf+jslb013wYvfC7vnXf79BK/reDJVEZtSHiIWaEqAtREyIRYmaIZIhZIS4LMTvEnBBzQ8wLMT/EghALQ1we4ooQV4a4KsSiEItDXB1iSYilIa4JsSzE8hDXhrguxIoQ14e4IcTKEKtCrA6xJsTaEDeGWBfiphDrQ2wIsTHEphD1ITaHaAixJURjiK0htoVIhUiH2B5iaoimEJkQO0LsDHFziF0hdofYEyIbYm+I5hD7QuRC3BKiJURriLYQ7SE6QnSG2B+iK0R3iJ4QB0IcDHEoRG+IwyGOhDga4liIvhC3hrgtwEDu/yX5iZP8xEl+4iQ/cZKfOMlPnOQnTvITJ/mJk/zESX7iJD9xkp84yU+c5CdO8hMn+YmT/MRJfuIkP3GSnzjJT5zkJ07yEyf5iZP8xEl+4iQ/cZKfOMlPnOQnTvITJ/mJk/zESX7iJD9xkp84yU+c5CdO8hMn+YmXk5//wiBKUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOUkdOluvI//VSQfBSQbD59xcEo7rbluiv+MZWBr+5BcH/r3RHDUb/DVFFYUV0+PXvDkV76xW5RdFL7y5eVEdfui5asT8VfZuB4sVvR/8190TfOPra9dEf+6XixQ3Rxa9G3/i/lb7xRBPAW6W7+Qx6ED2Ebkf3oYdRDN2JlqAhdD96HB1Bd6AP0Ur0ETqOVqE69BT6GD2NatAptBY9g55HL6AX0UtoA3oZDaITaDPKowY0HT2A7kZT0T1oJvoEVaJH0En0KNqF9qAR9Bi6F01BT6BR9CSqQLXoLtSB2lEBdaFu9CyqRgOoCn0LPYfeQnPRu+gV9Cp6A81Gb6L5aAaahU6j11ACDaM56G30DnoPzUNJ9DpaiKah90MN5H53shb+cOVQuRg9Y6LyvST6TDyqsVZFL/3/WTlWUn6opPxQSfmhkvJDJeWHSsoPlZQfKik/VFJ+qKT8UEn5oZLyQyXlh0rKD5WUHyopP1RSfqik/FBJ+aGS8kMl5YdKyg+VlB8qKT9UUn6opPxQSfmhkvJDJeWHSsoPlZQfKik/VFJ+qKT8UEn5oZLyQyXlh0rKD5WUHyopP1SWyw+/9xP0sECUpD4bfeaH/tTApYcFhr46Ja2oiobZUNHLo5dOTIu7SV12k7rsJlHbTSq4m0lrN4nhbhLR3Uz7u0nbdjOB7iYh2c2UuZukYzdJ6m6Sxt2kgrtJ8HaTBJT1AZqOalE7KqABdDe6F92DBtEZdDv6BI2gKWgUfYg+Qh+HGihGpEuFgEuFgB+bzqBvyPo/KpSsrxz60qgbqwp224uvCkPMeh6UXM/Dz+t5UHI9jwOv55Hf9TwmvZ7HV9fz+Op6Ho1cz0O+63lEdT2PQq/nUej1PPK7nkdN1/M46XoeIC3rcnQFuhJdhRahxehqtAQtRdegZWg5uhZdh1ag69ENaCVahVajNWgtuhGtQzeh9WgD2og2oXq0GTWgLagRbUXbUAql0XY0FTWhDNqBdqKb0S60G+1BWbQXNaN9KIduQS2oFbWhdtSBOtF+1IW6UQ86gA6iQ6gXHUZH0FF0DPWhW9FtoQZyVaVQGU3SFVEMvaM4Fy8aihLOitxQFF3/ePETS4sff6b4iScqh8oPEz5ZGf3RKf7R6I+cqQy+R/TKD37/93i/9EerS390cp6fmFJy+6K67K6JSWoJ88VE4pI7Er3or1cOBRPY5FT9xaRpckKdyHMGcjXFv32yv+FP3BM9GDm1KqwpjBAnR4iTI8TJEeaPEWaFEWLoCDF0hBg6QgwdIYaOEENHiKEjzBgjzBgjxNcR4usI8XWE+DpCfB0hvo4QX0eIryPMliNE2xGi7Qgz6Qixd4TYO0LsHSH2jhB7R5hXR4jEI0TiEWbSEeLyCHF5hLg8QlwuazraghrRVrQNpVAabUdTUROaiZIog3agnehmNBvtQrvRHpRFe1Ez2ofmoxy6BS1ALWghakXTUBuqRe1oBupAnWg/6kLdqAfNQgfQQXQI9aLD6Ag6io6FGshNI2XexPDexI9nEyFvEz+eTQSBTdzomwiOmxi0mxi0m/iBbOLW3sTA3EQA3EQA3MSNvokBtolBtIlhU9bl6Ap0JboKLUKL0dVoCVqKrkHL0HJ0LboOrUDXoxvQSrQKrUZr0Fp0I1qHbkLr0Qa0EW1C9WgzakBbUCPairahFEqj7WgqakIZtAPtRDejXWg32oOyaC9qRvtQDt2CWlArakPtqAN1ov2oC3WjHnQAHUSHUC86jI6go+gY6kO3ottCDeSmm/cWs9vc/FJWW/sDFfJyo9Fnfqwred/YM5d/rI9a/joluD/kbY541cVjZn5xSrSamnGpon2pot38o6potxZ/uj879D9LZfu/FC/yU776Rotq3Q9P4Y6rq/qRPjv4FU8Mlh8r/LnoX/oT+uzgz5XSgERV+JZx36Z96du0E32bJr2y7kPHUR41oAfQg+gh9DCaimaiE+gRdBI9iu5ES9AutAc9hobQ4+gJ9CS6A92FVqGnUBd6GnWjU2gtegY9i55Dz6MX0IvoJbQBVaGX0WYUQ5WoGq1EdagGvYJOo1fRa+h1NIzeQG+it9DbqIDeQe+i99D7qAJ9gKajWtSO7kb3oHvRABpEZ9Dt6EP0EfoYfYJG0BQ0iqahGSiBkmgWmo9mo3loLpqDFoYayM2kKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJWmKJUuF6WSpVA5EQT6CAJ93PZ93PZ93PZ93Oh9hK4+bu0+bu0+btE+btE+bsM+bsM+wmgft1oft1oft1ofU0Eft1Mft1MfP8g+bq4+bqA+bpk+bpk+bos+wn0fN0kfN0kfN0IfN0IfN0IfU0Eft0Uft0Uf00Qft0Uft0Uf02Afg6iPod/H5NbHYO9jQPcxoPuYlvqYlsqKowRahJaiZWgOWo5WoOvRDWglqkNrUA1ai25C69EGdBuahzajBrQFpVAaTUUzURLtQDvRHpRFLWghmoZqUTvqQJ1oP+pGPeggOoSOoKPoWKiB3Kwwq2z+rSCSlFEbIh5iRoi6EDUhEiFmhkiGmBXishCzQ8wJMTfEvBDzQywIsTDAQO6ycqm2/BOpjfLse3KzSz+RqH57bWUpjlc0ry9+/OmoGFTa2ZhDIl5D9K3ht1/DXV9DBKrhvqvhTqshPtQwnmsYzzXEqhpmkBoicw2xo4bZrIZ7soboW0OErWHk1xDxaoh4ZV2JrkKL0GJ0NVqClqJr0DK0HF2LrkMr0PXoBrQSrUKr0Rq0Ft2I1qGb0Hq0AW1Em1A92owa0BbUiLaibSiF0mg7moqaUAbtQDvRzWgX2o32oCzai5rRPpRDt6AW1IraUDvqQJ1oP+pC3agHHUAH0SHUiw6jI+goOob60K3otlADubnMLj8fzi4/H84uPx983zJmhKgLcWuIRIiZIZIhZoW4LMTsELeFmBNiboh5IVpC7A0xP8SCEAsDDOTmVZXfer0i90k04UyUJe9i+JRVEWogN/8H31ocL378jaFLW4yXthh/4h6a+cLW/eScUl2uuC4Is8Pp5exwYemW++Kp2V/Rax39tP5YZTgqJ/4Lyod2/7Oq8KaaHDOTd9XED3kgd/lEZ8GC0hvYXFH6txSKPhsGjvtKoaIStaOKUAO5K+n3buQZ8kaeIW/kGfJGniFv5BnyRp4hb+QZ8kaeIW/kGfJGniFv5BnyRp4hb+Sp8UaeGm/kOfFGnhNv5DnxRp4Tb+Q58UaeE2/kOfFGnhNv5DnxRp4Tb+Q58UaeDG/kyfBGngxv5MnwRp73buR570ae927kee9GnvduLD/vfVVVeITLwdJLzqAH0e0ohu5ES9AQugN9iFaij9AqVIc+RjXoBfQiGkTT0d1oKroHfYIq0S40gu5FU9AoehJVoFrUjgqoC1WjAVQVaiC3qDRQoh6FZ6JA+VvFiz8SGypPybfHhsrT+aGoWWFvFMlao0/1Fy/aoovoCZc/E138x+LFnovdgdGzL7nD0YvfL4a93K3R1Z+uKv37K5qvHZp8YGYgt7iKt+d6LPoX5dJyO5wcKY+V//VX05QwRlPCGE0JYzQljNGUMEZTwhhNCWM0JYzRlDBGU8IYTQljNCWM0ZQwRlPCGE0JYzQljNGUMEZTwhhNCWM0JYzRlDBGU8IYTQljNCWM0ZQwRlPCGE0JYzQljNGUMEZTwhhNCWM0JYzRlDBGU8IYTQljNCWM0ZQwRlPCGE0JYzQljNGUMEZTwhhNCWM0JYzRlDBGU8IYTQljNCWM0ZQwRlPCGE0JYzQljNGUMEZTwhhNCWM0JYzRlDBGU8IYTQljNCWM0ZQwRlPCGE0JYzQljNGUMEZTwhhNCWM0JYzRlDBGU8IYTQljNCWM0ZQwRlPCGE0JYzQljNGUMEZTwhhNCWM0JYzRlDBGU8IYTQljNCWM0ZQwRlPCGE0JYzQljNGUMEZTwhhNCWM0JYzRlDBGU8IYTQljNCWM0ZQwRlPCWDlFXvLFCeLVUpF0adUrsYrKiuh/Ya7RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RywzSS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS67RS65R1nOhBopr7HDuXkbuXda30P3oPnQc5VEDegA9iB5CD6OpaCY6gR5BJ9Gj6E60BO1Ce9BjaAg9jp5AT6I70F1oFXoKdaGnUTc6hdaiZ9Cz6Dn0PHoBvYheQhtQFXoZbUYxVImq0UpUh2rQK+g0ehW9hl5Hw+gN9CZ6C72NCugd9C56D72PKtAHaDqqRe3obnQPuhcNoEF0Bt2OPkQfoY/RJ2gETUGjaBqagRIoiWah+Wg2mofmojloYaiB4ocoxE6EyidY5jzBYukJFktPsFgq6wjKowb0AHoQPYQeRlPRTHQCPYJOokfRnWgJ2oX2oMfQEHocPYGeRHegu9Aq9BTqQk+jbnQKrUXPoGfRc+h59AJ6Eb2ENqAq9DLajGKoElWjlagO1aBX0Gn0KnoNvY6G0RvoTfQWehsV0DvoXfQeeh9VoA/QdFSL2tHd6B50LxpAg+gMuh19iD5CH6NP0AiagkbRNDQDJVASzULz0Ww0D81Fc9DCUAO55d//Bt2PaEPu62zEXXrWtfn3P+v6/T3iGu3AXfX9P+v6zX3E9dpoIyraBDtTFW1EXVca5hPzWT3zZz3zWT3zbj0xvZ54X89cUE+Eryf61xPv64mO9UTHeqJjPdGxnuhYT6SuJwLWEx3riZz1RNV6YmU9kayemFdPHK0njtYTD+uJgPXE2HpibD0xtr4ckVaUflXRvfg+g2VyzEbx5rIpQ5+ndOdIBc+RCp4jFSzrPnQcVaM8akAPoAfRQ+hhNBXNRCfQI+gkehTdiZagXWgPegwNocfRE+hJdAe6C61CT6Eu9DTqRqfQWvQMehY9h55HL6AX0UtoA6pCL6PNKIYq0UpUh2rQK+g0ehW9hl5Hw+gN9CZ6C72NCugd9C56D72PKtAHaDqqRe1oCrob3YPuRQNoEJ1Bt6MP0UfoY/QJGkGjaBqagRIoiWah+Wg2mofmojloYaiBYooXljfPE2LPE2LPE2LPE2LPE2LPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TPE1TLqkYrUR2qQa+g0+hV9Bp6HQ2jN9Cb6C30Niqgd9C76D30PqpAH6DpqBa1o7vRPeheNIAG0Rl0O/oQfYQ+Rp+gETQFjaJpaAZKoCSaheaj2WgemovmoIWhBnI3THTqNQ8OvZxbGjWa3FoZDIGfLf2hI6gDfQvdj+5Dx0MN5FZe7Ogtf/I3ebbjN8s9d6smm37PV33+1ebzpS+utmwQnXjyS9GrLp0ddKmxd+hSY+/3UbBYU7qjJmLzkzyl9ST9sk9yt5b1ylfc+h3fPRD8vlBzGr2K3kGvoXfRe6gavY6G0RtfEdreRG+ht9H7XxESDaW7wp/gQG5tqZtvRxTwtke/o5uKF+vKka8i11P6Hd0YFZUi/lLp3LR1pT8xL/oTL1RejFt/eSLSvFN1MX68UnUxTr0VtRMujl79NwluE2EhNz/62t+aKHGUQuEXqh+5BdGLfjm6WhhdfRZdXR5d/Up0dUV09atVF0fWr0Wfuir61K9XlYNDc0XxM4uid0qMlUNC6aSk4j3ZXF38wtXRF2qKn/jF4sep5QjRPD36L79pcjL4i1Mu/kh+pfQjWX9xmVDR3Fj+D28+Ug6PzbcVP/7b4sefLv0aKprvLg2+iub7ix//XfHjw6WBWtH8WOmXXdH8bPHjvy9+fHno8yXCIEuEQZYIgywRBlkiDLJEGGSJMMgSYZBFwSCLgkEWBYMsCgZZFAwyoAZZFAyyKBhkUTDIomCQRcEgi4JBFgWDLAoGWRQMsigYZFEwyKJgkEXBIIuCQRYFgywKBlkUDLIoGGRRMMiiYJBFwSCLgkEWBYMsCgZZFJR1Am1GMVSJqtFKVIdqUAX6AE1HtagdFdDd6B50LxpAg+gMuh19iD5CH6NP0AiagkZDDeQ2lALAxBOhWZpHsuVt/I1fc49p8r1cv3uyWHor2Oa/MvS9ZI2T7wxbHBgVzb9e/MTG6BN/d+ir8sn/UPzEd4b+8PPKRPHj7w19b/nl52+lO/EOul+VcU68k+7nqWd0qN4/JAedeJPe7zMZnXzX3u8pK40WFb8bfeYbkp5Ovi/xT3SeuukP9LDY6OHPWV95o/5h36CXFn4/+J31E31D1fNs41mOqDjLERVnOaLiLEd3nOVAjrMcX3GW4yvOcnzFWY6vOMvxFWc5vuIsx1ec5bCOsxzWcZajLc5ytMVZjrY4y9EWZzna4ixHW5zlaIuzHG1xloNKznLQxVkOujjL0vksx16c5diLsxx7cZZjL85y7EVZl6ENaCOahzaherQZNaDpaAtqRFvRNpRCabQdTUVNaCZKogzagXaim9FstAvtRntQFu1FzWgfmo9y6Ba0ALWghagVTUNtqBa1oxmoA3Wi/agLdaMeNAsdQAfRIdSLDqMj6Cg6Fmogt5nTipYzvJfz41lOyFvOj2c5QWA5N/pyguNyBu1yBu1yfiDLubWXMzCXEwCXEwCXc6MvZ4AtZxAtZ9iUdTm6Al2JrkKL0GJ0NVqClqJr0DK0HF2LrkMr0PXoBrQSrUKr0Rq0Ft2I1qGb0Hq0AW1Em1A92owa0BbUiLaibSiF0mg7moqaUAbtQDvRzWgX2o32oCzai5rRPpRDt6AW1IraUDvqQJ1oP+pC3agHHUAH0SHUiw6jI+goOob60K3otlADuYaoAH1HMXX8diwqQG/5noqv0TEcnVHu+b1WYY9T8zpOTfY4FbDjVGiPU6E9ToX2OBXa41Roj1OhPU4V7zj12uPUa49Trz1OhfY4FdrjVGiPU6E9ToX2OBXa41Roj1OhPU717zgV2uNUaI9ToT1OhfY4FdrjVCKPU689Tr32OPXa49Rrj1OvPU699jj12uPUa49Trz1OvfY49drj1GuPU689Tr32OPXa4+UaYuPFAw3Ln1zAL3wBA2wBP+QF/HgWMEwX8CNfUP6LtrLJ1sTzXU2ULpvKpctt4T55838LxlAJA7nUxIE3zaU+43Tp9RfjXvPfD8JXGVeF2BiiM0QqxKYQK0IcC3F5iCtDbAmxNUQ6xPYQmRA7QlwdYmeIpSGuCbEsRHOIBSGOhOgIsT/EqhCrQ6wJsS5ET4j1IS4LcShEfYCB3HaObK4jAasj5aoj5aoj5aojyaojbawjraojraojPaojPaojBaojBaojha0jzakjzakjzakjDa8jlakjlaljEqsjsakjeakjXakjXakjJakj1a4jQakjQakjCakjCakjCakjDa8jJakjJakjRa8jJakjJaljCVLHBF5H2lHHwqKORKOOZKKOZKKOJUEdS4Ky4iiBFqGlaBmag5ajFeh6dANaierQGlSD1qKb0Hq0Ad2G5qHNqAFtQSmURlPRTJREO9BOtAdlUQtaiKahWtSOOlAn2o+6UQ86iA6hI+goOhZqoDh5RqEyahL4pGooeE+qybeSit6jaWv0peh9o3ZVRX8mU/ozE9us/7D0bStRDFWhKaga1aCpoQZyO34k/QsT93kDT1g38Ex1A09KN/D0dQNP5DfwFHUDT1E38BR1A89iN3DWQwPPcDfwvHVDOdvZOflWmVdWls+uqsgtjq5Spauq8Hirv1TOqG5mVkwwKyaYFRPMiglmxQSzYoJZMcGsmGBWTDArJpgVE8yKCWbFBLNiglkxwayYYFZMMCsmmBUTzIoJZsUEs2KCWTHBrJhgVkwwKyaYFRPMiglmxQSzYoJZMcGsmGBWTDArJpgVE8yKCWbFBLNiglkxwayYYFZMMCsmmBUTzIoJZsUEs2KCWTHBrJhgVkwwKyaYFRPMiglmxQSzYoJZMcGsmGBWTDArJpgVE8yKCUJVglkxwayYYFZMMCsmmBUTzIoJZsUEs2KCWTHBrJhgVkwQRBPMiglmxQSzYoJZMcGsmGBWTDArJpgVE8yKCWbFBLNiglkxwayYYFZMMCsmmBUTzIoJZsUEs2KCWTHBrJgoTzW7WHxmWHxmWHxmyuF4d+kPjBbnlHlDUU9ORW5dacdwDwXzvcSkvfxM9nIv7OW+3Mto3Mv428tds5ff8l5+y3u5g/cSV/cSr/ZyR+0lxu9lpO4lJu0l7uxlPOwlDuwlDpR1JboKLUKL0dVoCVqKrkHL0HJ0LboOrUDXoxvQSrQKrUZr0Fp0I1qHbkLr0Qa0EW1C9WgzakBbUCPairahFEqj7WgqakIZtAPtRDejXWg32oOyaC9qRvtQDt2CWlArakPtqAN1ov2oC3WjHnQAHUSHUC86jI6go+gY6kO3ottCDeSyE+W5F0rlub30WsyLhfGirCvRVSiOEmgRWoyuRkvQUnQNWobmoLloOboWXYdWoOvRDWglWoXq0Gq0BtWgtehGtA7dhNajy9AGtBHNQ5tQPdqMGtB0tAU1oq1oG0qhNNqOpqImNBMlUQbtQDvRzWg22oV2oz0oi/aiZrQPzUc5dAtagFrQQtSKpqE2VIva0QzUgTrRftSFulEPmoUOoIPoEOpFh9ERdBQdCzWQayZ1zJI6Zkkds6SOWVLHLKljltQxS+qYJXXMkjpmSR2zpI5ZUscsqWOW1DFL6pgldcySOmZJHbOkjllSxyypY5bUMUvqmCV1zJI6Zkkds6SOWVLHLKljltQxS+qYJXXMkjpmSR2zpI5ZUscsqWOW1DFL6pgldcySOmZJHbOkjllSxyypY5bUMUvqmCV1zJI6Zkkds6SOWVLHLKljltQxS+qYJXXMkjpmSR2zpI5ZUscsqWOW1DFL6pgldcySOmZJHbOkjllSxyypY5bUMUvqmCV1zJI6Zkkds6SOWVLHLKljltQxS+qYJXXMkjpmSR2zpI5ZUscsqWOW1DFL6pgldcySOmZJHbOkjllSxyypY7acOu4rhcqJX+N9nNp7H6f93sdpv/dxom9Zq9H9aAE6gqpRHjWgB9CD6CH0MJqKZqJH0En0KLoTLUG70B70GBpCj6Mn0JPoDnQXWoWeQl3oadSNTqG16Bn0LHoOPY9eQC+il9AGVIVeRifQZhRDlWglqkM16BV0Gr2KXkOvo2H0BnoTvYXeRgX0DnoXvYfeRxXoAzQd1aJ2NAXdje5B96IBNIjOoNvRh+gj9DH6BI2gUTQNzUAJlESz0Gw0D81Fc9B8tDDUQC7HNtMFMrIL5GAXyMEukINdIOu6QB55gTzrAnnWBfKlC+RLF8iJLpATXSCnvUDec4G85wJ5zwXy8gvkNhfIbS6Q21wgf7lAxnKBjOUCWckFsu0L5CgXyFEukIdcIA+5QB5ygUz8AlnJBbKSC2TpF8hKLpCVXGAVcoFc4wKriQtkFxfIIC6QQVxgHXCBdUBZcZRAi9BStAzNQcvRCnQ9ugGtRHVoDapBa9FNaD3agOahzagBbUEplEZT0UyURDvQTrQHZVELWoimoVrUjjpQJ9qPulEPOogOoSPoKDoWaiB3C8exfUp9oqxvofvRfeg4yqMG9AB6ED2EHkZT0Ux0Aj2CTqJH0Z1oCdqF9qDH0BB6HD2BnkR3oLvQKvQU6kJPo250Cq1Fz6Bn0XPoefQCehG9hDagKvQy2oxiqBJVo5WoDtWgV9Bp9Cp6Db2OhtEb6E30FnobFdA76F30HnofVaAP0HRUi9rR3egedC8aQIPoDLodfYg+Qh+jT9AImoJG0TQ0AyVQEs1C89FsNA/NRXPQwlADuZbwzVRros/dk2tlw2hPKTW9Al2JrkK3ozhKoEVoMbo6VK6hki8uQUvRNWgZmoPmouXoWnQdWoGuRzeglWgVqkOr0RpUg9aiG9E6dBNajy5DG9BGNI9fxBZ/EZtQPdqMGtB0tAU1oq1oG0qhNNqOpqImNBMlUQbtQDvRzWg22oV2oz0oi/aiZrQPzUc5dAtagFrQQtSKpqE2VIva0QzUgTrRftSFulEPmoUOoIPoEOpFh9ERdBQdCzWQa7v4GE9FMUgNvVw6Lez1UsNSO1H0F1hjlXUlugrFUQItQovR1WgJWoquQcvQHDQXLUfXouvQCnQ9ugGtRKtQHVqN1qAatBbdiNahm9B6dBnagDaieWgTqkebUQOajragRrQVbUMplEbb0VTUhGaiJMqgHWgnuhnNRrvQbrQHZdFe1Iz2ofkoh25BC1ALWoha0TTUhmpRO5qBOlAn2o+6UDfqQbPQAXQQHUK96DA6go6iY6EGch2lADhxitbkIWalg8hyPzMlPLJr8pSpybO7Jk/Pmjipa/KctMmTzQZynRcfuSj9tc0Xwt/+RuapjeSpG0lzNjIXbSSz2EiWs5H0byOzwcbybLCfVoN93NL7GBL7CPP7GBL7CHz7CG77mBD2caPu40bdxyDYRzjbx824j6C/j6C/j+C2j5tqHzfOPm6Vsi5HV6Ar0VVoEVqMrkZL0FJ0DVqGlqNr0XVoBboe3YBWolVoNVqD1qIb0Tp0E1qPNqCNaBOqR5tRA9qCGtFWtA2lUBptR1NRE8qgHWgnuhntQrvRHpRFe1Ez2ody6BbUglpRG2pHHagT7UddqBv1oAPoIDqEetFhdAQdRcdQH7oV3RZqINc1+dxVRRT5pxQv/kh0WtgfL17sL2XQ3aWjhhui6WJfNANsja7+6JQgrJwjrJwjrJwjrJwj3J4jiJ4j5Jwj5Jwj5Jwj5Jwj5Jwj5Jwj5JwjwJ4jwJ4jHJ0jHJ0jHJ0jHJ0jHJ0jHJ0jHJ0jHJ1jcjlHcDpHcDrHxHOOUHWOUHWOUHWOUHWOUHWOaegcgescgescE885wtg5wtg5wtg5wlhZ09EW1Ii2om0ohdJoO5qKmtBMlEQZtAPtRDej2WgX2o32oCzai5rRPjQf5dAtaAFqQQtRK5qG2lAtakczUAfqRPtRF+pGPWgWOoAOokOoFx1GR9BRdCzUQK6HY0PmswMxn9r6fGrr89lzmE9Nfj47OvPLleED1C8KRNoCkbZApC0QaQtE2gKRtkCkLRBpC0TaApG2QKQtEGkLRNoCkbZApC0QaQtE2gKRtkCkLRBpC0TaApG2QKQtEGkLRNoCkbZApC0QaQtE2gKRtkCkLRBpC0TaApG2QKQtEGkLRNoCkbZApC0QaQtE2gKRtkCkLRBpC0TaApG2QKQtEGkLRNoCkbZApC0QaQtE2gKRtkCkLRBpC0TaApG2QKQtEGkLRNoCkbZApC0QaQtE2gKRtkCkLRBpC0TaApG2QKQtEGkLRNoCkbZApC0QaQtE2gKRtkCkLRBpC0TaApG2QKQtEGkLRNoCkbZApC0QaQtE2gKRtlCOtAdLAXAiRp5mH/E0vQGn6Q04zR7jaXoRTtM3cJrd5NPs+J9mx/80+/in6XY4za7+aZ6OOM0+/mn2O0+zQ32a3c/T9EycZn44zV72afb/T7Nrepr9/9PMQKfZ/z/N/v9p9v9Ps8d/mj3+0+zxn2aP/zR7/KfZ1T/NHvFpejROs+NfVh41oOnoAXQ3moruQTPRJ6gSPYJOokfRLrQHjaDH0L1oCnoCjaInUQWqRXehDtSOCqgLdaNnUTUaQFXoW+g59Baai95Fr6BX0RtoNnoTzUcz0Cx0Gr2GEmgYzUFvo3fQe2geSqLX0UI0Db0faiB3KOw+qCp3H/SWwu5EwDxJIDrJcDnJr+8kQfEkYfAkN/FJbuKT3LYnCewnCewnCd4n/zt79x4Yd3nn9973W+QbtseWItDMiGE0lrGjYMAewt02A2YYMIzN1ZAgbXZdaFmDrOBACBjE1QbGXMzVXA0CV5J1WannSN3tRT6WlDRt0k27arenzWl229OedttuT7u9nB79NFh5XjXLkizJksbJH/zeY9kjjeb3+X6+n+c7z8MtvYebeA+Csofbdg+37R5u2z2UgD2UgD3c0nu4pfdwE++hWOyhPOzhJt7DbbuHYrGHG3UPJWAPor+HW3MPor+HG3UPor8H0d+D6O/hlt7DrbmHgrCHgrCHgrCHgrCHgrAHKdhDedhDCSjTNGgqNBOqh+ZDs6DnoRegF6ED0EvQy9Ar0KvQa9Dr0EHoDehN6C3obWgK9A40F5oHbYF2QndD90DN0C7oXWgHdAh6D3ofaoM+gGZAH0JzoApoAbQIWgwth5ZAMWgZtBSqDKk5fwtztb+FqP4WovpbiGqZvgHdC90HrYfuh74FPQB9G5oNLYQehB6C9kAPQ3dCCWgTlIMegVqhR6HHoMehO6C7oFXQE9BW6EloG/QUtAbaC+2DnoaegZ6FStB+aC00HXoOWgdNg6ZCM6F6aD40C3oeegF6EToAvQS9DL0CvQq9Br0OHYTegN6E3oLehqZA70BzoXnQFmgndDd0D9QM7YLehXZAh6D3oPehNugDaAb0ITQHqoAWQIugxdByaAkUg5ZBS6HKkJrz23+hJ0Z9xidFRQdQVbeePDHq5IlRn58To2494fDtzZlfuhvr5A118ob6vNxQt9EEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdNMEdJebgK8yQtHOCEU7IxTtjFC0M0LRzghFOyMU7YxQtDNC0c4IRTsjFO2MULQzQtHOCEU7IxTtjFC0M0LRzghFOyMU7YxQtDNC0c4IRTsjFO2MULQzQtHOCEU7IxTtjFC0M0LRzghFOyMU7YxQtDNC0c4IRTsjFO2MULQzQtHOCEU7IxTtjFC0M0LRzghFOyMU7YxQtDNC0c4IRTsjFO2MULQzQtHOCEU7IxTtjFC0M0LRzghFOyMU7YxQtDNC0c4IRTsjFO2MULQzQtHOCEU7IxTtjFC0M0LRzghFOyMU7YxQtDNC0c4IRTsjFO2MULQzQtHOCEU7IxTtjFC0M0LRzghFOyMU7YxQtDNC0c4IRTsjFO2MULQzQtHOCEU7IxTtjFC0M0LRzghFOyMU7eURiq+FJ0nl/zO39n8uf8nt0RJg1L39aOJ0t8YTcpP8H01v/XT93Sf0c/9t/OKPp7cGDd0nNHKfpoGbbNQmG7PJhmyyD5vszCb7sMn2a7K1muyoPk0jNdk/ndgbTXZCkw3QZN8z2dzQ0/x4euun62k+oZX5qTqYycblE9qUn3QnTdHbIvodrZh4W/yaw+LRjPgLU6Ov+/rEjPgFx99iD018SvlC8SJw8g34UPkjO7/+0Xt0yubXWyNfNWXzm+N/5+rogaejP/8NPtKzAolewS2+grK9glt8BYVsBcVqBQV+BcK7AuFdwU29gvK0AnFdQRFfQRFfQbFagUiuQAhXIH1lqoK+CFVDp0KnQTVQHEpASagWOh1KQWdAaagOykAroXpoFXQmtBpaA30JaoC+DJ0FrYXOhs6BzoXWQeuhLHQe9BXofOgC6ELoImg2dDF0CXQptAHaCG2CLoNy0OXQFdBm6EooD10FFaCroWugLdC10HVQEdoKbYOuh26AboRugm6GboG2Q7dCt0Ffhb4G3R5Sc34HUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyi1RmkcosUplFKrNIZRapzCKVWaQyW5bKv3TcdeYPRcZ32vjFP54wtHewA3PLhGP9BnQttBu6FzoT+ia0AtoOzYTug9ZD90Pfgh6Avg3NhhZCD0F7oIehO6EEtAnKQY9ArdCj0GPQ49Ad0F3QKugJaCv0JLQNegpaA+2F9kFPQ89Az0IlaD+0FpoOPQc9CK2DpkFToXpoPjQLeh56AXoROgC9BL0MvQK9Cr0GvQ4dhN6A3oTegt6GpkDvQHOhedAWaAa0E7obugdqhnZB70I7oEPQe9D7UBv0AfQhNAeqgBZAi6DF0BIoBi2DlkLLocqQmvN38hGg/ax27GcFcz8rmPtZCdnPiul+Vjf3s+a1n3XJ/axL7me1cT9rsvtZeyzTdugO6BBUD70H3QutguZDT0DvQ09Cs6CnoDXQXugZ6FmoBO2H1kLPQbugB6F10H3QemgudD+0E5oN3Q0thNqgqdBD0B7oYWgTlIM+gB6B7oFmQI9BH0KPQ1OgedBd0LXQFuggtBXaBu2DZkLN0HRoN/Q09Bq0DHoTeh56EXoFWgK9Ci2HKqDF0AvQAWgB9DK0FHodegN6C4pBi6CXoEpoDvR2SM35v0xmkCMzyJEZ5MgMcmQGOTKDHJlBjswgR2aQIzPIkRnkyAxyZAY5MoMcmUGOzCBHZpAjM8iRGeTIDHJkBjkygxyZQY7MIEdmkCMzyJEZ5MgMcmQGOTKDHJlBjswgR2aQIzPIkRnkyAxyZAY5MoMcmUGOzCBHZpAjM8iRGeTIDHJkBjkygxyZQY7MIEdmkCMzyJEZ5MgMcmQGOTKDHJlBjswgR2aQIzPIkRnkyAxyZAY5MoMcmUGOzCBHZpAjM8iRGeTIDHJkBjkygxyZQY7MIEdmkCMzyJEZ5MgMcmQGOTKDHJlBjswgR2aQIzPIkRnkyAxyZAY5MoMcmUGOzCBHZpAjM8iRGeTIDHJkBjkyg1w5M/grTOwdpW4epY4dxR0exX8exdcdxdscxdscxc0cxe8exe8exdMexekcxdscxWcdxc0cxc0cxc0cxRkfxRkfxekcxekcxdscxUMfxTUfxdscxc0cxUMfxb8cxRkfxQsfxbEcxQsfxb8cxQsfxQsfxQsfxekcxbEcxScfxScfxScfxScfxScfxSEdxTUfxRmXaRo0FZoJ1UPzoVnQ89AL0IvQAegl6GXoFehV6DXodegg9Ab0JvQW9DY0BXoHmgvNg7ZAO6G7oXugZmgX9C60AzoEvQe9D7VBH0AzoA+hOVAFtABaBC2GlkNLoBi0DFoKVYbUnL+LgZUf8cb8EW/aH/GG/lH5r//mxF+f3KhwIlLYAJ0KZaFV0LVQLXQmtBpaAW0PqTm/c+IbPP52ewx/Xaap0CxoU0jN+bux7lVY9yr+6SqsexXWvQrrXsXTVmHdq7DuVVj3Kqx7Fda9CutehXWvwrpXYd2rsO5VWPcqrHsV1r0K616Fda/Culdh3auw7lVY9yqsexXWvQrrXoV1r8K6V2Hdq7DuVVj3Kqx7Fda9CutehXWvwrpXYd2rsO5VWPcqrHsV1r0K616Fda/Culdh3auw7lVY9yqsexXWvQrrXoV1r8K6V2Hdq7DuVVj3Kqx7Fda9CutehXWvwrpXYd2ruCmrsO5VWPcqrHsV1r0K616Fda/Culdh3auw7lVY9yqsexXWvQrrXoV1r8K6V2Hdq7DuVVj3Kqx7Fda9CutehXWvwrpXYd2rsO5VWPcqrHsV1r0K615Vlsp7TlzuWzIx59aMp69D+etY4KtjEa+OhcE6Fv/qWLarY9mujmW7Opbt6li2q2PZro5luzqW7epYBKpjEa+ORbw6FvHqWMSrYxGvjkW8Ohbx6ljEq2MRr45FvDoW8epYxKtjEa+ORbw66nEdi3h1LOLVsYhXxyJeHYt4dSzi1bGIV8ciXh2LeHUs4tWxiFfHIl4di3h1LOLVsYhXxyJeHct2dSzb1bFsV6aZUD00H5oFPQ+9AL0IHYBegl6GXoFehV6DXocOQm9Ab0JvQW9DU6B3oLnQPGgLtBO6G7oHaoZ2Qe9CO6BD0HvQ+1Ab9AE0A/oQmgNVQAugRdBiaDm0BIpBy6ClUGVIzfldH/9R/EiMr5vR+vP66HB+YTRBXGw9+Rniz9VniMcr7+YbW/+iP0scfXr9ptb/9T5T3EJHuJeOcC8d4V4c1F46wr10hHtxV3vpCPfSEe6lI9xLR7iXjnAvHeFeHNte+sO99Id76Q/34oD34qr30jvupXfcS++4t+wQvzHx0h23I7+OtS/TndCqkJrz9/LK1/DK1/DK19CL1/DK1/DK19CL1/DK1/DK1/DK1/DK1/DK1/DK1/Ba1/Ba1/Ba1/B61vB61vB61tCL19CL19CL19CL19CL19CL19CL19CL19CL19CL19CL19CL19CL19CL19CL19CL19CL19CL1/DWqKEXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr6EXr+GGraEXr6EXr6EXr0E1aujFa+jFa+jFa+jFa1CiGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGnrxGipJDdWiBmWvKUvl7o8+Wrb5zOiTZd+cPL/vj6JatmP8YktUW39j/OKBadHX3xd9/axx/O0Z0V+4H6WtRmmrUdpqlLYapa1GaatR2mqUthqlrUZpq1HaapS2GqWtRmmrUdpqlLYapa1GaatR2mqUthqlrUZpq1HaapS2GqWtRmmrUdpqlLYapa1GaatR2mqUthqlrUZpq1HaapS2GqWtRmmrUdpqlLYapa1GaatR2mqUthqlrUZpq1HaapS2GqWtRmmrUdpqlLYapa1GaatR2mqUthqlrUZpq1HaapS2GqWtRmmrUdpqlLYapa1GaatR2mqUthqlrUZpq1HaapS2GqWtRmmrUdpqlLYapa1GaatR2mqUthqlrUZpq1HaapS2GqWtRmmrUdpqlLYapa1GaatR2mqUthqlrUZpq8tK+63J1DM+Y+J3NiX/yESf8MCJn/K+/NO24p/Qen9WH+6OPi3+3Gf5Ke/JDney+f3j8frzYWvQ4J7Y+052uqeMXzT+anzs+9t0Qb/GrV6mO6FVITWP/6rDNL2LCZkuJmS6mJDpYkKmiwmZLiZkupiQ6WJCposJmS4mZLqYkOliQqaLCZkuJmS6mJDpYkKmiwmZLiZkupiQ6WJCposJmS4mZLqYkOliQqaLCZkuJmS6mJDpYkKmiwmZLiZkupiQ6WJCposJmS4mZLqYkOliQqaLCZkuJmS6mJDpYkKmiwmZLiZkupiQ6WJCposJmS4mZLqYkOliQqaLCZkuBgq6GDboYhChiwmZLiZkupiQ6WJCposJmS4mZLqYkOliQqaLCZkuJmS6mJDpYkKmiwmZLiZkupiQ6WJCposJmS4mZLqYkOliQqaLCZkuJmS6mJDpYkKmiwmZLiZkupiQ6WJCposJmS4mZLqYkOliQqaLCZkuJmS6mJDpYkKmiwmZLiZkupiQ6WJCposJmS4mZLqYkOliQqaLCZmu8ojLQxMSO3NcsWdOD36mpawJLGV1ZGk5h9/zy7wl7snU/Zdl584oW69t/VXYwfPhiRvq+F22mJXaxazfLebuXFy+Hx/Ba+3AXe3Aee3Aa+0oe63WSXMfraJNLHflY9HrFA033Dg9+pJHiUoKRCUFopICUUmBqKRAVFIgKikQlRSISgpEJQWikgJRSYGopEBUUiAqKRCVFIhKCkQlBaKSAlFJgaikQFRSICopEJUUiEoKRCUFopICUUmBqKRAVFIgKikQlRSISgpEJQWikgJRSYGopMC7p0BUUiAqKRCVFIhKCkQlBaKSAlFJgaikQFRSICopEJUUiEoKRCUFopICUUmBqKRAVFIgKikQlRSISgpEJQWikgJRSYGopEBUUiAqKXAXF4hKCkQlBaKSAlFJgaikQFRSICopEJUUiEoKRCUFopICUUmBqKRAVFIgKikQlRSISgpEJQWikgJRSYGopEBUUiAqKRCVFIhKCkQlBaKSAlFJgaikUFbTx/7c5ii/JVLgUyIFHi+B+d+P/uikX/oYv5S/Nnqhrv0ldU75c6O5kotbT25+/uexTo9/1MWU78GWqaF1akGNyjQlpOb8ExibIsamiLEpYmyKGJsixqaIsSlibIoYmyLGpoixKWJsihibIsamiLEpYmyKGJsixqaIsSlibIoYmyLGpoixKWJsihibIsamiLEpYmyKGJsixqaIsSlibIoYmyLGpoixKWJsihibIsamiLEpYmyKGJsixqaIsSlibIoYmyLGpoixKWJsihibIsamiLEpYmyKGJsixqaIsSlibIoYmyLGpoixKWJsihibIsamiLEpYmyKGJsixqaIsSlibIoYmyLGpoixKWJsihibIsamiLEpYmyKSEkRY1PE2BQxNkWMTRFjU8TYFDE2RYxNEWNTxNgUMTZFjE0RY1PE2BQxNkWMTRFjUyxL5ZNIZQNS2YBUNiCVDUhlA1LZgFQ2IJUNSGUDUtmAVDYglQ1IZQNS2YBUNiCVDUhlA1LZgFQ2IJUNSGUDUtmAVDYglQ1IZQNS2YBUNiCVDUjlBD0/dcrUKdH/JjWzAc1sQDMb0MwGNLMBzWxAMxvQzAY0swHNbEAzG9DMBjSzAc1sQDMb0MwGNLMBzWxAMxvQzAY0swHNbEAzG9DMBjSzAc1sQDMb0MwGNLMBzWxAMxvQzAY0swHNbEAzG9DMBjSzAc1sQDMb0MwGNLMBzWxAMxvQzAY0swHNbEAzG9DMBjSzAc1sQDMb0MwGNLMBzWxAMxvQzAY0swHNbEAzG9DMBjSzAc1sQDMb0MwGNLOhrJlPnXjW1futJxPzk4n5yXbvZ2n3Jju7X+OjTb9WjsH3/vmXpe4af6B3xs94t0V3d/8v7K7LL4rig75Puv3+ZPy/3X/Rt2G0D/+Rn8PtmL81+vk7Pva+HH/7b/6rn5/78+rxb+dweJ/+5vgD74T36/9at2lzft/ErXh80WoZi8jLWN5axoLWsvKd/DTTP31M//Qx/dPH9E8f0z99TP/0Mf3Tx/RPH9M/fUz/9DH908f0Tx/TP31M//Qx/dPH9E8f0z99TP/0Mf3Tx/RPH9M/fUz/9DH908f0Tx/TP31M//Qx/dPH9E8f0z99TP/0Mf3Tx/RPH9M/fUz/9DH908f0Tx/TP31M//Qx/dPH9E8f0z99TP/0Mf3Tx/RPH9M/fUz/9DH908f0Tx/TP31M//Qx/dPH9E8f0z99TP/0Mf3Tx/RPH9M/fUz/9DH908f0Tx/TP31M//Qx/dPH9E8f0z99TP/0Mf3Tx/RPH9M/fUz/9DH908f0Tx/TP31M//Qx/dPH9E8f0z99TP/0Mf3Tx/RPH9M/fUz/9DH908f0Tx/TP31M//Qx/dPH9E8f0z99TP/0Mf3Tx/RPH9M/fUz/9DH908f0Tx/TP31M//SVp3+eYUPcfbxY+xDAfQjgPl7IfQjuPsRxH7fMPmRtH7K2D7Hah6TvQ7rKtB26AzoE1UPvQfdCq6D50BPQ+9CT0CzoKWgNtBd6BnoWKkH7obXQc9Au6EFoHXQftB6aC90P7YRmQ3dDC6E2aCr0ELQHehjaBOWgD6BHoHugGdBj0IfQ49AUaB50F3QttAU6CG2FtkH7oJlQMzQd2g09Db0GLYPehJ6HXoRegZZAr0LLoQpoMfQCdABaAL0MLYVeh96A3oJi0CLoJagSmgO9HVJz/lkC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC80oC8zKdDqWgM6A0VAdloJVQPbQKOhNaDa2BvgQ1QF+GzoLWQmdD50DnQuug9VAWOg/6CnQ+dAF0IXQRNBu6GLoEuhTaAG2ENkGXQTnocugKaDN0JZSHroIK0NXQNdAW6FroOqgIbYW2QddDN0A3QjdBN0O3QNuhW6HboK9CX4NuD6k5X/qLmSiPxqtumt56Mig/GZT/r5bA7efE8jZKbhslt42S24YVacNgtFGO2yjHbZTjNspxG+W4jXLcRjluw3y0YT7aKNVtlOo2SnUbpbqNUt1GqW6jVLdRqtswXm0U7jYKdxumrI0y3kYZb6OMt1HG2yjjbVi0Nop6G0W9DVPWRolvo8S3UeLbKPFlmgtlofOgr0DnQxdAF0IXQbOhi6GF0CLoEuhSaAO0EVoCbYIug3LQ5dAV0GboSmg5lIeuglZABagSuhqaA10DzYO2QBXQtdB1UBHaCm2DrocWQzdAN0I3QTdDt0DboVuh20Jqzj934ifTs5FoRqt0b7X+dN5i0lMcNxm/1Gvvn/CB90lv8ZlbikknMektPm+WYtJJTHqLEy3FpJOY9BYnrO39/KzFpKOY9Bi/AGsRrSG/0fqxFuP5iTts1vgXVIw//tvj/021Tiyhb14U3hnjv9XNvMl+Z/yBDeFdNflNR//2358evs7jb4DNc6Mne4ElwSMka0dIuo6QHx8hoT5C8nuE9PMI6ecR8s4jJOJHSMSPkHofIQs9Qvp5hCT2CHnnEfLOI+SdR8jOj5CdHyELPUIWeoT08wgp+xFy9SOkn0fIO4+Qsh8h4TxCdn6EtPwImeYR0vIjJJxHSMuPkJYfIS0/QhZ6hEzzCEn6EZL0IyTpR0jSj5CkHyFDPUKufoTsvEzToKnQTKgemg/Ngp6HXoBehA5AL0EvQ69Ar0KvQa9DB6E3oDeht6C3oSnQO9BcaB60BdoJ3Q3dAzVDu6B3oR3QIeg96H2oDfoAmgF9CM2BKqAF0CJoMbQcWgLFoGXQUqgypOb8iyc/1n8ye/kURulXMHuJmoZs6884rPgbDCv+RnnE6cBnunHWH49f7Axvs/zN0Ucjfzi99ee5l1b0C1w9vfXjNtU68db5qTbVmnyDT77lJ2+Cz3wzrc/vHlovnRTkP0uQZ45/yYWtHyfM0S27qfWkQP9qCPTPJMyNCHNjWZhfnrjpjjeFTTSFTbSBTbSBTbSBTbSBTbSBTTR+TTR+TTR+TTR+TTR+TTR+TTR+TbR6TTR3TTR3TTR3TTR3TTR3TTR3TTR3TTR3TTRwTbRsTbRsTbRsTbRsTbRsTbRsTTRpTbTVTbRlTTRiTTRpTbRlTbRlTbRlTTQxTTQxTTQxTTQxTTQxTTRUTbQ0TbQ0TbQ0TbQ0TbQ0TbQ0TbQ0TTQqTTQqTTQqTTQqTbRCTbRCTbRCTeXG4ZXolslfcPx1fTC6kfIXiheBk++qB8s33auTe5E9NT34DX2dG/Tr5a99beJro4LzO5HRSUUfA/h6a5T/TNn8l4Jf0z+eGv6yyzQNmg7NgGZCs6DZITXnX4+2lY6+987p0bbSB4/jyqkRvjHx4sQiO/ZsJIZRAf7bx0vmG8f91PPRj1IdfdGvRw9Fpfc1qvTxupZfHn3R38EGTkrmcS3Pr4i+6O9GV5XR1d/7yAJtnjn+SFX0yPejP/tidPWD6a0/Cd7yp0YP/e5HpmzzlPFHTote33H5zNdEF9e2/iTQG1fhzV9sLed5s8e/IB59wazWILR781fTwETWI9/6q9hZRnbs6taTBuYXZGB2oY+7yvr41vhNF6nvlPH7OxKgtxlD3M06727WCXez9r+bdcLdrIbvRhV3MyWwm9Xb3aze7mZlcDdr3LtZod3NJMBuJgF2s+K9m5XW3aym7mb9tExV0BehauhU6DSoBopDCSgJ1UKnQynoDCgN1UEZaCVUD62CzoRWQ2ugL0EN0Jehs6C10NnQOdC50DpoPZSFzoO+Ap0PXQBdCF0EzYYuhi6BLoU2QBuhTdBlUA66HLoC2gxdCeWhq6ACdDV0DbQFuha6DipCW6Ft0PXQDdCN0E3QzdAt0HboVug26KvQ16DbQ2rOvzMhlW3jRSzdGrnqKZtXtJbPl/u7U6M/f/dXw89E/iXRejIpP+ljft5Tiocm+75jU4NvNL80uucePv6j/9704CbLL4v+7Myp4e02+SuYfB9Ofs+TN9Hke2PyLjr+YuZXRf9i98Q39B5jBklO8U1yim+SU3yTnOKb5BTfJKf4JjnFN8kpvklO8U1yim+SU3yTnOKb5BTfJKf4JjnFN8kpvklO8U1yim+SU3yTnOKb5BTfJKf4JjnFN8kpvklO8U1yim+SU3yTnOKbJDNIcopvklN8k5zim+QU3ySn+CY5xTfJKb5JTvFNcopvklN8k5zim+QU3ySn+CY5xTfJKb5JTvFNcopvEo+f5MPzSU7xTXKKb5JTfJOc4pvkFN8kp/gmOcU3ySm+SU7xTXKKb5JTfJOc4pvkFN8kp/gmOcU3ySm+SU7xTXKKb5JTfJNsMZDkFN8kp/gmOcU3ySm+SU7xTXKKb5JTfJOc4pvkFN8kp/gmOcU3ySm+SU7xTXKKb5JTfJPsAp7kFN8kWygkOcU3ySm+SU7xTXKKb5JTfJOc4pvkFN8kp/gmOcU3ySm+SU7xTZb70/cnTdYpraG5apt4/HgHVkEHVkHPVUHPVUHPVUGXVUHfWEFfVUFfVUF/VEF/VEEPVEEPVEEPW0GfU0GfU0GfU0EfXkEvU0EvU4GLraCzqaB7qaBfqaBfqaAnqaDXrqBDqaBDqaALqaALqaALqaAPr6AnqaAnqaBHr6AnqaAnqSCDqMDBV9B3VJAsVNBpVNBNVNBNVJAJVJAJlOkL0ALoNCgJnQ4thVJQHZSBVkL10HxoNTQLWgN9GToLWgvdDsWgddB6KAtdAF0IzYYWQougS6ENUA66HCpAldAcaB60BboWug4qQtug66EboZug7dCt0G0hNec/cMHlgYkVlqK4FZxUtgfKIvwhq5y/ySpnme6HvgU9AH0bmg0thB6C9kAPQ3dCCWgTlIMegVqhR6HHoMehO6C7oFXQE9BW6EloG/QUtAbaC+2DnoaegZ6FStB+aC00HXoOehBaB02DpkIzoXpoPjQLmgK9A82F5kFboIPQTuhu6B6oGdoFvQvtgA5B70HvQ23QB9AM6MOQmvOHPzrdtvzgNF7yabxY03ixpvFiTeMtPI1fwDR+AdPKT/tXOZnm30wNn7ZM06Dp0AxoJjQLmh1Sc76dNvw700IFLtNu6JvQN6B7ofug9dD90LegB6BvQ7OhhdCD0EPQHuhh6E4oAW2CctAjUCv0KPQY9Dh0B3QXtAp6AtoKPQltg56C1kB7oX3Q09Az0LNQCdoPrYWmQ89B66Bp0FRoJlQPzYdmQc9DL0AvQgegl6CXoVegV6HXoNehg9Ab0JvQW9Db0BToHWguNA/aAu2E7obugZqhXdC70A7oEPQe9D7UBn0AzYA+hOZAFdACaBG0GFoOLYFi0DJoKVQZUnO+gw3ADvBiHUAADyCAB3ghDyC4BxDHA9wyB5C1A8jaAcTqAJJ+AOkq03boDugQVA+9B90LrYLmQ09A70NPQrOgp6A10F7oGehZqATth9ZCz0G7oAehddB90HpoLnQ/tBOaDd0NLYTaoKnQQ9Ae6GFoE5SDPoAege6BZkCPQR9Cj0NToHnQXdC10BboILQV2gbtg2ZCzdB0aDf0NPQatAx6E3oeehF6BVoCvQothyqgxdAL0AFoAfQytBR6HXoDeguKQYugl6BKaA70dkjN+c6PXy6Olld/q/XntmwczWD9tdbP0TjcyWXjk8vGP5fxt7tYGrurnGwdmbjpojfjjugv/aXxi2uii5bxi67o4o7xd+Fprc/lb4mWHt6J/r2/Mv5IMvq7Xb8a8x2f7Q0abaJ138k79eSd+nEDHt0Td1TlOH89+v7+6fjFwehLl49f9EQXi8cvDkQX0cf5zo0u/tn4xVnRxe3jF78f/a0rxi9mRP/u/PGLG6KLP4x+69HFnPGLN6KLueMX/zC6+NH4xe9FFwvGL16JLhaNX1RG3+hXo3dY9MiPxy/Ojy7++fjF69HFH4xfPBddzBu/aJv20Q38H6O/9a/GL+6JHvkn4xd/EF0sGb/4ZjQS/9VIQg5GDy0cv9geXfyL8Yv10UVF9B6JZlkui75oUfRQIfpdRD/Qvxy/OCV6JBb9UqJHlkVvkmgWZUb01anox//X0Vs8ulga/b6jP8tFf7YmutoQXT0d/Qu/P34xMY3/0bLY5q4JFeyZPNP5UPSH08Zv7Buix3snHp+8rSffOJMHX5w4OPOb4xc/PP4mjYWDMz+5HU9UyMmbZlLUjrdph7DPh8pW6bcmvq9xIc7vnPaRVE35aKA8/2vToq/oo19dyBr7QuZmFjI3s5D194XM6SxkpmYh5WQh0zALmYZZyIzLQiaBFjLxUqbt0B3QIageeg+6F1oFzYeegN6HnoRmQU9Ba6C90DPQs1AJ2g+thZ6DdkEPQuug+6D10FzofmgnNBu6G1oItUFToYegPdDD0CYoB30APQLdA82AHoM+hB6HpkDzoLuga6Et0EFoK7QN2gfNhJqh6dBu6GnoNWgZ9Cb0PPQi9Aq0BHoVWg5VQIuhF6AD0ALoZWgp9Dr0BvQWFIMWQS9BldAc6O2QmvP9k0XjuqjILIw+z3XdR9VjW/QFfw0NLpEZlsgMS2SGJTLDEplhicywRGZYIjMskRmWyAxLZIYlMsMSmWGJzLBEZlgiMyyRGZbIDEtkhiUywxKZYYnMsERmWCIzLJEZlsgMS2SGJTLDEplhicywRGZYIjMskRmWyAxLZIYlMsMSmWGJzLBEZlgiMyyRGZbIDEtkhiUywxKZYYnMsERmWCIzLJEZlsgMS2SGJTLDEplhicywRGZYIjMskRmWyAxLmJ4SmWGJzLBEZlgiMyyRGZbIDEtkhiUywxKZYYnMsERmWCIzLJEZlsgMS2SGJTLDEplhicywRGZYIjMskRmWyAxLZIYlMsMSmWGJzLBEZlgiMyyRGZbIDEtkhiUywxKZYYnMsERmWCIzLJEZlsgMS2Uj/L/97BHEJ0QOP03U8GkihvGednNDaxApnLgDzCfsMnniDjAnbhP5CZ3+ZIP/U238cuIejnTfP44e+UVuBXNir/1pWuyfdNb/+8Qb5XgdW4e6raM6raOKrkML1qGm66i+66hq66iN66hc61C3Mr0DzYXmQVugg1AzdA90N7QT2gXNgNqgd6Ed0AfQh9Ah6D3o/ZCax9/r0a/quOF5FCPxKHL/KPL7KKbmUWzMoxThRynCj1J2y/Qt6AHo29BsaCH0IPQQtAd6GLoTSkCboBz0CNQKPQo9Bj0O3QHdBa2CnoC2Qk9C26CnoDXQXmgf9DT0DPQsVIL2Q2uh6dBz0DpoGjQVmgnVQ/OhWdDz0AvQi9AB6CXoZegV6FXoNeh16CD0BvQm9Bb0NjQFegeaC82DtkA7obuhe6BmaBf0LrQDOgS9B70PtUEfQDOgD6E5UAW0AFoELYaWQ0ugGLQMWgpVhtScH+S4g7cZ4y9TNXQq9AVoAXQaVAPFoQSUhGqh06Gl0DIoBZ0BpaE6KAOthOqhVdB86ExoNTQLWgN9CWqAvgydBZ0CrYXOhmLQOdC50DpoPTQXykLnQV+BzocugC6ELoJmQxdDC6FF0CXQpdAGaCO0BNoEXQbloMuhK6DN0JXQcigPXQWtgApQJXQ1NAe6BpoHbYEqoGuh66AitBXaBl0PLYZugG6EboJuhm6BtkO3QreF1Jz/6x9NTE/ZfN7EDzhl8/bWibZs8+3j//034//9y62Rl5yyeWdr5D6nbP7m+H//7fh/v90ahXFTNj/SWt5Da9/4f/9o/L/Ptf7EX7bgL1vwly34yxb8ZQv+sgV/2YK/bMFRtuAoW3CULTjKFhxlC46yBUfZgqNswVG24ChbcJQtOMoWHGULjrIFR9mCo2zBUbbgKFtwlC04yhYcZQuOsgVH2YKjbMFRtuAoW3CULTjKFhxlC46yBUfZQkfQgr9swV+24C9b8Jct+MsW/GUL/rIFN9aCG2vBjbXgxlpwYy04wxa8WQverAVv1oI3a8GbteDNWvBmLXizFrxZC96sBW/WgjdrwZu14M1ayg7ot0/cUPgfffzS7M+WHH3muwf/bJFRtNPxUPRHn2b34BNDpM989+C/kOzop9tG+Hf+tB0IJ7+LE7YijH7bm/96+KaZfBtNvjpTxv9/NPxl/XR7FY6/cJuPBT9U/vZouWm49c+xi+Hke/VTbGc4+d7I10ePjLT+ZF/Dyd/k/7yxYXkLxNHWYIfDv8EHlWpZP61lPbOWKYFa5hBqWd+vZY27ljXuWla1a5l7qGXuoZbZhlpWvGtZ465lvb2WVe1aVrVrWdWuZUKilgmJWla8a1nxrmWNu5ZZilqmJ2pZ465lVbuWWYpa1rFrmZCoZSailpXrWmYialnHrmUmopaZiFpmImpZ8a5l5bqWeYla5iVqmZeoZV6ilnmJWlbKa5meqGVCokzToKnQTKgemg/Ngp6HXoBehA5AL0EvQ69Ar0KvQa9DB6E3oDeht6C3oSnQO9BcaB60BdoJ3Q3dAzVDu6B3oR3QIeg96H2oDfoAmgF9CM2BKqAF0CJoMbQcWgLFoGXQUqgypOb835wc6J2YCIuGdb8QPf63WABZTVewmj5gNb58Nf5zNd50Nb51NW50NW50Nb51Nd50Nd50Nd50Nd50Nd50Nd50NY5zNU51Nd50Nb51Nd50Nc5xNR5zNb51Nb51Nf5zNY5zNZ52NZ52NZ52ddmb/u1PvQfyL3rn4/Key8PRN/Vz2gN5KNoO+o7xf/GB6dFurEePz9hsXhq8Y/6g/Dr9Hx+dqDbx4Oaj0St5PGA5Z+LWuAY6FTobug66ADoHqoNuC6k5f+xPmReN3NuO1o8bF/2ZhkOb88NhgLv5d6Jv5YshVIdwaghfCGFBCKeFUBNCPIRECMkQakM4PYSlISwLIRXCGSGkQ6gLIRPCyhDqQ1gVwvwQzgxhdQizQlgTwpdCaAjhyyGcFcIpIawN4ewQYiGcE8K5IawLYX0Ic0PIhnBeCF8J4fwQLgjhwhAuCmF2CBeHsDCERSFcEsKlIWwIYWMIS0LYFMJlIeRCuDyEK0LYHMKVISwPIR/CVSGsCKEQQmUIV4cwJ4RrQpgXwpYQKkK4NoTrQiiGsDWEbSFcH8LiEG4I4cYQbgrh5hBuCWF7CLeGcFsIXw3hayHcHkBzfoRdM37Mrhk/ZteMH5fT29GPqkL5wT9kgeUPy1/ynYkvmT0umBdHAhwNxg9O7Jv23ZMfWjr5qcLNn6/PKkWfCXs3euSX8kNLf4fb97vcvt/l9v0ud+p3WeT7LpvefLd8F3/vz32z5hsj89g2/sC/G/9v4XN99+Zro+/15Z/fbRwdPnzlL8XtHH3o+/Jf9tv609zN0fnPl3we7+q/y139fe7q73NXf5+trL7PVlbf567+Pvf/97n/v1++4//exNNOH/82/jD6fo4///d4/u/xHN/ju/kez/E9nuN7fDffKz/j9yeeccb4UzUFT/gdnvA7PMV3eIrv8BTf4Sm+U36KH/Ba/pB/+of80z/ktfwhP+cP+ad/yDfxQ76JH5af9u9/tF14+cHfm/iSKdBUaBo0HZoBzYJmh9Sc/11+2h/wRD/giX7AE/2AJ/oBP+0PeNof8LQ/KD/tDyc/jhOP3tKbxi86J97J/+CjveCm5LfMaC1vofvSxB/8w4k/OB4ZfHl60L99RNdAp0JnQ7uh66BV0AXQOVAddFtIzfnfO777++Zd47UiGf0cX5uwtGNGflHhuSu6+PdRKQo+wz/xof6F0Y1/5/jFW8fjweRHr9a90QNbxh84I/pH/xFTuA9P5FT3QtdCu6FvQtuh+6D10P3Qt6AHoG9Ds6GF0IPQQ9Ae6GHoTigBbYJy0CNQK/Qo9Bj0OHQHdBe0CnoC2go9CW2DnoLWQHuhfdDT0DPQs1AJ2g+thaZDz0HroGnQVGgmVA/Nh2ZBz0MvQC9CB6CXoJehV6BXodeg16GD0BvQm9Bb0NvQFOgdaC40D9oC7YTuhu6BmqFd0LvQDugQ9B70PtQGfQDNgD6E5kAV0AJoEbQYWg4tgWLQMmgpVBlSc/4fn7BUk79sQtB/f9KSbA7e43/CAOqflKveP5lYK2iKisG/iNL4C6Krfxpd/Vp0NTCtvNXxuFU+vlHAxqnhdsd/s/yt/J8szP8u+v676Pvvou9l+gZ0L3QftB66H/oW9AD0bWg2tBB6EHoI2gM9DN0JJaBNUA56BGqFHoUegx6H7oDuglZBT0BboSehbdBT0BpoL7QPehp6BnoWKkH7obXQdOg5aB00DZoKzYTqofnQLOh56AXoRegA9BL0MvQK9Cr0GvQ6dBB6A3oTegt6G5oCvQPNheZBW6Cd0N3QPVAztAt6F9oBHYLeg96H2qAPoBnQh9AcqAJaAC2CFkPLoSVQDFoGLYUqQ2oeF2V2ob8vMvU/2YW+jFvByTv/vnID8M8mG5lXp7YGu75Ebv75qa0/8fnHXX3k95+ZqCg/Ov5XNzd+9DfTUWW4Igqc5reWe4Zi9E9EG4AtnR79lf8rWomNAq8fTazE/nMqxBAVYogKMUSFGKJCDFEhhqgQQ1SIISrEEBViiAoxRIUYokIMUSGGqBBDVIghKsQQFWKICjFEhRiiQgxRIYaoEENUiCEqxBAVYogKMUSFGKJCDFEhhqgQQ1SIISrEEBViiAoxRIUYokIMUSGGqBBDVIghKsQQFWKICjFEhRiiQgxRIYaoEENUiCEqxBAVYogKMUSFGKJCDFEhhqgQQ1SIISrEEBViiAoxRIUYokIMUSGGqBBDVIghKsQQFWKICjFEhRiiQgxRIYaoEENUiCEqxBAVYogKMUSFGKJCDFEhhqgQQ1SIISrEEBViiAoxRIUYokIMUSGGqBBDVIghKsQQFWKICjFEhRiiQgxRIYaoEENUiCEqxBAVYqhcIX6MxB5GYg8jsYeR2MNI7GEk9jC//sPcJId5Mxzml3MYwT2M4B7mF3cY+T3MTXkY4TyMcB5GDg8jh4eRvMO8NQ5zMx/mjXIYOTzMjX4YcTzMW+ow4ngYSTiMOB5GHA8jjocRwMMI4GEE8DACeBgBPIzkHeYGOkwBO4wcluk+aD00F7of2gnNhu6GFkJt0EPQHuhhaBOUgz6AHoHugWZAj0EfQo9D86C7oC3QQWgrtA3aB82EmqGnoenQ89AL0IvQG9AB6E3oLegl6GXoFehV6DXodehtaA5UAS2AFkGLoeXQEigGLYOWQpUhNef/IDK1x997/zWKUO7O/+GfPrSX/y9RWv5ZTe011+X/xUQTMBHI/Kepx+OaD46PdK4jmvkb5W/5X058e5Pf1eSy4Cc84+Rq+OTS4eT65+SPGf10/52fbnJ9N1rc/td8XuYTjoWdXO8+cZn7xKXR4yuizfn/m1p3jFp3jFp3jFp3jFp3jFp3DAU8hgIeQ/OOUd2OUd2OUc+OoYfHUMBjqPExFPAYCngMBTxGVTxGVTyGOh5DHY+hh8eon8eon8fQw2Mo4DFq6zEU8Bj18xgV8xgKeIyKeQw9PEbFPEbFPEbFPIZyHkMdj1FNj1FNj1FNj1FNj1FNj6Gxx6itx6ifZZoGTYVmQvXQfGgW9Dz0AvQidAB6CXoZegV6FXoNeh06CL0BvQm9Bb0NTYHegeZC86At0E7obugeqBnaBb0L7YAOQe9B70Nt0AfQDOhDaA5UAS2AFkGLoeXQEigGLYOWQpUhNef/1cnNpH/Bm0l3TLzu/5rSNkhpG6S0DVLaBiltg5S2QUrbIKVtkNI2SGkbpLQNUtoGKW2DlLZBStsgpW2Q0jZIaRuktA1S2gYpbYOUtkFK2yClbZDSNkhpG6S0DVLaBiltg5S2QUrbIKVtkNI2SGkbpLQNUtoGKW2DlLZBStsgpW2Q0jZIaRuktA1S2gYpbYOUtkFK2yClbZDSNkhpG6S0DVLaBiltg5S2QUrbIKVtkNI2SGkbpLQNUtoGKW2DlLZBStsgpW2Q0jZIaRuktA1S2gYpbYOUtkFK2yClbZDSNkhpG6S0DVLaBiltg5S2QUrbIKVtkNI2SGkbpLQNUtoGKW2DlLZBStsgpW2Q0jZIaRuktA1S2gYpbYOUtkFK2yClbZDSNkhpGyyXtv8Hie1BYnuQ2B4ktgeJ7UFie5DYHiS2B4ntQWJ7kNgeJLYHie1BYnuQ2B4ktgeJ7UFie5DYHiS2B4ntQWJ7kNgeJLYHie1BYnuQ2B4ktgeJ7UFie5DYHiS2B4ntQWJ7kNgeJLYHie1BYnuQ2B4ktgeJ7UFie5DYHiS2B4ntQWJ7kNgeJLYHie1BYnuQ2B4ktgeJ7UFie5DYHiS2B4ntQWJ7kNgeJLYHie1BYnuQ2B4ktgeJ7UFie5DYHiS2B4ntQWJ7kNgeJLYHie1BYnuQ2B4ktgeJ7UFie5DYHiS2B4ntQWJ7kNgeJLYHie1BYnuQ2B4ktgeJ7UFie5DYHiS2B4ntQWJ7kNgeJLYHie1BYnvKEvtvkNhOJLYTie1EYjuR2E4kthOJ7URiO5HYTiS2E4ntRGI7kdhOJLYTie1EYjuR2E4kthOJ7URiO5HYTiS2E4ntRGI7kdhOJLYTie1EYjuR2E4kthOJ7URiO5HYTiS2E4ntRGI7kdhOJLYTie1EYjuR2E4kthOJ7URiO5HYTiS2E4ntRGI7kdhOJLYTie1EYjuR2E4kthOJ7URiO5HYTiS2E4ntRGI7kdhOJLYTie1EYjuR2E4kthOJ7URiO5HYTiS2E4ntRGI7kdhOJLYTie1EYjuR2E4kthOJ7URiO5HYTiS2E4ntRGI7kdhOJLYTie1EYjuR2E4kthOJ7URiO5HYTiS2E4ntRGI7kdhOJLazLLH/FolNsBtSgk8VJNgNKcFuSAl2Q0qwG1KC3ZAS7IaUYDekBLshJdgNKcFuSAl2Q0qwG1KC3ZAS7IaUYDekBLshJdgNKcFuSAl2Q0qwG1KC3ZAS7IaUYDekBLshJdgNKcFuSAlGrxLshpRgN6QEuyEl2A0pwW5ICXZDSrAbUoLdkBLshpRgN6QEuyEl2A0pwW5ICXZDSrAbUoLdkBLshpRgN6QEuyEl2A0pwW5ICXZDSrAbUoLdkBLshpRgN6QEuyEl2A0pwW5ICXZDSrAbUoLdkBLshpRgN6QEuyEl2A0pwW5ICXZDSrAbUoLdkBLshpRgN6QEuyEl2A0pwW5ICXZDSrAbUoLdkBLshpRgN6QEuyEl2A0pwW5ICXZDSrAbUoLdkBLshpRgN6QEuyEl2A0pwW5ICXZDSrAbUoLdkBLshpRgN6QEuyEl2A0pUR6Z/KMJiT04/sva0vrcZ73fa3P+303888fVthFD24iFbcTCNmJhG7GwjVjYRkxrI6a1EdPaiGltxLQ2YlobMa2N2NRGjGkjxrQRY9qIMW3EmDZiTBsxpo0Y00bMZyN2sxG72YjdbMRuNmI3G7GbjRjMRlqCRixlIyayEYPZiKVsxFI2YikbMWCNGLBGDFgjBqwRA9aIGWzEjjVixxqxY43YsUbsWCN2rBE71ojJasRkNWKyGjFZjdi4RmxcIzausWx6/j2mJ43pSWN60pieNKYnjelJY3rSmJ40pieN6UljetKYnjSmJ43pSWN60pieNKYnjelJY3rSmJ40pieN6UljetKYnjSmJ43pSWN60pieNKYnjelJY3rSmJ40pieN6UljetKYnjSmJ43pSWN60pieNKYnjelJY3rSmJ40pieN6UljetKYnjSmJ43pSWN60pieNKYnjelJY3rSmJ40pieN6UljetKYnjSmJ43pSWN60pieNKYnjelJY3rSmJ40pieN6UljetKYnjSmJ43pSWN60pieNKYnjelJY3rSmJ40pieN6UljetKYnjSmJ43pSWN60pieNKYnjelJY3rSmJ40pieN6UljetKYnjSmJ43pSZdNz39gc7jfjr7iiyFUh3BqCF8IYUEIp4VQE0I8hEQIyRBqQzg9hKUhLAshFcIZIaRDqAshE8LKEOpDWBXC/BDODGF1CLNCWBPCl0JoCOHLIZwVwikhrA3h7BBiIZwTwrkhrAthfQhzQ8iGcF4IXwnh/BAuCOHCEC4KYXYIF4ewMIRFIVwSwqUhbAhhYwhLQtgUwmUh5EK4PIQrQtgcwpUhLA8hH8JVIawIoRBCZQhXhzAnhGtCmBfClhAqQrg2hOtCKIawNYRtIVwfwuIQbgjhxhBuCuHmEG4JYXsIt4ZwWwhfDeFrIdweQHP+j0/cqD/78eOvf/qGbZNbPR3f++lzs+XTz7LT0yfs+z+55dNnvsPT5MZOk1s9fd42bJvc0Glyi6cTd3aa3NBpcounq8df3cOtP88dnk48s2Byi6cTd3b6k/GL66NHPqstnqKt5c77s/Z6+o+/tJOCf/qA4M9zLLA8A7gs+m5PHBCcHAtszv+/J2rX5R//YYFPc8hIdJbHzlC08jdHz9k8rfXnee5IdBusnt76cQeQnLjl3CecWfsJ545MCsikpHzm5458fo8b+U/kIX9tWlDeP6Ld0Dehb0D3QvdB66H7oW9BD0DfhmZDC6EHoYegPdDD0J1QAtoE5aBHoFboUegx6HHoDuguaBX0BLQVehLaBj0FrYH2Qvugp6FnoGehErQfWgtNh56D1kHToKnQTKgemg/Ngp6HXoBehA5AL0EvQ69Ar0KvQa9DB6E3oDeht6C3oSnQO9BcaB60BdoJ3Q3dAzVDu6B3oR3QIeg96H2oDfoAmgF9CM2BKqAF0CJoMbQcWgLFoGXQUqgypOb8f56Q2MiWfHHGxDt73HLMmHjjTsmfE/mBBVEdfXVCjv8EOU4RT6eIp1PE0yni6RTxdIp4OkU8nSKeThFPp4inU8TTKeLpFPF0ing6RTydIp5OEU+niKdTxNMp4ukU8XSKeDpFPJ0ink4RT6eIp1PE0yni6RTxdIp4OkU8nSKeThFPp4inU8TTKeLpFPF0ing6RTydIp5OEU+niKdTxNMp4ukU8XSKeDpFPJ0ink4RT6eIp1PE0yni6RTxdIp4OkU8nSKeThFPp4inU8TTKeLpFPF0ing6RTydIp5OEU+niKdTxNMp4ukU8XSKeDpFPJ0ink4RT6eIp1PE0yni6RTxdIp4OkU8nSKeThFPp4inU8TTKeLpFPF0ing6RTydIp5OEU+niKdTxNMp4ukU8XSKeDpFPJ0ink4RT6fK8fR/mZDY/xAZ6Omt5V5u77ToD/4r2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNobwbtzaC9GbQ3g/Zm0N4M2ptBezNl7f1vP/uBCj/LuQlRgNv2KdP0TxNP/fTp+Sek5iObpzw/ZcrUKdH//qeDEibjq8/qOIRPyLo+TVj+U6Vfn+ZAg7/YA3k/+9MK/jvWYYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbYAUbaCcov1/ExIb1YtdkfKfuF9WNB19fetERd9c1/pc/oZoc1l2mJqs/n/6Rlr5a6IsbtufsaXW8emdvzXxnf0PxD9O3xinb4zTN8bpG+P0jXH6xjh9Y5y+MU7fGKdvjNM3xukb4/SNcfrGOH1jnL4xTt8Yp2+M0zfG6Rvj9I1x+sY4fWOcvjFO3xinb4zTN8bpG+P0jXH6xjh9Y5y+MU7fGKdvjNM3xukb4/SNcfrGOH1jnL4xTt8Yp2+M0zfG6Rvj9I1x+sY4fWOcvjFO3xinb4zTN8bpG+P0jXH6xjh9Y5y+MU7fGKdvjNM3xukb4/SNcfrGOH1jnL4xTt8Yp2+M0zfG6Rvj9I1x+sY4fWOcvjFO3xinb4zTN8bpG+P0jXH6xjh9Y5y+MU7fGKdvjNM3xukb4/SNcfrGOH1jnL4xTt8Yp2+M0zfG6Rvj9I1x+sY4fWOcvjFO3xgv941TZkT7Fn490ua3ph/ft/DrxwcFuqKHfj16aEN0dVF09Up0deHxN/3fLteQqTNCpe7Hpvdj0/ux6f3Y9H5sej82vR+b3o9N78em92PT+7Hp/dj0fmx6Pza9H5vej03vx6b3Y9P7sen92PR+bHo/Nr0fm96PTe/Hpvdj0/ux6f3Y9H5sej82vR+b3o9N78em92PT+7Hp/dj0fmx6Pza9H5vej03vx6b3Y9P7sen92PR+bHo/Nr0fm96PTe/Hpvdj0/ux6f3Y9H5sej82vR+b3o9N78em92PT+7Hp/dj0fmx6Pza9H5vej03vx6b3Y9P7sen92PR+bHo/Nr0fm96PTe/Hpvdj0/ux6f3Y9H5sej82vR+b3o9N78em92PT+7Hp/dj0fmx6Pza9H5vej03vx6b3Y9P7sen92PR+bHo/Nr0fm96PTe/HpveXJXbahMQe/3WsmhDzr0ILoIXQImgJtBRaBl0BLYdWQAWoEpoDzYMqoPnQ16DF0CnQ7VAspOb8dKrTKNVplOo0SnUapTqNUp1GqU6jVKdRqtMo1WmU6jRKdRqlOo1SnUapTqNUp1Gq0yjVaZTqNEp1GqU6jVKdRqlOo1SnUarTKNVplOo0SnUapTqNUp1GqU6jVKdRqtMo1WmU6jRKdRqlOo1SnUapTqNUp1Gq0yjVaZTqNEp1GqU6jVKdRqlOo1SnUarTKNVplOo0SnUapTqNUp1GqU6jVKdRqtMo1WmU6jRKdRqlOo1SnUapTqNUp1Gq0yjVaZTqNEp1GqU6jVKdRqlOo1SnUarTKNVplOo0SnUapTqNUp1GqU6jVKdRqtMo1WmU6jRKdRqlOo1SnUapTqNUp1Gq0yjVaZTqNEp1GqU6jVKdRqlOo1SnUarTKNVptFydZoxLbNQybJ4T7bw+c8bPczXqp/kox6dZfJpcbPo0i0ufMAl94mcqPuGjFJOLQicuAUWrQyVisRPXgn6FloBmYXzqMT71GJ96jE89xqce41OP8anH+NRjfOoxPvUYn3qMTz3Gpx7jU4/xqcf41GN86jE+9RifeoxPPcanHuNTXzY+szE+HRifDoxPB8anA+PTgfHpwPh0YHw6MD4dGJ8OjE8HxqcD49OB8enA+HRgfDowPh0Ynw6MTwfGpwPj04Hx6cD4dGB8OjA+HRifDoxPB8anA+PTgfHpwPh0YHw6MD4dGJ8OjE8HxqcD49OB8enA+HRgfDowPh0Ynw6MTwfGpwPj04Hx6cD4dGB8OjA+HRifDoxPB8anA+PTgfHpwPh0YHw6MD4dGJ8OjE8HxqcD49OB8enA+HRgfDowPh0Ynw6MTwfGpwPj04Hx6cD4dGB8OjA+HRifDoxPB8anA+PTgfHpwPh0YHw6MD4dGJ8OjE8HxqcD49OB8enA+HRgfDowPh0Ynw6MTwfGpwPj04Hx6cD4dGB8OjA+HRifjrLxmYPEnjE9lNgy7Ya+CX0Duhe6D1oP3Q99C3oA+jY0G1oIPQg9BO2BHobuhBLQJigHPQK1Qo9Cj0GPQ3dAd0GroCegrdCT0DboKWgNtBfaBz0NPQM9C5Wg/dBaaDr0HLQOmgZNhWZC9dB8aBb0PPQC9CJ0AHoJehl6BXoVeg16HToIvQG9Cb0FvQ1Ngd6B5kLzoC3QTuhu6B6oGdoFvQvtgA5B70HvQ23QB9AM6ENoDlQBLYAWQYuh5dASKAYtg5ZClSE1j7cBocT24mJ7cbG9uNheXGwvLrYXF9uLi+3FxfbiYntxsb242F5cbC8uthcX24uL7cXF9uJie3GxvbjYXlxsLy62Fxfbi4vtxcX24mJ7cbG9uNheXGwvLrYXF9uLi+3FxfbiYntxsb242F5cbC8uthcX24uL7cXF9uJie3GxvbjYXlxsLy62Fxfbi4vtxcX24mJ7cbG9uNheXGwvLrYXF9uLi+3FxfbiYntxsb242F5cbC8uthcX24uL7cXF9uJie3GxvbjYXlxsLy62Fxfbi4vtxcX24mJ7cbG9uNheXGwvLrYXF9uLi+3FxfbiYntxsb242F5cbC8uthcX24uL7cXF9uJie3GxvbjYXlxsLy62Fxfbi4vtxcX24mJ7yy52HhI7gsSOILEjSOwIEjuCxI4gsSNI7AgSO4LEjiCxI0jsCBI7gsSOILEjSOwIEjuCxI4gsSNI7AgSO4LEjiCxI0jsCBI7gsSOILEjSOwIEjuCxI4gsSNI7AgSO4LEjiCxI0jsCBI7gsSOILEjSOwIEjuCxI4gsSNI7AgSO4LEjiCxI0jsCBI7gsSOILEjSOwIEjuCxI4gsSNI7AgSO4LEjiCxI0jsCBI7gsSOILEjSOwIEjuCxI4gsSNI7AgSO4LEjiCxI0jsCBI7gsSOILEjSOwIEjuCxI4gsSNI7AgSO4LEjiCxI0jsCBI7gsSOILEjSOwIEjuCxI4gsSNI7AgSO4LEjiCxI0jsCBI7gsSOlCX2C0jsMBI7jMQOI7HDSOwwEjuMxA4jscNI7DASO4zEDiOxw0jsMBI7jMQOI7HDSOwwEjuMxA4jscNI7DASO4zEDiOxw0jsMBI7jMQOI7HDSOwwEjuMxA4jscNI7DASO4zEDiOxw0jsMBI7jMQOI7HDSOwwEjuMxA4jscNI7DASO4zEDiOxw0jsMBI7jMQOI7HDSOwwEjuMxA4jscNI7DASO4zEDiOxw0jsMBI7jMQOI7HDSOwwEjuMxA4jscNI7DASO4zEDiOxw0jsMBI7jMQOI7HDSOwwEjuMxA4jscNI7DASO4zEDiOxw0jsMBI7jMQOI7HDSOwwEjuMxA4jscNI7DASO4zEDiOxw0jsMBI7XJbYigmJnbl5Sv7Y8XO+r4ouJpc0P+GTB5MLvMdXMvOroo85nNr6iYdkH19Zbc7PR97HkPcx5H0MeR9D3seQ9zHkfQx5H0Pex5D3MeR9DHkfQ97HkPcx5H0MeR9D3seQ9zHkfQx5H0Pex5D3MeR9DHkfQ97HkPcx5H0MeR9D3seQ9zHkfQx5H0Pex5D3MeR9DHkfQ97HkPcx5H0MeR9D3seQ9zHkfQx5H0Pex5D3MeR9DKkaQzrGkI4xCsEYQjKG9I8hK2MUgjFEZoyyMIaMjSGbY0jjGNI4hlSNUaLGEK4xRHQMGRtDxsYQ9DFEewzRHqOAjFESx5DpMcreGGVvjLI3Rtkbo+yNUfbGKHtjlL0xyt4YZW+MQjdGoRuj0I1R6MaQ8DHkdgwpHkOmxxD7MQR9DLEfQ7THKCdjlJMxSsZYWd4XTEhs9BmE7qkTv8Ep+c6p0R8snPiDj3a/zm+ayJBPhWqgOJSAaqFl0BlQGloFnQl9CWqAToHOhs6BzoXmQudBX4HOhy6CLoYugTZCS6BN0GXQFdBm6EpoOZSHroJWQFdD10AV0FZoMXQDdDN0C1QFfRH6ArQAOg1KQqdDS6EUVAdloJVQPTQfWg3NgtZAX4bOgtZCMWgdtB7KQhdAF0KzoYXQIuhSaAOUgy6HClAlNAeaB22BroWug4rQNuh66EboJmg7dCt0W0jN+UUTAnjcEG3EWmzEWmzELG3EuG3EWmzExm3EYG7E1G3EZG3EVm3Ebm6khG6knG/EhGzEdmzEaGzEWmyknG/E9GzEaGyk1G+k1G+k1G+kuG/EoGzEaGzErmzE5mzEcm3Ecm3E2GzEymzEvGzEvGzEnG3Ejm3EgG0sF83Fkz3RkakT382U/DenTjz1eC8zUT1PmfiK4/fP7on31zega6Hd0L3QmdA3oRXQdmgmdB+0Hrof+hb0APRtaDa0EHoI2gM9DN0JJaBNUA56BGqFHoUegx6H7oDuglZBT0BboSehbdBT0BpoL7QPehp6BnoWKkH7obXQdOg56EFoHTQNmgrVQ/OhWdDz0AvQi9AB6CXoZegV6FXoNeh16CD0BvQm9Bb0NjQFegeaC82DtkAzoJ3Q3dA9UDO0C3oX2gEdgt6D3ofaoA+gD6E5UAW0AFoELYaWQDFoGbQUWg5VhtScXzIhxsd/OXupIHupwWV6ANoBfQP6NjQNuhNKQK3QN6FHoe3QHdAhqB56D7oXWgXNh56A3oeehGZBT0FroL3QM9CzUAnaD62FnoN2QQ9C66D7oPXQXOh+aCc0G7obWgi1QVOhh6A90MPQJigHfQA9At0DzYAegz6EHoemQPOgu6BroS3QQWgrtA3aB82EmqHp0G7oaeg1aBn0JvQ89CL0CrQEehVaDlVAi6EXoAPQAuhlaCn0OvQG9BYUgxZBL0GV0Bzo7ZCa80tJi56eGn3JqVANFIcSUC20DDoDSkOroDOhL0EN0CnQ2dA50LnQXOg86CvQ+dBF0MXQJdBGaAm0CboMugLaDF0JLYfy0FXQCuhq6BqoAtoKLYZugG6GboGqoC9CO6AvQAug06AkdDq0FEpBdVAGWgnVQ/Oh1dAsaA30ZegsaC0Ug9ZB66EsdAF0ITQbWggtgi6FNkA56HKoAFVCc6B50BboWug6qAhtg64PKX/KVP7wRugmaDt0K3QbdDv0VehrPP16nj6fBZvzy372jwAfP93tZ9mY9oSPBEfnZJ0Rfenn5pi3E09XmjzdbfLDxZ/5MW8n7lz7eTvmbfJ0t59qv9tfwPFuk6e6/QV/DjoWfcT+4DgumRp9xn75xA12/MTJvxNU+TLMC+ELIVSEMD+EWSEsCGFhCItCWBzCKSEsCWFpCMtCiIWwPIQVIVSGUBXCF0OoDuHUEE4LoSaEeAiJEJIh1IZwegipEM4IIR1CXQiZEFaGUB/CqhDODGF1CGtC+FIIDSF8OYSzQlgbwtkhnBPCuSGsC2F9CNkQzgvhKyGcH8IFIVwYwkUhzA7h4hAuCeHSEDaEsDGETSFcFkIuhMtDuCKEzSFcGUI+hKtCKIRwdQjXhLAlhGtDuC6EYghbQ9gWwvUh3BDCjSHcFMLNIdwSwvYQbg3hthC+GsLXQrg9gOb8ihnBydb57dODO/kjWg+dCmWhr0AXQBdCF0GXQJdCcWgDlIQSUC10OpSDNkNXQiugOmg7dA10LVSEVkHXQWdCW6HV0BqoAboeOgtaB62FboDOhm6CzoFugc6FbgupOV/5OTGnJz3pSU/6ufekUQf1TPTXP8mcVjl6e/w7Lg/RnvOx99bk6z7+6my+qvVjRnA/3eTtFyNfHB35l5zwxdXMQmwgud9Acr+BdYoNrIRsILPdwLrIBtZhNpB6b2DVYgP58Qby+A0kxhvI3DewRrOBNZMNrIRsYH1jAxl4md6B5kLzoC3QQagZ2gndA90N7YLehXZAbdAH0AzoQ+gQ9B70fkjN+VPDlim/kmR0JanNSvK5lWSFK0nIVpKJrSTJW0kOtZIcaiUZ40rS3ZVkqCtJ+VaSNK8kS1tJTrqSLHQlidVKksqVJJVlqoZOhU6DaqA4lICSUC10OpSCzoDSUB2UgVZC9dAq6ExoNbQG+hLUAH0ZOgtaC50NnQOdC62D1kNZ6DzoK9D50AXQhdBF0GzoYugS6FJoA7QR2gRdBuWgy6EroM3QlVAeugoqQFdD10BboGuh66AitBXaBl0P3QDdCN0E3QzdAm2HboVug74KfQ26PaTm/GlIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMoMUplBKjNIZQapzCCVGaQyg1RmkMpMWSprkMo0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOVaaQyjVSmkco0UplGKtNIZRqpTCOV6bJUxk/IXfOXf/yJcCcGr59mQ/BPCFajCO78Ga2fLln9481TNreM//e/jT/w3J+xRfiJ0eknbBE+mXROhqCTAeeJ2edk0nnK+EXjx+8V/glbhJ+4Ifgvch/wyYjxExa5fxIfJibeGM+M8z+Y1vpc/ozoQ56PRV/y5PjF34+ixofGL/5edLFv/OK16OK+8Ysno4v94xcvRhd7ohcjungiiiyjiwfGL56KLh4cv3hi4jD65EdJ5cQbc/OPgjo0Ac35WhbW/yQo52WYF8IXQqgIYX4Is0JYEMLCEBaFsDiEU0JYEsLSEJaFEAtheQgrQqgMoSqEL4ZQHcKpIZwWQk0I8RASISRDqA3h9BBSIZwRQjqEuhAyIawMoT6EVSGcGcLqENaE8KUQGkL4cghnhbA2hLNDOCeEc0NYF8L6ELIhnBfCV0I4P4QLQrgwhItCmB3CxSFcEsKlIWwIYWMIm0K4LIRcCJeHcEUIm0O4MoR8CFeFUAjh6hCuCWFLCNeGcF0IxRC2hrAthOtDuCGEG0O4KYSbQ7glhO0h3BrCbQE050+n64jRdcToOmJ0HTG6jhhdR4yuI0bXEaPriNF1xOg6YnQdMbqOGF1HjK4jRtcRo+uI0XXE6DpidB0xuo4YXUeMriNG1xGj64jRdcToOmJ0HTG6jhhdR4yuI0bXEaPriNF1xOg6YnQdMbqOGF1HjK4jRtcRo+uI0XXE6DpidB0xuo4YXUeMriNG1xGj64jRdcToOmJ0HTG6jhhdR4yuI0bXEaPriNF1xOg6YnQdMbqOGF1HjK4jRtcRo+uI0XXE6DpidB0xuo4YXUeMriNG1xGj64jRdcToOmJ0HTG6jhhdR4yuI0bXEaPriNF1/P/s3XtgXOV5IHzJ1vgW30a+zCgMI8Yi3DzYEARYwghhwBjEAOMBDyMkWzFNWzkQXNtyGe7YIGxjfMNcDdgIsHxbulsru9t23dZpu6m2rdQ2qdR2L2027V67aXa7271W+2lmjpXzK5SPpPl6+Ur+yKufbXzRnPd5nvd533POQlYdC1l1LGTVsZBVx0JWHQtZdSxk1bGQVcdCVh0LWXUsZNWxkFXHwsqq43PhF8i0fSX0X1cwO4w5YcwNY14Y88NYEMbtYcTCiIdxVxh1YUwLY0YYM8OYFcb6MKJh1IbxQBgLQ+jJXPTpkZi/iUdiMveUlkK/Wt37N+9wTOlcyLZPT8l8gpPbF5fnVukavLi0ur299JH+zKTgSr639FdeOf7FV0o/8qXxLwbK69RLSsdaSj9+oHys5dLy73HutsEs5/uylVNtl/EIusv4JRU9ih5Dj6Aiehw1oSfQk+gp9DSaiuagZ9A2tB09ix5CKbQSrULPoV70PNqBdqIH0UaURrvQGvQCyqPdaCl6Ee1Be9E+tB8dQC+hRjQZHUTL0CRUjSJoMZqFpqCX0SvoVfQaeh29gQ6hN9Fb6G10GB1B76A+9C6qQu+h6WgGWo02oc1oC+pBW9H7aAM6ivrRMXQcnUA16CSahmai2WguiqIYmocWogVoPqoLqyezmObht0q/4vwQejLpc1H7/ppS1L6cVXoDq/QGVukNrNIbWKU3sEpvYJXewCq9gVV6A6v0BlbpDazSG1ilN7BKb2CV3sAqvYFVegOr9AZW6Q2s0htYpTewSm9gld7AKr2BVXoDq/QGVukNrNIbWKU3sEpvYJXewCq9gVV6A6v0BlbpDazSG1ilN7BKb2CV3sAqvYFVegOr9AZW6Q2s0htYpTewSm9gld7AKr2BVXoDq/QGVukNrNIbWKU3sEpvYJXewCq9gVV6A6v0BlbpDazSG1ilN7BKb2CV3sAqvYFVegOr9AZW6Q2s0htYpTewSm9gld7AKr2BVXoDq/QGVukNrNIbWKU3sEpvYJXewCq9gVV6A6v0BlbpDazSG1ilN7BKb2CV3sAqvYFVegOr9AZW6Q2s0htYpTewSm+orNKXECpThMoUoTJFqEwRKlOEyhShMkWoTBEqU4TKFKEyRahMESpThMoUoTJFqEwRKlOEyhShMkWoTBEqU4TKFKEyRahMESpThMoUoTJFqEwRKlOEyhShMkWoTBEqU4TKFKEyRahMESpThMoUoTJFqEwRKlOEyhShMkWoTBEqU4TKFKEyRahMESpThMoUoTJFqEwRKlOEyhShMkWoTBEqU4TKFKEyRahMESpThMoUoTJFqEwRKlOEyhShMkWoTBEqU4TKFKEyRahMESpThMoUoTJFqEwRKlOEyhShMkWoTBEqU4TKFKEyRahMESpThMoUoTJFqEwRKlOEyhShMkWoTBEqU4TKVCVULqWh+VOh/7qC2WHMCWNuGPPCmB/GgjBuDyMWRjyMu8KoC2NaGDPCmBnGrDDWhxENozaMB8JYGEJP5opzlfjJcv/kSu4wrZocDqNVtDUqOh81o01oOWpBN6BJqBVtRvVoBboJXYBuRotQCjWgC9EqdBFqQ1vQHSiOLkFrURbl0L0oje5Bl6M1aAlaiq5AV6L7UA+6Ci1DjaiArkb3ow60FV2DOtG1qCusnszny5d+qbu6tbo31NieaJhOtD4nuvAT/fmJVuy57nMmW+pe5j/y1FamULrb74re77aNezJXlf/wunH/SOmP+v3xLw7XlANJVWagpjy5qzKv1ZSnb1XmD6vL8aIqc2RSOY5VZQ5NKoetqkxdqcv6h+NfPD+pHLuqMo+VvviDUgN2Ujl8VGX+ZFI5qFRl/ri6HMWqMotKv/O/H//i31SXg1zV+BJ+/Is/KnVgy3+/xvLfb+JbUdp1+O3JH//P5M7FP/c9/dCti5nu0m9Uw3d34nu5ofRzY5PD3+dHx78YmhR8LzO/Wm4FX13+O/546VtX3VvZzKgq/UsfKm1elH7kwfFve7K3Eu5+ovQDD4//wKLSf3pN+T891+l9l+c0vstz8N7luXTvcldjRY+gInocNaEn0JPoKfQ0mormoGfQNrQdPYseQim0Cj2HetHzaAfaiR5EG1Ea7UJr0Asoj3ajpehFtAftRfvQfnQAvYQa0WR0EC1Dk1A1iqDFaBaagl5Gr6BX0WvodfQGOoTeRG+ht9FhdAS9g/rQu6gKvYemoxloNdqENqMtqAdtRe+jDego6kfH0HF0AtWgk2gamolmo7koimJoHlqIFqD5qC6snsy1P9BDzf91/ItN4T3zTEcpETz5Sc85f5Jd8g8fay4lsiUfeb65fAd/5rUfwEnnj9m//us96fyhpxb8lRx5Xla+bEovsfnJ6nIIrMr8evl5/E00wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtI0wtKVRlhzKVRmWs6Vj72l9W7mBtkKJ2ZUb2VtfB03e/yPUKytYEYYnwljZhizwpgSxuww5oQxN4xoGLVhzAtjfhgLwlgYRiyMeBh1YXw2jPPCSIRxfhjJMOrDuCCMVBiLwmgI48IwPhfGRWFcHMYlYVwaxmVhLA4jHcblYSwJY2kYV4RxZRifD+OqMBrDuDqMa8K4NoxlYTSF0RzGdWEsD+P6MFrCuCGM1jCmhnFjGCvCuCmMm8O4JYyVYdwaxqowbgvj9jDawrgjjEwYd4ZxVxh3h5ENY3UYuTDuCePeMNaEkQ/jvjAKYbSHcX8YHWF0hrE2jHVhdIXQk1nOW0EOsR47RFflEF2VQ6zVDtHFOUTH5RCr8kP0Sg7RKzlEP6Six9DzaC16EB1Fi1E/KqI0moV2oWPoBTQF7UZL0YtoH9qPDqCXUCM6iLaiZ9Ay9DhqQtPRE2gTmoo2oznoOKpG29B29CxaiVahE+g5tAXVoB3oJNqJqtAMtBHl0Gp0GK1BebQHRVAPmoweRXvRW2gBege9jF5Fh9A89CaKoZkoil5Br6HZ6A00H72NjqA+tBDNRa+jOjQNvRtWT+b6cog99607Rag8xaVxioB0ikvjFN+QU3wAp/iHneKbdYqP8RT/6FNcRKf4Z57i23qKj/gUl9QpPuJTXFKn+ABO8e05RYA/RUg/RdB5nt5ERdVoCloZVk+mhdPrH/At/4B/ygf8lT7go/qAD+cDIuYHRMwPiJEfkEU/IIt+QKb8gPj5ARHzA6L3B8TID4iRHxAjK3oIpdBKtAo9h3rR82gH2okeRBtRGu1Ca9ALKI92o6XoRbQH7UX70H50AL2EGtFkdBAtQ5NQNYqgxWgWmoJeRq+gV9Fr6HX0BjqE3kRvobfRYXQEvYP60LuoCr2HpqMZaDXahDajLagHbUXvow3oKOpHx9BxdALVoJNoGpqJZqO5KIpiaB5aiBag+agurJ7MDd//PX6f4N6+7+Wevk+yS/EX3rv34WewTGxITGxRfHhnYuKGvI++D29T6b/6mEdTT+xVTOxeTOxnfJK7776n/YxPcvscd839IUcI/gqe7vKDv0eutXxtnutN384tP7dXenU3TtxGVz79cO7QQ+lcxOuhQw/lUxCvlX6gdD7iYHlPZYX/aeknjvz5gxN7w79H6Td9o/yf3lTuMXaW9mcemFSOX+NXbOmLPxn/4ouTggt0w7nb+e6fuMPv7nP382UnBb/hT5Z+bn3p524v/dB/Gf9i1aTQH7p6fLzou3+rnszN586wvVM+w3YLO0NZdoayVF9Zdoay7Axl2RnKUpll2RnKsjOUZWcoy85Qlp2hLDtDWXaGsuwMZdkZyrIzlGVnKMvOUJadoSw7Q1l2hrLsDGXZGcqyM5RlZyjLzlCWnaEsO0NZdoay7Axl2RnKsjOUZWcoy85Qlp2hLDtDWXaGsuwMZdkZyrIzlGVnKMvOUJadoSw7Q1l2hrLsDGXZGcqyM5RlZyjLzlCWnaEsO0NZdoay7Axl2RnKsjOUZWcoy85Qlp2hLDtDWXaGsuwMZdkZyrJuybIzlGVnKMvOUJadoSw7Q1l2hrLsDGXZGcqyM5RlZyjLzlCWnaEsO0NZdoay7Axl2RnKsjOUZWcoy85Qlp2hLDtDWXaGsuwMZdkZyrIzlGVnKMvOUJadoSw7Q9nKanJlsLte+cFa7jyt5X7EWu5ArK2kmluJtDkibY5ImyPS5oi0OSJtjkibI9LmiLQ5Im2OSJsj0uaItDkibY5ImyPS5oi0OSJtjkibI9LmiLQ5Im2OSJsj0uaItDkibY5ImyPS5oi0OSJtjkibI9LmiLQ5Im2OSJsj0uaItDkibY5ImyPS5oi0OSJtjkibI9LmiLQ5Im2OSJsj0uaItDkibY5ImyPS5oi0OSJtjkibI9LmiLQ5Im2OSJsj0uaItDkibY5ImyPS5oi0OSJtjkibI9LmiLQ5Im2OSJsj0uaItDkibY5ImyPS5oi0OSJtjkibI9LmiLQ5Im2OSJsj0uaItDkibY5ImyPS5oi0OSJtjkibI9LmiLQ5Im2uEmlXWVqX6ty3/3xpfSJcWpeK77fKpfVt5f/08PiPry7/7ararusttTyq2jp7Sy2MqraO8vezqm1tb3nZ1/bAeAGdKh0y/+HxLxaVvnhw/Ge+PT5+ubfUEqxq29RbaoVUtW3pLR/satvaW2p/VLUVe0sNk6q2R3tL7cGqtsd6S22YqrYne0sNkaq2p8bHPx4fn+4ttWCq2rb1ltotVW3P9paai1Vtz/WWmiNVbbt6Sw2bqrYXekstkKq23b3lM9tte8bH74yPB3tLjZKqtld6S+2TqrZXS//Q20knBdJJgXRSIJ0USCcF0kmBdFIgnRRIJwXSSYF0UiCdFEgnBdJJgXRSIJ0USCcF0kmBdFIgnRRIJwXSSYF0UiCdFEgnBdJJgXRSIJ0USCcF0kmBdFIgnRRIJwXSSYF0UiCdFEgnBdJJgXRSIJ0USCcF0kmBdFIgnRRIJwXSSYF0UiCdFEgnBdJJgXRSIJ0USCcF0kmBdFIgnRRIJwXSSYF0UiCdFEgnBdJJgXRSIJ0USCcF0kmBdFIgnRRIJwXSSYF0UiCdFEgnBdJJgXRSIJ0USCcF0kmBdFIgnRRIJwXSSYF0UiCdFEgnBdJJgXRSIJ0USCcF0kmBdFIgnRRIJwXSSaGSTtq4t/FnQv91BbPDmBPG3DDmhTE/jAVh3B5GLIx4GHeFURfGtDBmhDEzjFlhrA8jGkZtGA+EsTCEnswd5JM8+SRPPsmTT/Lkkzz5JE8+yZNP8uSTPPkkTz7Jk0/y5JM8+SRPPsmTT/Lkkzz5JE8+yZNP8uSTPPkkTz7Jk0/y5JM8+SRPPsmTT/Lkkzz5JE8+yZNP8uSTPPkkTz7Jk0/y5JM8+SRPPsmTT/Lkkzz5JE8+yZNP8uSTPPkkTz7Jk0/y5JM8+SRPPsmTT/Lkkzz5JE8+yZNP8uSTPPkkTz7Jk0/y5JM8+SRPPsmTT/Lkkzz5JE8+yZNP8uSTPPkkTz7Jk0/y5JM8+SRPPsmTT/Lkkzz5JE8+yZNP8uSTPPkkTz7Jk0/y5JM8+SRPPsmTT/Lkkzz5JE8+yZNP8uSTPPkkX8knmXMt9L5yC/3OcuQsP1ZvUiho7iBoVlSNpoTVk7mrvCtwYamX/83q0G+0k99oJ7/RTn6jis6dTTjFvvApTiqc4qTCKU4qnOKkwkcdW3kafdzRlKnIoylz0McdP3kGbUPbkQdVnkUrUQqtQp/8SMtzqBd5wOV5tAPtRBvRJz8itAutQR4RegF93BGhPNqNlqIXkUeL9qC9aB/ajw6gl1Ajmow8oHQQeQjJY0fLwurJ3O2tAE+Xz/7fK9fAicz5dKXnm6WoilBURZjWEYqqCEVVhKIqwpSPUFRFKKoiFFURiqoIRVWEoipCURWhqIpQVEUoqiIUVRGKqghFVYSiKkJRFaGoilBURSiqIhRVEYqqCEVVhKIqQlEVoaiKUFRFKKoiFFURiqoIRVWEoipCURWhqIpQVEUoqiIUVRGKqghFVYSiKkJRFaGoilBURSiqIhRVEYqqCEVVhKIqQlEVoaiKUFRFKKoiFFURiqoIRVWEoipCURWhqIpQVEUoqiIUVRGKqghFVYSiKkJRFaGoilBURSiqIhRVEYqqCEVVhKIqQlEVoaiKUFRFKKoiFFURiqoIRVWEoipCURWhqIpQVEUoqiIUVRGKqghFVYSiKkJRFalUP6u5a+p/hyJlBTPC+EwYM8OYFcaUMGaHMSeMuWFEw6gNY14Y88NYEMbCMGJhxMOoC+OzYZwXRiKM88NIhlEfxgVhpMJYFEZDGBeG8bkwLgrj4jAuCePSMC4LY3EY6TAuD2NJGEvDuCKMK8P4fBhXhdEYxtVhXBPGtWEsC6MpjOYwrgtjeRjXh9ESxg1htIYxNYwbw1gRxk1h3BzGLWGsDOPWMFaFcVsYt4fRFsYdYWTCuDOMu8K4O4xsGKvDyIVxTxj3hrEmjHwY94VRCKM9jPvD6AijM4y1YawLoyuEnkyOR371U8b0U8b0U8b0U971U7T1U+L0U+L0U+L0U+L0U+L0U+L0U+L0U9D1U9D1U/70U/70U/70U/70U/70U/70U/70U/70U8z2Uwz1Uwz1U+j2Uxr1Uxr1Uxr1Uxr1Uxr1U/b2Uyj1Uyj1U+j2Uzb1Uzb1Uzb1UzZVNB01o+vQcnQ9akE3oFY0Fd2I5qC5aAW6Cd2MbkHz0Ep0K1qFbkO3ozZ0B4qhDLoTxdFdqA7djaahLJqBVqOZKIfuQfeiNSiP7kNRVEDt6H7UgTrRWrQOdYXVk7nnk573Lj0B5eeqe/+WvNyl9OKRr5X+tv+/ecvL37h3u3z6Spfejz+ufi+1xdeoLb5GbfE1aouKNqDPoNkoierRBWFlmqr5yRRahBrQhWg+WoA+hy5CF6NL0KXoMrQYpdEsdDlagqagpegKdCX6PLoK1aJGdDVayAfR7AdxDboWLUNNaDpqRteh5eh61IJuQK1oKroRzUFz0Qp0E7oZ3YLmoZXoVrQK3YZuR23oDhRDGXQniqO7UB26G01DWTQDrUYzUQ7dg+5Fa1Ae3YeiqIDa0f2oA3WitWgd6gqrJ7OmHCzPfRxreObvGp62vIYn5K7hKb9reL7yGp6Ju4ZnDK/hKbhrKu39fPkvUTMewR+d/N0Lru2XSr+0Oox0CD2Z+wj0gwT6QQL9IIF+kNA+SGgfJLQPEtoHCe2DxPJBYvkgsXyQWD5ILB8klg8SyweJ5YPE8kFi+SCxfJBYPkgsHySWDxLLB4nlg8TyQWL5ILF8kFg+SCwfJJYPEssHieWDxPJBYvkgsXyQ4D1I8B4keA8SvAcJ3oME70GC9yDBe5DgPUjwHiR4DxK8BwnegwTvQYL3IMF7kOA9SPAeJHgPErwHCd6DBO9BgvcgwXuQ4D1I8B4keA8SvAcJ3oME70GC9yDBe5DgPUjwHiR4DxK8BwnegwTvQYL3IMF7kOA9SPAeJHgPErwHCd6DBO9BgvcgwXuQ4D1I8B4keA8SvAcJ3oME70GC92AleBcmTkysn9RbeU7lBeUSuL38E+ei32mi32li2mli2mli2mmi2Gki1Wli02li02lizGmiymlixWlixWniwWkiwGnm/Gnm/Gnm9Wlm8mlm8mlm8mlm62nm52nm4Gnm2Wnm2Wnm2Wnm2Wnm0mnm0mnm0mnm0mnm0mnm0mnm0mnmy2lmyGlmwWmu7dNcv6e5fk9zjZ7mGq3os+g89Bk0GyXRInQhmo8+hy5Bl6LL0GI0Cy1BU9BS9Hl0FWpEC9Ey1ISaUQu6AU1Fc9BcdBO6Ga1Ct6G7UB2ahmag1SiH7kH3ojy6D7Wj+9FatA51hfXdBffpSqC8n/Mji4gXi/iXLeIaXsQMWsRVtIjrZhFX+yI+q0V8VouYeYuIeYuILIuYCYuIv4u43hYRPRYRIRbxqS5i/i5i/laUQOejJKpHF6AUWoQa0IXoc+gidDG6BF2KLkOLURpdjpagpegKdCX6PLoKNaKr0TXoWrQMNaFmdB1ajq5HLegG1IqmohvRCnQTuhndglaiW1+uqaquKv2PH16FbkO3ozZ0B8qgO9Fd6G6URatRDt2D7kVrUB7dhwqoHd2POlAnWovWoS70BbQePRBWT6YjvLpuOxMKFBUkwjg/jM+EMTuMZBj1YVwQRiqMRWE0hHFhGPPDWBDG58K4KIyLw7gkjEvDuCyMxWGkw5gVxuVhLAljShhLw7gijCvD+HwYV4VRG0ZjGFeHsTCMa8K4NoxlYTSFMT2M5jCuC2N5GNeH0RLGDWG0hjE1jBvDmBPG3DBWhHFTGDeHcUsY88JYGcatYawK47Ywbg+jLYw7woiFkQnjzjDiYdwVRl0Yd4cxLYxsGDPCWB3GzDByYdwTxr1hrAkjH8Z9YUTDKITRHsb9YXSE0RnG2jDWhdEVxhfCWB/GAyH0ZDq9E7q0k7kxeM5PW6y3fGt024Le794Z/dD4eEEvzy1qu7B34jFAPZm15d+wtOI+WtqGmlTafizfOL3u+3+Q1/exn1vab/2F7/UJX9/Pxu6n+7mf7uf+Ne3ndgVTrVKdLOQd9Qt5GFlFh9EMtBbl0KPoMfQIKqLHURN6Aj2JnkJPo6loDtqGtqNn0UMohVaiVeg51IueRzvQTvQg2ojSaBdag15AebQbLUUvoj1oL9qH9qMD6CXUiCaHVbr7LPyTB9EzaBlajSahCFqMZqGX0SvoVfQaeh29gQ6hN9Fb6G10BL2D+tC7qAq9h6ajBego6keb0HE0D51AW1AMnUQzURS9jzag2Wg+OoYWoq1oM5qL6tA01BNWT+YLE8XNPaVXYc4pffU75w6jnThX7/xUud5ZzybsWRpKZ2konaWhdJZG21naZ2dpNp2l2XSWZtNZmk1naTadpdl0lmbTWVprZ2mtnaURdZZG1FkaUWdpRJ2lEXWWRtRZGlFnaUSdpa14lrbUWdpSZ2k5nqVJdZYm1VmaVGdpUp2lSXWWBuRZWlZnaVmdpeV4lgbWWRpYZ2lgnaWBVdF01IyuQ8vR9agF3YBa0VR0I5qD5qIV6CZ0M7oFzUMr0a1oFboN3Y7a0B0ohjLoThRHd6E6dDeahrJoBlqNZqIcugfdi9agPLoPRVEBtaP7UQfqRGvROtQVVk/mgY9e8J2Lnj/olV9pxTdcqtODJWAlOv9mde+na8C/a2vAUhL+eumv+ndoMfhD7OQtIZksIRgtocBYQjBaQspdQlpdQimyhBSxhBSxhPCzhES6hDSwhHJjCeXGEtLqEsL5EkL2EoJ0RZ9F56EEOh8lUT26AKXQItSALkSfQxehi9El6FJ0GVqM0uhytAQtRVegK9Hn0VWoEV2NrkHXomWoCTWj69BydD1qQTegVjQV3YhWoJvQzegWtBLdilah29DtqA3dgTLoTnQXuhtl0WqUQ/ege9EalEf3oQJqR/ejDtSJ1qJ1qAt9Aa1HD4TVk/li6fE64yVA28bS03V+mHXaGcLFGcLFGcLFGcLoGYLjGULJGULJGULJGULJGULJGULJGULJGQLnGQLnGcLMGcLMGcLMGcLMGcLMGcLMGcLMGcLMGZLGGYLOGYLOGRLKGULQGULQGULQGULQGULQGdLLGQLSGQLSGRLKGcLTGcLTGcLTGcJTRdNRM7oOLUfXoxZ0A2pFU9GNaA6ai1agm9DN6BY0D61Et6JV6DZ0O2pDd6AYyqA7URzdherQ3WgayqIZaDWaiXLoHnQvWoPy6D4URQXUju5HHagTrUXrUFdYPZkf4UWdR3gd0REe3HWEB3cd4VVFR3iM1xEe43WEl1JV9BBKoV70GHoerUUPoqNoMepHRZRGs9AudAy9gKag3WgpehHtQ/vRAfQSakQH0Vb0DFqGHkdNaDp6Am1CU9FmNAcdR9VoG9qOnkUr0Sp0Aj2HtqAatAOdRDtRFZqBNqIcWo0OozUoj/agCOpBk9GjaC96Cy1A76CX0avoEJqH3kQxNBNF0SvoNTQbvYHmo7fREdSHFqK56HVUh6ahd8Pqyfxo8J7IysPi/9zD4T/0KPhzj3p/fHxx/9VSs+HcM97PPdP9zz27vSfTfe6BkYOTSyXthvIft3Hcv1AdmtTruHjXMcXXEUDXEfbXEfbXEdrXETLXESTXcSmvI0iuI1CsIyyuI1Cs46JfRwhbR8hcR9hYR9hYR9hYRwBdR6hdR6hdR7Jax7RaR7hZRyJbR2BaR1pbxwRcR7hZR6pcxxRfR5BcR1pbR7JaRwpaR5iq6D00Hc1Aq9FhtAltRltQD9qK3kcb0HF0AtWgk+go6kfHwurJfOmjZ0sns6WT2dLJbOlktnQyWzqZLZ3Mlk5mSyezpZPZ0sls6WS2dDJbOpktncyWTmZLJ7Olk9nSyWzpZLZ0Mls6mS2dzJZOZksns6WT2dLJbOlktnQyWzqZLZ3Mlk5mSyezpZPZ0sls6WS2dDJbOpktncyWTmZLJ7Olk9nSyWzpZLZ0Mls6mS2dzJZOZksns6WT2dLJbOlktnQyWzqZLZ3Mlk5mS2dltjxYni1bS73y8dmSubi0yXJV6R2Bl5TebPJn5X9KVSY5qfzvrcpEqsv/nKrMn1b3Vhrzvzip/I+vyswo/feXlv6rr45/cVnpi6+X/oSHyn9C4/ivuCs8H3+UGVjRE+hJ9BR6Gk1Fc9AzaBvajp5FD6EUWolWoV70PNqBdqIH0UaURrvQGvQCyqPdaCl6Ee1B+9B+dAC9hCajg2gvmoSqUQQtRrPQFFSF3kPT0Qy0Gh1Gm9BmtAX1oK3ofbQBHUX96Bg6jk6gGnQyrJ7Ml8vzcfX4fNxVHbruvlQdvuq/RJ/oS/QHv1TpMzzMccVv8UF+i0v6W3wg3+LD+lblL7Wx/JuV9sH+YFLosmrl92llYrZykbUSMlqZpq1MolamTSsBpJVLrpXLsZV/YSuXYyuXYyv/wlb+9a1cjq1cjq1cjq1cjq1cjq1cZK1cnK1cjq1cqq1cjq1cjq1cjq1cZK1cZK1cZK1cZK1cxq1cxq1cxq2VT/7Hyp/8uX/Kfo6v7edw4H6OqO3nINh+Dontrxzv2vTRlWAH0beDPNTBBdfBRdVBHuogD3VwiXUQpzu44DqI0x1cfh1E5g6yWQeRuYPc1kGc7iDTdZDpOsh0HUTtDuJ7B/G9g6nXwdTrIAt2kC87mIgdZMgOMkEHGbKDydbBtOxgWnYwETuYiB1MxA4mYgcTsYOJ2MFE7GAidjARO5h6HUy2DiZiB1O2g4nYwUTsYCJ2MBE7mIgdTMQOJmIHE7GDidjBROyoTMTN5dny5Pg3aCR0uTbzwTczPZq5eJv5qJuZEM18gM18gM181M18gM18gM181M18nM18nM18nM18nM18nM18nM18SM18gM18uM188M18nM18nM18nM18nM18nM18nM18nM18nM18nM18nM2Vj3MLB0jmsss1l12Suex8zmWXZC57gXPZ75vLHulc9q7msnc1l32RuezwzWV/ai77oHPZB53Lft9c9pnmspc0l92jij6LzkMJdD5Konp0AUqhRagBXYg+hy5CF6NL0KXoMrQYpdHlaAlaiq5AV6LPo6tQI7oaXYOuRctQE2pG16Hl6HrUgm5ArWgquhGtQDehm9EtaCW6Fa1Ct6HbURu6A2XQnegudDfKotUoh+5B96I1KI/uQwXUju5HHagTrUXrUBf6AlqPHgirJ9NTDpXnysP1FITrKQHXUwKupwRcTzZcT/G2npJsPSXZekqy9eTb9RRT68mw6ym71lNaraeYWk/Bu54cXtFGlEa70Br0AlqK9qC9aB/ajw6gl9Bk9AyahCKoGi1Gs9AUVIXeQ9PRDLQaHUab0Ga0BfWgreh9tAEdRydQDTqJjqJ+dCysnsxWpsxmpkxFT6An0VPoaTQVzUHb0Hb0LHoIpdBKtAo9h3rR82gH2okeRBtRGu1Ca9ALKI92o6XoRbQH7UX70H50AL2EGtFkdBA9g5ahSagaRdBiNAtNQVXoPTQdzUCr0WG0CW1GW1AP2oreRxvQUdSPjqHj6ASqQSfD6sn8+F+mz/8Xt/fLWwA/W75B7hH6gQluX05w+3KC25cT3L6c4PblBLcvJ7h9OcHtywluX05w+3KC25cT3L6c4PblBLcvJ7h9OcHtywluX05w+3KC25cT3L6c4PblBLcvJ7h9OcHtywluX05w+3KC25cT3L6c4PblBLcvJ7h9OcHtywluX05w+3KC25cT3L6c4PblBLcvJ7h9OcHtywluX05w+3KC25cT3L6c4PblBLcvJ7h9OcHtywlvX05w+3KC25cT3L6c4PblBB3KBLcvJ7h9OcHtywluX05w+3KC25cT3L6c4PblBLcvJ7h9OcHtywluX05w+3KC25cT3L6c4PblBLcvJ7h9OcHtywluX05wW3CC24IT3Bac4LbgBLc9J7jtOcFtzwluIE5wA3GC3nCCDnOCLnKC24kT3Dyd4ObpBDdPJ+hMJ7h5OsHN0wluUU5wi3KCG6sT3LCc4DbrRKW/XSxH3IlbzSZuZip1vL/C/UkTd8z92PgXI+dunFpY+mLixqmJe8U+fCPfxB1dEzfanfvU/6iSXR4t/01+b/yHl5SjYlXbqtDF/g2S+DdI298gbX+DwuAbld/8MXYI9vH57WP+7eNz2Mdnu4+rYF/lO/h48GDZyg+eRyFyHkXDeRQN5/FvOI9i4zzKvPMq/4YnPnTzZOaVT3rT5MfcJDnxuX7MHZCf5M7HiTscJ+5onLiTceIGxonrbOIGxon7FifuSZy4FfGT3IE4cePhh28qnLjgJu4cnLhhcOKuQO4B/MPJvZ/sHsCPufXve7rjb+JGv4+5re+7d/M9WTrQVxznRTWlA31Pla+Gc8XK05PCxUpFOfQoegytRY+jJvQEehI9hZ5GU9Ec9AzahrajZ9FDKIVWolXoOdSLnkc70E70INqI0mgXWoNeQHm0Gy1FL6I9aC/ah/ajA+gl1Igmo4NoGZqEqlEELUaz0BT0MnoFvYpeQ6+jN9Ah9CZ6C72NDqMj6B3Uh95FVeg9NB3NQKvRJrQZbUE9aCt6H21AR1E/OoaOoxOoBp1E09BMNBvNRVEUQ/PQQrQAzUd1YfVkniazJ7igE3xUCT6qBJdwgo84QYBIVP6gZyaeTX9dTW/lcQivl2P+tvJP7Bj3xdXluFmVSVeXA2FVprG6HGWrMjfU9FbuFX++JhS9C8SsArG8QAQrEMsLxPICf90C8axAPCsQzwpE/QIRrEDMKhCzCsSsAhmhQEYoELMKRLcC0a1AtigQzwrkjgK5o0B+KJCrCsS6AtGtwIVSINYViHUFLpQCkaHAZVPgcitwuRWIDAWiVIE4USBOFIgMBaJGgThRIE4UiBMFZn+B2V9g9heY/QXiS4H4UiC+FCqTZPv3PxfamQvtzIV25kI7c6GdudDOXGhnLrQzF9qZC+3MhXbmQjtzoZ250M5caGcutDMX2pkL7cyFduZCO3OhnbnQzlxoZy60MxfamQvtzIV25kI7c6GdudDOXGhnLrQzF9qZC+3MhXbmQjtzoZ250M5caGcutDMX2pkL7cyFduZCO3OhnbnQzlxoZy60MxfamQvtzIV25kJ7ZS48O5Ewfr6ahPEcJza2c2JjOyc2trPDuZ0TG9s5sbGd3c/tnNjYzomN7ZzY2M6Jje2c2NjOiY3t7Khu5/zGds5vbOf8xnZ2qLez672dsx3bOduxnbMd2ys7uL3lb13pUSuRcOx4iGhR0RPoSfQUehpNRXPQM2gb2o6eRQ+hFFqJVqHnUC96Hu1AO9GDaCNKo11oDXoB5dFutBS9iPagfWg/OoBeQo1oMjqI9qJJqBpF0GI0C01BVeg9NB3NQKvRYbQJbUZbUA/ait5HG9BR1I+OoePoBKpBJ8PqGc/u3/eDoz/BY8O+l2eDfZLO2F/4DLDvr1M28WCvj36e14bSf/Uxz/Oa6J1NdNMm+muf5Hle31Oj7ZM8meuvtwf3g3/q1o6/0oeaT1yrpWfd7Zn8yS7aTx9o97f/gXZ/h55jt/Oj78Hooh7pok7rojrpok7rok7rok7ronLponLponLponLpor7rolbpotrrolbpovbronLpohLsohLsohLsoo7pouLpouLpombsosbpokrsop7sop7sombsohrqombsojbqohrqolLqojbqojbqojbqojbqojbqojbqojbqojbqojbqojbqojbqojbqojbqojbqojbqojbqouLpouLpouLpouLpoqbqoqbqoqbqqtRGu3h4WU15yzKBzkfNaDlqQTegVrQC3YQuQDejRSiFGtCFaBVqQ3egOLoErUVZlEP3ojS6B12O1qAl6Ep0H7oKLUONqICuRveja9C1qCusnswL5Yvo3Px7nlMoFU1BVWhSWD2Z3aWdy9Lj0H+6urRz+aLvlwm9RiaTKWWAHy9VPaUvQi+UydxezgR7Pvo+8G5ifzdr9G5ifzexv5vY300M7yZqdxOnu4nM3UTmbiJzN/G2m5jaTUztJvp2E2G7WZV3E2G7yYLd5L1uVuXd5LZucls3ua2b3NbNqrybVXk3ma6bVXk3ma6b3NZNjuomR3WTzbrJUd2sw7vJPN3kmm6ySzeZp5tc002u6SbXdJNrusk13eSabnJNN7mmm1zTTa7pJtd0k2u6yTXd5Jpuck03uaabnNFNzugmZ3STlbrJSt1kpW6yUncl1+z961nr/GCWOKUV08WfrnU+Xev8TVrr7CvPqFKy/Kma8swcv4zKR6P3l3+i9O/eWh2+vib+KRN/qYlZMTFfPnQ+L5MtbRnkS18VSl9trv7IWXvug+zJHOBejYfJtw+Tbx8m3z5Mvn2YfPsw+fZh8u3DZNiHybAPk2EfJsM+TIZ9mAz7MBm2oudQL3oe7UA70YNoI0qjXWgNegHl0W60FL2I9qC9aB/ajw6gl1AjmowOomfQMjQJVaMIWoxmoSmoCr2HpqMZaDU6jDahzWgL6kFb0ftoAzqK+tExdBydQDXoZFg94/k4PGF7mbC9TNheJmwvE7aiR9DTaCqag55B29B29Cx6CKXQSrQKPYd60WPoebQD7UQPoo2oiHIojXahNegFlEe70VL0ItqD9qJ9aD86gF5CjWgyehQdRGvRMjQJVaMIWoxmoSnoZfQKehW9hl5Hb6BD6E30FnobHUZH0DuoD72LqtB7aDqagVajTWgz2oJ60Fb0PtqAjqJ+dAwdRydQDTqJpqGZaDaai6IohuahhWgBmo/qwurJHCyH2HMBoonw1EQQaCKsNXGxNzERmpgkTVz6TUyLJiZCE5dNE5dNE5dNE5dNE5dNE5dwE5dGE5dNE5dUE5dbExdREx9xExdDExdYExdYExdKE5dGExdfExdfExdfU+WjevmjdxDWEvArakIPoifRU+hplEa70Br0ApqKlqI5aA96Bu1D29B29Cx6Ce1HB9BDaDJahVJoJepFe9EONAlFUDVajGahKagKvYemoxloNTqMNqHNaAvqQVvR+2gDOo5OoBp0Eh1F/ehYWD2ZV76vR1P/vzyReiIiN3PDWjO37jVzg1wzN7M1c/NjM7fnNXOTXzM3ADZzK11Fc9BcVBdWT+bV4JtR+cE/KX+/cuhR9Bh6BBXR46gJPYGeRE+hp9FUNAc9g7ah7ehZ9BBKoZVoFXoO9aLn0Q60Ez2INqI02oXWoBdQHu1GS9GLaA/ai/ah/egAegk1osnoIFqGJqFqFEGL0Sw0Bb2MXkGvotfQ6+gNdAi9id5Cb6PD6Ah6B/Whd1EVeg9NRzPQarQJbUZbUA/ait5HG9BR1I+OoePoBKpBJ9E0NBPNRnNRFMXQPLQQLUDzUV1YPZnXyiF27nh19sXq8p9RlXmmuvzLqjKfLbcfX59ofv7O5N6DmQWlnuX1tNk/3Ab9i7ufn+Tu5J7MG+U/c+e4f2lSeUZXZR4KP1d2BeFpBaFyBZN5BYFzBSF9BWF0BWFtBYFsBQF+BRN9BUFgBQFiBUFgBUFgBUFgBVNmBVNmBVNmBVNmBVNmBdN3BdNiBdNpBRNoBZNrBRNoBRNoBRNoBdNiBdNiBdNiBdNiBRNvBRNvBRNvReUyPUQl8GvlX5JDj6LH0COoiB5HTegJ9CR6Cj2NpqI56Bm0DW1Hz6KHUAqtRKvQc6gXPY92oJ3oQbQRpdEutAa9gPJoN1qKXkR70F60D+1HB9BLqBFNRgfRMjQJVaMIWoxmoSnoZfQKehW9hl5Hb6BD6E30FnobHUZH0DuoD72LqtB7aDqagVajTWgz2oJ60Fb0PtqAjqJ+dAwdRydQDTqJpqGZaDaai6IohuahhWgBmo/qwurJvMmxox0cO9rBsaMdHDvawbGjHZWV21vl3+xcFH6v/OetRTn0KFqJHkFF9DhqQk+gJ9FT6Gk0Fc1Bz6BtaDt6Fj2EUmgVeg71oufRDrQTPYg2ojTahdagF1Ae7UZL0YtoD9qL9qH96AB6CTWiyeggWoYmoWoUQYvRLDQFvYxeQa+i19Dr6A10CL2J3kJvo8PoCHoH9aF3URV6D01HM9BqtAltRltQD9qK3kcb0FHUj46h4+gEqkEn0TQ0E81Gc1EUxdA8tBAtQPNRXVg9mbcnTqv8cmntNbEI+5gFVmkR9+3ScwDTpUXcD5VWVBOLuA+v3SbOskys3c6t5noyh/3DS7/0yxO/8d8r/5Ijf6vuE/tLPkGpdKCrt/RTf8lHKX1/t3r9HbrD653yVTW59CtKv/RcnltO5l5OLltOBl5ONbCcemM5+XE5WWE5GWM52WQ5OWI5OWI52WQ58XU58XU58XU58XU58XU5sX45MXQ5sXc50XY5kXg50XY50XY50XY5MXQ5MXQ5MXQ5MXQ5UXo5UXo5UXp5Jab1scz/9fIvyaFH0WPoEVREj6Mm9AR6Ej2FnkZT0Rz0DNqGtqNn0UMohVaiVeg51IueRzvQTvQg2ojSaBdag15AebQbLUUvoj1oL9qH9qMD6CXUiCajg2gZmoSqUQQtRrPQFPQyegW9il5Dr6M30CH0JnoLvY0OoyPoHdSH3kVV6D00Hc1Aq9EmtBltQT1oK3ofbUBHUT86ho6jE6gGnUTT0Ew0G81FURRD89BCtADNR3Vh9WTeLYfYczeCFSeHA2eRm68qehQV0eXoMRRHa1EEPY6a0BPoSfQUehpNRXPQNrQdPYseQim0Eq1Cz6Fe9DzagXaiB9FGlEa70Br0Asqj3WgpehHtQXvRPrQfHUAvoUY0GR1Ez6BlaBKqRovRLDQFvYxeQa+i19Dr6A10CL2J3kJvo8PoCHoH9aF3URV6D01HM9BqVIM2oc1oC+pBW9H7aAM6ivrRMXQcnUAn0TQ0E81Gc1EUzUML0QI0H8VQXVg9mfd4ZFSRR0YVeWRUkZd8FXlkVJFHRhV5yVeRR0YVeWRUkUdGFXlkVJFHRhV5ZFSRh0QVeUhUkYdEFXkQVJEHQRV5EFSRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVedxZkZd8FXnJV5GXfBV5yVeRR6gVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRl3wVeclXkZd8FXnJV5GXfBV5yVeRR+AVecxdkUfSFSuPiHufB8JWsxCrZsFRzYKjmgVHNUvZapZl1Sxiqivl8tHvv4tZusf17b8Zt9t+6C7bUuf2ndIPfHq77ae32/41tXL7eVjKtMnhJF/R+agZLUct6AbUilagm9AF6Ga0CKVQA7oQrUJt6A4UR5egtSiLcuhelEb3oMvRGrQEXYnuQ1ehZagRFdDV6H50DboWdYXVkznGRZTjIqqoCZ2PmtFy1IJuQK2oHq1AN6EL0M1oEUqhBnQhWoUuQm3oDhRHl6C1KIty6F6URvegy9EatAQtRVegK9F96Cq0DDWiAroa3Y860DWoE12LusLqyRwvX6bnKpT7WQdX9CTagCahh1AK9aIH0VG0GPWjNJqFjqEpaD86gLai6WgTmoo2o+OoGq1EJ9AWVINOop2oCs1Aq9FhtAZFUA+ajPaG1ZM58dHVZ2mT/Z6PPkz9g3jYS2ZO6Q/40ve6zf791KGlGrn3e6pDSy8s/Ak26j8tSD8tSH8gBenJ8mw7MO6x6lD0bGFjtoWtwxa2jFvYpm1hrdnCRmkLG8gtbCS2sLZtYQOyhU3GFjYZW1jNtrCabWGF3MIKuYUVcgtbci1sD7aw7dbCdl0LG3QtbN61sEHXwgZdCxt0LWy7tbDt1sK2Wwvbbi1s7LWwsdfCxl5LZV1/ipMGvzcpXNlU9Ch6DD2Ciuhx1ISeQE+ip9DTaCqag55B29B29Cx6CKXQSrQKPYd60fNoB9qJHkQbURrtQmvQCyiPdqOl6EW0B+1F+9B+dAC9hBrRZHQQLUOTUDWKoMVoFpqCXkavoFfRa+h19AY6hN5Eb6G30WF0BL2D+tC7qAq9h6ajGWg12oQ2oy2oB21F76MN6CjqR8fQcXQC1aCTaBqaiWajuSiKYmgeWogWoPmoLqyezN8rPXq0VC++Pqn06NEPWKn3scPTxw5PHzs8fex89bGf1cfuTx+7P33s/vSx+9PH7k8fuz997P70sdfVx15XHztDfewM9bEz1MfOUB87Q33sDPWxM9THzlAf+3x97BP1sU/Uxx5gH7tGfewa9bFr1MeuUR+7Rn3sCPaxh9THHlIfe4B97Cj1saPUx45SHztKFU1Hzeg6tBxdj1rQDagVTUU3ojloLlqBbkI3o1vQPLQS3YpWodvQ7agN3YFiKIPuRHF0F6pDd6NpKItmoNVoJsqhe9C9aA3Ko/tQFBVQO7ofdaBOtBatQ11h9WR+gh5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QgR5QodL1+fucCtlGHNzGPNrGLuo25tE2ssU2dli3kUW3Ed22Ed22MXO2kQO2EcG2sWu7jby5jby5jfywjfiyjXi2jZi1jbi0jUi0rTLH/gFFxhhFxhhFxhhFxhhFxhjfnjGKjDGKjDGKjDGKjDGKjDGKjDGKjDG+WWN8s8YoMsYoMsYoMsYoMsYoMsYoMsYoMsYoMsa4bMYoMsYoMsYoMsYoMsYoMsYoMsYoMsYoMsa4wMYoMsYoMsa4iMYoMsYoMsYoMsYoMsaYXGMUGWMUGWMUGWMUGWMUGWMUGWMUGWMUGWMUGWNMwzGm4RhFxhhFxhhFxhhFxhhTdIwiY4wiY4wiY4wiY4xJOUaRMUaRMcaEHaPIGKPIGGMyjxEExpjaYxQZYxQZYxQZYwTHMYqMMYLjGEXGGEXGGEXGGEXGGEXGGEXGGKFyjCJjjCJjjCJjjCJjjCJjjCJjjCJjjCJjrBIAf9IXPDw8/sWPTy79xGke4/Lhh7dk5pea/lma/hO91r/4MS6V58FcXuqXftwDXQbKf3rpoTJPV5cv66rMzPJPfOVv81PsP314/d+1zYvSftXV3G77N24X4x9SAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1QAg1USqB/VA6A5/oC57HaP4+OxXms2s9jfX8eB6HO4+hTRY+ix9AjqIgeR03oCfQkego9jaaiOWgb2o6eRQ+hFFqJVqHnUC96Hu1AO9GDaCNKo11oDXoB5dFutBS9iPagvWgf2o8OoJdQI5ocVuZCL9eD6Bm0DK1Gk1AELUaz0MvoFfQqeg29jt5Ah9Cb6C30NjqC3kF96F1Uhd5D09H7aAOajeajBego6kfH0EK0FW1Cm9FcdBzNQyfQFhRDJ1EdmoZmoh4UDasn8485TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYphDlMMc5himMMUwxymGOYwxTCHKYY5TDHMYYrhymGKnyqF2MzcUrPtWKkDMNF/mOgXld6w8ZWPfpLXj41/xu/1VpofC/8Sj2X+aTamalg41rDwqKGZUMPCo4bldQ1L6BraDjUsB2tYDtaw1Khh0VzDkq+G1kINrYUaltA1LN1qWJ7VsCCr6LPoPJRA56MkqkcXoBRahBrQhehz6CJ0MboEXYouQ4tRGl2OlqCl6Ap0Jfo8ugo1oqvRNehatAw1oWZ0HVqOrkct6AbUiqaiG9EKdBO6Gd2CVqJb0Sp0G7odtaE7UAbdie5Cd6MsWo1y6B50L1qD8ug+VEDt6H7UgTrRWrQOdaEvoPXogbB6Mj9DqKwlVNYSKmsJlbWEylpCZS2hspZQWUuorCVU1hIqawmVtYTKWkJlLaGyllBZS6isJVTWEiprCZW1hMpaQmUtobKWUFlLqKwlVNYSKmsJlbWEylpCZS2hspZQWUuorCVU1hIqawmVtYTKWkJlLaGyllBZS6isJVTWEiprCZW1hMpaQmUtobKWUFlLqKwlVNYSKmsJlbWEylpCZS2hspZQWUuorCVU1hIqawmVtYTKWkJlLaGyllBZS6isJVTWEiprCZW1hMpaQmUtobKWUFlLqKwlVNYSKmsJlbWEylpCZS2hspZQWUuorCVU1hIqawmVtYTKWkJlLaGyllBZS6isJVTWEiprCZW1hMpaQmVtJVT+k3KoLG2EPVzayTq3mG1kYd3I0r2RhXUjC91GFnuNLPYaWRY2sthrZLHXyLKwkYVSIwulRhZKjSyUGlkoNbJoa2Qx1MhCqZFFVCMLrEaWTY0smxpZNjWyGGpkMdTIYqiRxVAjy61GlluNLLcaK4uTM+VPcMr4J/h7k0OxfvfkcHTfTbu7ovNRM1qOWtANqBXVoxXoJnQBuhktQinUgC5Eq9BFqA3dgeLoErQWZdFGlEP3ojS6B12O1qAlaCm6Al2J7kNXoWWoERXQ1eh+1IGuQZ3oWtQVVs/4sje8X/TZyeGJUdEUdBjNQGtRDj2KHkOPoCJ6HDWhJ9CT6Cn0NJqK5qBtaDt6Fj2EUmglWoWeQ73oebQD7UQPoo0ojXahNegFlEe70VL0ItqD9qJ9aD86gF5CjWhyWN/dL6r85EH0DFqGVqNJKIIWo1noZfQKehW9hl5Hb6BD6E30FnobHUHvoD70LqpC76Hp6H20Ac1G89ECdBT1o2NoIdqKNqHNaC46juahE2gLiqGTqA5NQzNRD4qG1ZP5uXIzs+XcNby9fEnfIFvhxITeXvkdfp5DTgvKRcl5KIHOR59Bs1ES1aMLUAotQg3oQjQfLUCfQxehi9El6FJ0GVqM0mgWuhwtQVPQUnQFuhJ9Hl2FalEjuhotRNega9Ey1ISmo2Z0HVqOrkct6AbUiqaiG9EcNBetQDehm9EtaB5aiW5Fq9Bt6HbUhu5AMZRBd6I4ugvVobvRNJRFM9BqNBPl0D3oXrQG5dF9KIoKqB3djzpQJ1qL1qGusHoyZyla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla6yla68lx9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9Rat9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RSt9RStZb286e6q8v8mqtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtd6qtf6Su35VavXJ8rX9r1yDZyY2U9UfodfKAfvraX7Dap7K4+0GijdgnNxaXv/qknjX10y/lXbn5X/dVWZ5KTyt64qE6ku/92qMn9aXf72VWVmlP6zS0u/+KvjX1xW+uLrpT/hFzmR9ftkwYoeRY+hR1ARPY6a0BPoSfQUehpNRXPQM2gb2o6eRQ+hFFqJVqHnUC96Hu1AO9GDaCNKo11oDXoB5dFutBS9iPagvWgf2o8OoJdQI5qMDqJlaBKqRhG0GM1CU9DL6BX0KnoNvY7eQIfQm+gt9DY6jI6gd1AfehdVoffQdDQDrUab0Ga0BfWgreh9tAEdRf3oGDqOTqAadBJNQzPRbDQXRVEMzUML0QI0H9WF1ZP5pdLjbd4bj8G/W116vM0/LWeFhaUIvr8UnUs3If7i5PGgvLgUlH+vN3Rkq3Qj4ZHJvZXbA18ufXH++C/52d6PPYU1cc5r4qbGc7cDZmKlP3So9EMTt0B+cfw3/OXe0Fmwc3eeZR4o/XX+T+93b5LLxEv/+a+XvqorffUbpf++efwXRcZ/5LOlH/nN0s+dV/rq65PLV2dV23d6Q8fLSveefaP0a84v/ZrfKv2am0q/avxHkqU/rZS+Jg6aLRn/AY6g/fz4D0wd/6UXlH7plPEv6ktf/Epv+f7Ctumlb/XXOEwR5TBFlMMUUQ5TRDlMEeUwRZTDFFEOU0Q5TBHlMEWUwxRRDlNEOUwR5TBFlMMUUQ5TRDlMEeUwRZTDFFEOU0Q5TBHlMEWUwxRRDlNEOUwR5TBFlMMUUQ5TRDlMEeUwRZTDFFEOU0Q5TBHlMEWUwxRRDlNEOUwR5TBFlMMUUQ5TRDlMEeUwRZTDFFEOU0Q5TBHlMEWUwxRRDlNEOUwR5TBFlMMUUQ5TRDlMEeUwRZTDFFEOU0Q5TBHlMEWUwxRRDlNEOUwR5TBFlMMUUQ5TRDlMEeUwRZTDFFEOU0Q5TBHlMEWUwxRRDlNEOUwR5TBFlMMUUQ5TRDlMEeUwRZTDFFEOU0Q5TBHlMEWUwxRRDlNEOUwR5TBFlMMUUQ5TRDlMEeUwRZTDFFEOU0Q5TBHlMEW0cpjilyn8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyj8hyqF/2Cp8C8ddrq7plT4/7MSN4xzXZm/QmO+jsZ8HY35OhrzdTTm62jM19GYr6MxX0djvo7GfB2N+Toa83U05utozNfRmK+jMV9HY76Oxnwdjfk6GvN1NObraMzX0ZivozFfR2O+jsZ8HY35OhrzdTTm62jM19GYr6MxX0djvo72XR2N+Toa83U05utozNfRmK+jMV9HY76Oxnwdjfk6GvN1NObraMzX0ZivozFfR2O+zsZ8HY35OhrzdTTm62jM19GYr6MxX0djvo7GfB2N+Toa83U05utozNfRmK/oDXQIvYneQm+jI+gd1IfeRVXoPTQdvY82oNloPlqAjqJ+dAwtRFvRJrQZzUXH0Tx0Am1BMXQS1aFpaCbqQdGwejK/Wo645z6A71BgfIei7Dsktu+QoL5TCe6/RviOE77jhO844TtO+I4TvuOE7zjhO074jhO+44TvOOE7TviOE77jhO844TtO+I4TvuOE7zjhO074jhO+44TvOOE7TviOE77jhO844TtO+I4TvuOE7zjhO074jhO+44TvOOE7TviOE77jhO844TtO+I4TvuOE7zjhO074jhO+44TvOOE7TviOG77jhO844TtO+I4TvuOE7zjhO074jhO+44TvOOE7TviOE77jhO844TtO+I4TvuOE7zjhO074jhO+44TvOOE7TviOE77jhO84YThOGI4ThuME1zgBNE4AjRNA4wTQOAE0TgCNEyTjhMU4aSZOmomTZuKkmTjJI07yiJM84qSLOOkiTmiPE9rjBPN4JXwP0bEYpWMxSsdilI7FKB2LUToWo3QsRulYjNKxGKVjMUrHYpSOxSgdi1E6FqN0LEbpWIzSsRilYzFKx2KUjsUoHYtROhajdCxG6ViM0rEYpWMxSsdilOQ4SsdilI7FKB2LUToWo3QsRulYjNKxGKVjMUrHYpSOxSgdi1E6FqN0LEbpWIzSsRilYzFKx2KUjsUoHYtROhajFBSjdCxG6ViM0rEYpWMxSsdilI7FKB2LUToWo3QsRulYjNKxGKVjMUrHYpSOxSgdi1E6FqN0LEbpWIzSsRilYzFKx2KUjsUoHYtROhajdCxG6ViM0rEYpWMxSsdilMJulI7FKB2LUToWo3QsRikIR+lYjNKxGKVjMUrHYpSOxSgdi1E6FqN0LEbpWIzSsRilYzFKx2KUjsUoHYvRSlE7HLw7uSrzS9W9ldfHvV5+oMOvU+0uo4ZdRl21jDpuGXXVMiraZZQWy6h9l1FPL6skgN/4RE+m/a3S3/z/gyfT/ibpZ4T0M0L6GSH9jJB+Rkg/I6SfEdLPCOlnhPQzQvoZIf2MkH5GSD8jpJ8R0s8I6WeE9DNC+hkh/YyQfkZIPyOknxHSzwjpZ4T0M0L6GSH9jJB+Rkg/I6SfEdLPCOlnhPQzQvoZIf2MkH5GSD8jpJ8R0s8I6WeE9DNC+hkh/YyQfkZIPyOknxHSzwjpZ4T0M0L6GSH9jJB+Rkg/I6SfEdLPCOlnhPQzQvoZIf2MkH5GSD8jpJ8R0s8I6WeE9DNC+hkh/YyQfkZIPyOknxHSzwjpZ4T0M0L6GSH9jJB+Rkg/I6SfEdLPCOlnhPQzQvoZIf2MkH5GSD8jpJ8R0s8I6WeE9DNC+hkh/YyQfkZIPyOknxHSzwjpZ4T0M1JJP18ny8TIATF6KjF6KjHyUYyeSoy8EiMDxeipxOipxOipxOipxOipxOipxOipxOipxOipxOipxOipxOipxOipxOipxOipxOipxMjFMXoqMXoqMXoqMXoqMXoqMXoqMXJ/jJ5KjNwfo6cSo6cSo6cSo6cSo6cSo6cSo6cSo6cSo6cSo6cSo6cSo6cSo6cSo6cSo6cSs6cSo6cSo6cSo6cSo/CJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJ0VOJVUrqbwQRtyrzG9WhT+LfVeLxbxGPk8TjJPE4STxOEo+TxOMk8ThJPE4Sj5PE4yTxOEk8ThKPk8TjJPE4STxOEo+TxOMk8ThJPE4Sj5PE4yTxOEk8ThKPk8TjJPE4STxOEo+TxOMk8ThJPE4Sj5PE4yTxOEk8ThKPk8TjJPE4STxOEo+TxOMk8ThJPE4Sj5PE4yTxOEk8ThKPk8bjJPE4STxOEo+TxOMk8ThJPE4Sj5PE4yTxOEk8ThKPk8TjJPE4STxOEo+TxOMk8ThJPE4Sj5PE4yTxOEk8ThKPk8TjJPE4SZxLEueSxLkkcS5JHE8Sx5PE8SQRMUlETBIRk0T8JPExSXxMkg2SZIMk2SBJNkiSDZJkgyQxN0nMTZIpkkTgJHkjWYnHI+WIe27+fpuly7dZ4H2bpcS3WRJ8uxK+RyeC++fCwf0/VH72tyd+dn9NOSpVtd1e+vHfmfjxozXliVDV9kTpx3+XZPBNVo3fZEX5TVab36z8cf+8/J8fHv/dVpezQVXbdeVJUNXWWb6oq9o6ynmhqm1tb/m1N20PjM/mVOmI9w+Pf7Go9MWD4z/z7fHxy+UsUdW2qTw5qtq2lKdoVdvW8oSoaiuWp1BV26PljFHV9lh5Yla1PVmeIlVtT5VzR1Xm8lIb6Y/Hf+Dp8uysattWnolVbc+WE09V23PlWVTVtqs8l6vaXijPlaq23eWkVdW2Z3z8zvh4sDyjqtpeKc+zqrZXx//FPbtnbt7yhU1b1o3//5Yvbj74xMENxydXVWWy1Zt3z/jil3/oz//4kkmbe370Z3fPufsLmzZ3f/lHVm56+Mtbxn/ZwZ4f/WrnwUtK38q2DzaXh5+oDH+/MvyDyvCTleF0ZRioDF+pDP+wMvyjyvCPK8NPVYafrgw/Uxn+SWU4Uxl+tjL8XGX4+cpwtjJ8tTL8QmX4xcrwS5Xhn1aGr1WGX64Mg5Xhn1WGX6kMv1oZfq0yDFWG4crw65XhNyrDb1aGr1eGb1SG36oMI5VhtDL8dmX4ncrwu5Xhn1eGf1EZ/mVl+FeV4fcqw+9Xhm9Whn9dGb5VGf6gMvxhZfg3leHfVoZ/Vxn+fWX4D5XhP1aGP6oM/6kyfLsy/HFl+E5l+M+V4b9Uhj+pDP+1Mvy3yvCnleG/V4b/URn+Z2X4X5Xhf1eG/1MZ/qwyjFWG/1seMlXVlbE6GCcF4+RgrAnGSDBOCcapwTgtGKcH44xg/EwwzgzGWcE4OxjnBOPcYIwGY20wzgvG+cG4IBgXBmMsGOPBWBeMnw3G84IxEYznB2MyGOuD8YJgTAXjomBsCMYLg/FzwXhRMF4cjJcE46XBeFkwLg7GdDBeHoxLgnFpMF4RjFcG4+eD8apgbAzGq4PxmmC8NhiXBWNTMDYH43XBuDwYrw/GlmC8IRhbg/HGYFwRjDcF483BeEswrgzGW4NxVTDeFoy3B2NbMN4RjJlgvDMY7wrGu4MxG4yrgzEXjPcE473BuCYY88F4XzAWgrE9GO8Pxo5g7AzGtcG4Lhi7gvELwbg+GB8Ixh8Kxi8G4w8H448E448GY3cwbgjGLwXjg8H4UDB+ORgfDsaNwfhjwbgpGDcH45Zg7AnGrcH448H4SDAWg/HRYHwsGB8PxieC8clgfCoYnw7GZ4JxWzBuD8Zng/G5YOwNxueDcUcw7gzGXcH4QjDuDsYXg3FPMO4Nxn3BuD8YDwTjS8F4MBhfDsZXgvHVYHwtGF8PxjeC8VAwvhmMbwXj28F4OBiPBOM7wdgXjO8G43vB+H4wHg3G/mA8FozHg/FEMJ4MxlPB+PeC8YNg/Ilg/PvB+A+C8SeD8XQwDgTjV4LxHwbjPwrGfxyMPxWMPx2MPxOM/yQYzwTjzwbjzwXjzwfj2WD8ajD+QjD+YjD+UjD+02D8WjD+cjAOBuM/C8ZfCcZfDcZfC8ahYBwOxl8Pxt8Ixt8Mxq8H4zeC8beCcSQYR4Pxt4Pxd4Lxd4PxnwfjvwjGfxmM/yoYfy8Yfz8YvxmM/zoYvxWMfxCMfxiM/yYY/20w/rtg/PfB+B+C8T8G4x8F438Kxm8H4x8H43eC8T8H438Jxj8Jxv8ajP8tGP80GP97MP6PYPyfwfi/gvF/B+P/CcY/C8axYPy/wVg1qTJWB+OkYJwcjDXBGAnGKcE4NRinBeP0YJwRjJ8JxpnBOCsYZwfjnGCcG4zRYKwNxnnBOD8YFwTjwmCMBWM8GOuC8bPBeF4wJv6fluw6PmokCuB4uXbbQntwB+d3uBUr7u7SsrhTwmx2ukk3uwlJFlrc6cKgl3N349zhOHd3d3d3T7e/v74z7/M+M+/Nn2+wNbbBttgO22MH7IidsDN2wa5Yht2wO/bAntgLy7E39sG+2A/74wAciINwMA7BoTgMh+MIHImjcDSOwbE4DsfjBJyIk3AyTsGpOA0rsBKnYxRn4EychbNxDs7FeTgfF+BCXISLcQkuxSpchhouR4Ex1DGOEqsxgQaaWINJtDCFabTRwRXoooc+ZnAlrsJarMPVuAbX4jpcjxtwI27CzbgFt+I23I47sB6zuBN3ocLduAf34j7cjwfwdAzwDDwTz8Kz8Rw8F8/D8/ECvBAvwovxErwUL8PL8Qq8Eq/Cq/EavBavw4N4Pd6AN+JNeDPegrfibXg73oF34l14Nx7Cw3gPHsF78T68Hx/AB/EhfBgfwUfxMXwcn8An8Sl8Gp/BZ/E5fB5fwBfxJXwZX8FX8TV8Hd/AN/EtfBvfwXfxPXwfP8AP8SP8GD/BT/Ez/By/wC/xK/wav8Fv8Tv8Hn/AH/En/Bl/wV/xN/wd/8A/8S/8G//Bf/E/zMtvtAkehflYgBEsxCIsxqbYDEuwFI/G5tgCj8FjsSW2wuPweDwBT8ST8GQ8BU/F07A1tsG22A7bYwfsiJ2wM3bBrliG3bA79sCe2AvLsTf2wb7YD/vjAByIg3AwDsGhOAyH4wgciaNwNI7BsTgOx+MEnIiTcDJOwak4DSuwEqdjFGfgTJyFs3EOzsV5OB8X4EJchItxCS7FKlyGGi5HgTHUMY4SqzGBBppYg0m0MIVptNHBFeiihz5mcCWuwlqsw9W4BtfiOlyPG3AjbsLNuAW34jbcjjuwHrO4E3ehwt24B/fiPtyPB/I9qYpsxzftdMMYvExF4jKWSQRZVej5rqn74apFUkpHE5al+XZShnlZ1cx3pdR0S3heEFURXeiGDMNFju35lqwNokaTmoP5eXkqEu6kGxhHVInvirRXbbupcB/NzdurGsfuQhU7rmm7pl8XqMJ0mCGsQDUVqZiZyOSCBSLj24GKuDIRHp5VrRzXdkRC+FILbzQbqw8LzV2m6WGpMaEnGxpSLVOiLhamWUKXhm3FpduQ2VzGTV/zpZsy08IKezAOVeQZh7Oq1HbDFBnXPOl7Qb0qNVOO7fqaI3zDC6oCVeLZGVeXuUDYenF4ciZh5h6v4eugoFK4ySBT/j/fRVVS'
3435
+ )
3436
+ DATA = pickle.loads(zlib.decompress(base64.b64decode(DATA)))
3437
+ MEMO = (
3438
+ b'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'
3439
+ )
3440
+ MEMO = pickle.loads(zlib.decompress(base64.b64decode(MEMO)))
3441
+ Shift = 0
3442
+ Reduce = 1
3443
+ def Lark_StandAlone(**kwargs):
3444
+ return Lark._load_from_dict(DATA, MEMO, **kwargs)