@layerzerolabs/protocol-stellar-v2 0.2.19 → 0.2.21

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.
Files changed (249) hide show
  1. package/.turbo/turbo-build.log +795 -791
  2. package/.turbo/turbo-lint.log +325 -155
  3. package/.turbo/turbo-test.log +1398 -1277
  4. package/Cargo.lock +122 -111
  5. package/Cargo.toml +32 -16
  6. package/contracts/common-macros/Cargo.toml +7 -7
  7. package/contracts/common-macros/src/auth.rs +18 -37
  8. package/contracts/common-macros/src/contract_ttl.rs +18 -7
  9. package/contracts/common-macros/src/lib.rs +31 -14
  10. package/contracts/common-macros/src/lz_contract.rs +38 -7
  11. package/contracts/common-macros/src/storage.rs +251 -292
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +1 -1
  13. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +6 -12
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +12 -17
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +2 -1
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +2 -7
  17. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +20 -14
  18. package/contracts/common-macros/src/tests/upgradeable.rs +26 -4
  19. package/contracts/common-macros/src/ttl_configurable.rs +2 -10
  20. package/contracts/common-macros/src/ttl_extendable.rs +2 -10
  21. package/contracts/common-macros/src/upgradeable.rs +61 -26
  22. package/contracts/common-macros/src/utils.rs +0 -9
  23. package/contracts/endpoint-v2/src/lib.rs +3 -2
  24. package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +2 -2
  25. package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +3 -3
  26. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +4 -4
  27. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +17 -5
  28. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
  29. package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +2 -2
  30. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +2 -2
  31. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +6 -6
  32. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +67 -37
  33. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +5 -5
  34. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +44 -54
  35. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +7 -7
  36. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +8 -8
  37. package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +3 -3
  38. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +4 -4
  39. package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +3 -3
  40. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +2 -2
  41. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +3 -3
  42. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +2 -2
  43. package/contracts/layerzero-views/Cargo.toml +0 -1
  44. package/contracts/layerzero-views/src/layerzero_view.rs +1 -13
  45. package/contracts/macro-integration-tests/Cargo.toml +5 -15
  46. package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +48 -0
  47. package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +170 -0
  48. package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +154 -0
  49. package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +338 -0
  50. package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +435 -0
  51. package/contracts/macro-integration-tests/tests/runtime.rs +1 -0
  52. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.rs +8 -0
  53. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -0
  54. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +8 -0
  55. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +71 -0
  56. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.rs +10 -0
  57. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +5 -0
  58. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.rs +8 -0
  59. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -0
  60. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.rs +8 -0
  61. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -0
  62. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +38 -0
  63. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +96 -0
  64. package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +64 -0
  65. package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +46 -0
  66. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +8 -0
  67. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +1 -1
  68. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +1 -1
  69. package/contracts/macro-integration-tests/tests/ui_oapp.rs +11 -0
  70. package/contracts/message-libs/message-lib-common/Cargo.toml +0 -1
  71. package/contracts/message-libs/message-lib-common/src/errors.rs +1 -1
  72. package/contracts/message-libs/treasury/Cargo.toml +0 -2
  73. package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +2 -2
  74. package/contracts/message-libs/uln-302/src/events.rs +4 -0
  75. package/contracts/message-libs/uln-302/src/send_uln.rs +22 -6
  76. package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +2 -2
  77. package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +2 -2
  78. package/contracts/message-libs/uln-302/src/tests/receive_uln302/verify.rs +2 -2
  79. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +2 -2
  80. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +2 -2
  81. package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +21 -67
  82. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
  83. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +2 -2
  84. package/contracts/oapps/counter/Cargo.toml +5 -6
  85. package/contracts/oapps/counter/integration_tests/setup_uln.rs +1 -1
  86. package/contracts/oapps/counter/integration_tests/utils.rs +19 -12
  87. package/contracts/oapps/oapp/src/errors.rs +1 -1
  88. package/contracts/oapps/oapp/src/interfaces/mod.rs +3 -0
  89. package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +47 -0
  90. package/contracts/oapps/oapp/src/lib.rs +1 -0
  91. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +4 -4
  92. package/contracts/oapps/oapp/src/oapp_core.rs +5 -5
  93. package/contracts/oapps/oapp/src/oapp_options_type3.rs +12 -4
  94. package/contracts/oapps/oapp/src/oapp_receiver.rs +14 -9
  95. package/contracts/oapps/oapp/src/tests/mod.rs +4 -4
  96. package/contracts/oapps/oapp/src/tests/oapp_core.rs +223 -0
  97. package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +240 -0
  98. package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +381 -0
  99. package/contracts/oapps/oapp/src/tests/oapp_sender.rs +569 -0
  100. package/contracts/oapps/oapp-macros/Cargo.toml +8 -4
  101. package/contracts/oapps/oapp-macros/src/generators.rs +9 -34
  102. package/contracts/oapps/oapp-macros/src/lib.rs +3 -0
  103. package/contracts/oapps/oapp-macros/src/tests/mod.rs +2 -0
  104. package/contracts/oapps/oapp-macros/src/tests/oapp.rs +88 -0
  105. package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +86 -0
  106. package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +103 -0
  107. package/contracts/oapps/oft/integration-tests/utils.rs +28 -8
  108. package/contracts/oapps/oft/src/extensions/oft_fee.rs +153 -75
  109. package/contracts/oapps/oft/src/extensions/pausable.rs +61 -12
  110. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +198 -134
  111. package/contracts/oapps/oft/src/oft.rs +45 -50
  112. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
  113. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +4 -26
  114. package/contracts/oapps/oft-core/Cargo.toml +1 -4
  115. package/contracts/oapps/oft-core/integration-tests/setup.rs +3 -3
  116. package/contracts/oapps/oft-core/integration-tests/utils.rs +21 -3
  117. package/contracts/oapps/oft-core/src/errors.rs +3 -2
  118. package/contracts/oapps/oft-core/src/events.rs +6 -0
  119. package/contracts/oapps/oft-core/src/lib.rs +1 -1
  120. package/contracts/oapps/oft-core/src/oft_core.rs +341 -246
  121. package/contracts/oapps/oft-core/src/storage.rs +7 -3
  122. package/contracts/oapps/oft-core/src/tests/mod.rs +1 -0
  123. package/contracts/oapps/oft-core/src/tests/test_decimals.rs +37 -2
  124. package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +2 -2
  125. package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +323 -0
  126. package/contracts/oapps/oft-core/src/tests/test_send.rs +2 -2
  127. package/contracts/oapps/oft-core/src/tests/test_utils.rs +61 -16
  128. package/contracts/upgrader/src/lib.rs +30 -57
  129. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
  130. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
  131. package/contracts/upgrader/src/tests/test_upgrader.rs +44 -35
  132. package/contracts/utils/Cargo.toml +0 -1
  133. package/contracts/utils/src/buffer_reader.rs +1 -0
  134. package/contracts/utils/src/errors.rs +4 -2
  135. package/contracts/utils/src/multisig.rs +17 -8
  136. package/contracts/utils/src/ownable.rs +6 -6
  137. package/contracts/utils/src/testing_utils.rs +124 -54
  138. package/contracts/utils/src/tests/multisig.rs +12 -12
  139. package/contracts/utils/src/tests/ownable.rs +6 -6
  140. package/contracts/utils/src/tests/testing_utils.rs +50 -167
  141. package/contracts/utils/src/tests/ttl_configurable.rs +5 -5
  142. package/contracts/utils/src/tests/upgradeable.rs +372 -175
  143. package/contracts/utils/src/ttl_configurable.rs +13 -7
  144. package/contracts/utils/src/upgradeable.rs +48 -23
  145. package/contracts/workers/dvn/Cargo.toml +6 -6
  146. package/contracts/workers/dvn/src/auth.rs +12 -42
  147. package/contracts/workers/dvn/src/dvn.rs +15 -40
  148. package/contracts/workers/dvn/src/errors.rs +0 -1
  149. package/contracts/workers/dvn/src/interfaces/dvn.rs +35 -0
  150. package/contracts/workers/dvn/src/lib.rs +4 -3
  151. package/contracts/workers/dvn/src/tests/auth.rs +1 -1
  152. package/contracts/workers/dvn/src/tests/dvn.rs +19 -15
  153. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -4
  154. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +1 -3
  155. package/contracts/workers/dvn/src/tests/setup.rs +5 -9
  156. package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -2
  157. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +38 -22
  158. package/contracts/workers/dvn-fee-lib/src/lib.rs +12 -2
  159. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +17 -16
  160. package/contracts/workers/executor/Cargo.toml +4 -0
  161. package/contracts/workers/executor/src/executor.rs +15 -36
  162. package/contracts/workers/executor/src/lib.rs +2 -2
  163. package/contracts/workers/executor/src/tests/auth.rs +394 -0
  164. package/contracts/workers/executor/src/tests/executor.rs +410 -0
  165. package/contracts/workers/executor/src/tests/mod.rs +3 -0
  166. package/contracts/workers/executor/src/tests/setup.rs +250 -0
  167. package/contracts/workers/executor-fee-lib/Cargo.toml +7 -1
  168. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +62 -15
  169. package/contracts/workers/executor-fee-lib/src/executor_option.rs +28 -1
  170. package/contracts/workers/executor-fee-lib/src/lib.rs +11 -2
  171. package/contracts/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +701 -0
  172. package/contracts/workers/executor-fee-lib/src/tests/executor_option.rs +370 -0
  173. package/contracts/workers/executor-fee-lib/src/tests/mod.rs +4 -0
  174. package/contracts/workers/executor-fee-lib/src/tests/setup.rs +60 -0
  175. package/contracts/workers/executor-helper/Cargo.toml +0 -1
  176. package/contracts/workers/executor-helper/src/lib.rs +3 -0
  177. package/contracts/workers/executor-helper/src/tests/executor_helper.rs +184 -0
  178. package/contracts/workers/executor-helper/src/tests/mod.rs +2 -0
  179. package/contracts/workers/executor-helper/src/tests/setup.rs +366 -0
  180. package/contracts/workers/fee-lib-interfaces/Cargo.toml +14 -0
  181. package/contracts/workers/{worker/src/interfaces/mod.rs → fee-lib-interfaces/src/lib.rs} +4 -3
  182. package/contracts/workers/price-feed/Cargo.toml +7 -1
  183. package/contracts/workers/price-feed/src/events.rs +1 -1
  184. package/contracts/workers/price-feed/src/lib.rs +12 -4
  185. package/contracts/workers/price-feed/src/price_feed.rs +5 -21
  186. package/contracts/workers/price-feed/src/storage.rs +1 -1
  187. package/contracts/workers/price-feed/src/tests/mod.rs +2 -0
  188. package/contracts/workers/price-feed/src/tests/price_feed.rs +869 -0
  189. package/contracts/workers/price-feed/src/tests/setup.rs +70 -0
  190. package/contracts/workers/price-feed/src/types.rs +1 -1
  191. package/contracts/workers/worker/src/errors.rs +1 -4
  192. package/contracts/workers/worker/src/lib.rs +0 -2
  193. package/contracts/workers/worker/src/storage.rs +32 -29
  194. package/contracts/workers/worker/src/tests/setup.rs +2 -8
  195. package/contracts/workers/worker/src/tests/worker.rs +96 -74
  196. package/contracts/workers/worker/src/worker.rs +75 -75
  197. package/docs/error-spec.md +55 -0
  198. package/docs/layerzero-v2-on-stellar.md +447 -0
  199. package/docs/oapp-guide.md +212 -0
  200. package/docs/oft-guide.md +314 -0
  201. package/package.json +3 -3
  202. package/sdk/.turbo/turbo-test.log +268 -263
  203. package/sdk/dist/generated/bml.d.ts +12 -4
  204. package/sdk/dist/generated/bml.js +9 -7
  205. package/sdk/dist/generated/counter.d.ts +306 -298
  206. package/sdk/dist/generated/counter.js +48 -46
  207. package/sdk/dist/generated/dvn.d.ts +450 -411
  208. package/sdk/dist/generated/dvn.js +66 -64
  209. package/sdk/dist/generated/dvn_fee_lib.d.ts +294 -338
  210. package/sdk/dist/generated/dvn_fee_lib.js +33 -64
  211. package/sdk/dist/generated/endpoint.d.ts +108 -100
  212. package/sdk/dist/generated/endpoint.js +21 -19
  213. package/sdk/dist/generated/executor.d.ts +414 -370
  214. package/sdk/dist/generated/executor.js +58 -55
  215. package/sdk/dist/generated/executor_fee_lib.d.ts +333 -377
  216. package/sdk/dist/generated/executor_fee_lib.js +34 -65
  217. package/sdk/dist/generated/executor_helper.d.ts +26 -190
  218. package/sdk/dist/generated/executor_helper.js +23 -28
  219. package/sdk/dist/generated/layerzero_view.d.ts +1271 -0
  220. package/sdk/dist/generated/layerzero_view.js +294 -0
  221. package/sdk/dist/generated/oft.d.ts +408 -385
  222. package/sdk/dist/generated/oft.js +89 -92
  223. package/sdk/dist/generated/price_feed.d.ts +385 -429
  224. package/sdk/dist/generated/price_feed.js +50 -81
  225. package/sdk/dist/generated/sml.d.ts +108 -100
  226. package/sdk/dist/generated/sml.js +21 -19
  227. package/sdk/dist/generated/treasury.d.ts +108 -100
  228. package/sdk/dist/generated/treasury.js +21 -19
  229. package/sdk/dist/generated/uln302.d.ts +108 -100
  230. package/sdk/dist/generated/uln302.js +23 -21
  231. package/sdk/dist/generated/upgrader.d.ts +189 -18
  232. package/sdk/dist/generated/upgrader.js +84 -4
  233. package/sdk/dist/index.d.ts +1 -0
  234. package/sdk/dist/index.js +2 -0
  235. package/sdk/package.json +1 -1
  236. package/sdk/src/index.ts +3 -0
  237. package/sdk/test/oft-sml.test.ts +4 -4
  238. package/sdk/test/suites/localnet.ts +84 -20
  239. package/sdk/test/upgrader.test.ts +2 -3
  240. package/tools/ts-bindings-gen/src/main.rs +2 -1
  241. package/contracts/ERROR_SPEC.md +0 -44
  242. package/contracts/endpoint-v2/ARCHITECTURE.md +0 -233
  243. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -175
  244. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -212
  245. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -153
  246. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -294
  247. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/dvn_fee_lib.rs +0 -0
  248. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/executor_fee_lib.rs +0 -0
  249. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/price_feed.rs +0 -0
@@ -4,17 +4,16 @@ import type { u32, u64, i128, Option } from '@stellar/stellar-sdk/contract';
4
4
  export * from '@stellar/stellar-sdk';
5
5
  export * as contract from '@stellar/stellar-sdk/contract';
6
6
  export * as rpc from '@stellar/stellar-sdk/rpc';
7
- export type MigrationData = void;
8
7
  /**
9
8
  * Embedded WASM bytecode (base64-encoded)
10
- * Size: 40111 bytes (39.17 KB)
9
+ * Size: 40336 bytes (39.39 KB)
11
10
  */
12
- export declare const WASM_BASE64 = "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QgSEEICAgIAAGgviAwIBfwJ+I4CAgIAAQTBrIgEkgICAgAACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMEBQYACyABQQhqQYCAwIAAQQMQ1oCAgAAgASgCCA0IIAFBCGogASkDEBDXgICAAAwGCyABQSBqQYOAwIAAQRAQ1oCAgAAgASgCIA0HIAEgASkDKDcDCCABIAApAwg3AxggASAANQIEQiCGQgSENwMQIAFBIGogAUEIahDYgICAACABKQMoIQIgASkDICEDDAYLIAFBCGpBk4DAgABBDBDWgICAACABKAIIDQYgAUEIaiABKQMQENeAgIAADAQLIAFBCGpBn4DAgABBBRDWgICAACABKAIIDQUgAUEIaiABKQMQENeAgIAADAMLIAFBCGpBpIDAgABBDRDWgICAACABKAIIDQQgAUEIaiABKQMQENeAgIAADAILIAFBCGpBsYDAgABBDBDWgICAACABKAIIDQMgAUEIaiABKQMQIAA1AgRCIIZCBIQQ2YCAgAAMAQsgAUEIakG9gMCAAEENENaAgIAAIAEoAggNAiABQQhqIAEpAxAgADUCBEIghkIEhBDZgICAAAsgASkDECECIAEpAwghAwsgA1ANAQsACyABQTBqJICAgIAAIAILdAIBfwJ+I4CAgIAAQRBrIgIkgICAgABCACEDAkACQCABEKuAgIAAIgRCARCtgICAAEUNACACIARCARCBgICAABCugICAACACKAIAQQFGDQEgACACKQMINwMIQgEhAwsgACADNwMAIAJBEGokgICAgAAPCwALDwAgACABEKKAgIAAQgFRC10CAX8BfgJAAkAgAadB/wFxIgJBwABGDQACQCACQQZGDQBCASEDQoOQgICAASEBDAILIAFCCIghAUIAIQMMAQtCACEDIAEQlICAgAAhAQsgACADNwMAIAAgATcDCAsOACAAIAFCARCwgICAAAsbACAAEKuAgIAAIAEQsYCAgAAgAhCCgICAABoLQQEBfyOAgICAAEEQayIBJICAgIAAIAEgABCBgYCAAAJAIAEoAgBBAUcNAAALIAEpAwghACABQRBqJICAgIAAIAALdAIBfwJ+I4CAgIAAQRBrIgIkgICAgABCACEDAkACQCABEKuAgIAAIgRCAhCtgICAAEUNACACIARCAhCBgICAABCugICAACACKAIAQQFGDQEgACACKQMINwMIQgEhAwsgACADNwMAIAJBEGokgICAgAAPCwALDgAgACABQgIQsICAgAALnwUBAX8jgICAgABB8ABrIgokgICAgAAQtYCAgAAQtoCAgAAgBBC1gICAACAFIAYQpYCAgAACQAJAIAcgCIRCAFENACAKQcAAahC1gICAAEKO6PcfEIOAgIAAEISAgIAAELeAgIAAIAopA0AiBkICUQ0BAkAgBqdBAXFFDQAgCikDSCAEELWAgIAAIAcgCBClgICAAAwBC0KDgICAsPoBELiAgIAAAAsgCkHAAGogARC5gICAACAKKQNIIQQgCikDQBC6gICAABC1gICAACEGEIWAgIAAIQUgCiAHQgBSIAhCAFUgCFAbOgAkIAogAzcDGCAKIAI3AxAgCiAENwMIIAogATYCICAKQQhqELuAgIAAIQggCiAJNwM4IAogCDcDMCAKIAU3AyhBACEBA0ACQCABQRhHDQBBACEBAkADQCABQRhGDQEgCkHAAGogAWogCkEoaiABaikDADcDACABQQhqIQEMAAsLIAZCjtKzlQ4gCkHAAGpBAxCngICAABCEgICAACEIQQAhAQJAA0AgAUEYRg0BIApBKGogAWpCAjcDACABQQhqIQEMAAsLIAhC/wGDQswAUg0CIAhB7IHAgABBAyAKQShqQQMQvICAgAAgCkHAAGogCikDKBC9gICAACAKKAJAQQFxDQIgCikDaCEIIAopA2AhByAKKQNYIQQgCikDUCEGIApBwABqIAopAzAQvoCAgAAgCigCQA0CIAopA0ghBSAKQcAAaiAKKQM4EK6AgIAAIAooAkBBAUYNAiAKKQNIIQkgACAHNwMQIAAgBjcDACAAIAk3AyggACAFNwMgIAAgCDcDGCAAIAQ3AwggCkHwAGokgICAgAAPCyAKQcAAaiABakICNwMAIAFBCGohAQwACwsQv4CAgAAAC4cBAgF/AX4jgICAgABBEGsiACSAgICAACAAQQRqEMGAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBDCgICAAAsCQAJAQQAgABDGgICAACIBQgIQrYCAgABFDQAgAUICEIGAgIAAIgFC/wGDQs0AUQ0BAAsQyICAgAAACyAAQRBqJICAgIAAIAELNgACQCAAQYSCwIAAQQwQgoGAgAAQg4CAgAAQhICAgAAiAEL/AYNCzQBRDQAQv4CAgAAACyAACzkAAkAgAUICUQ0AAkAgAUL/AYNCzQBRDQAgAEICNwMADwsgACABNwMIIABCATcDAA8LIABCADcDAAsLACAAEKSAgIAAGgvGAQIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAhDBgICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQwoCAgAALAkACQAJAQQEgARDGgICAACIDQgEQrYCAgABFDQAgAiADQgEQgYCAgAAQvoCAgAAgAigCAEEBRw0BAAsgAEIANwMADAELIAIpAwghAyAAQgE3AwAgACADNwMIIAIQxICAgAAgAigCAEEBRw0AIAEgAigCBCACKAIIEMeAgIAACyACQRBqJICAgIAACx4AAkAgAKdBAXFFDQAPC0KDgICAkPoBELiAgIAAAAtzAgF/AX4jgICAgABBMGsiASSAgICAACABIAApAwA3AyggASAAMQAcNwMgIAEgACkDEDcDGCABIAApAwg3AxAgASAANQIYQiCGQgSENwMIQeyAwIAAQQUgAUEIakEFEO6AgIAAIQIgAUEwaiSAgICAACACCzEAAkAgAiAERg0AAAsgACABrUIghkIEhCADrUIghkIEhCACrUIghkIEhBCdgICAABoL7wECAn8DfiOAgICAAEEwayICJICAgIAAQQAhAwJAA0AgA0EQRg0BIAIgA2pCAjcDACADQQhqIQMMAAsLQgAhBEIBIQUCQCABQv8Bg0LMAFINACABQdSBwIAAQQIgAkECELyAgIAAIAJBEGogAikDABCAgYCAACACKAIQQQFGDQAgAikDKCEBIAIpAyAhBiACQRBqIAIpAwgQgIGAgAAgAigCEEEBRg0AIAIpAyAhBCAAIAIpAyg3AyggACAENwMgIAAgATcDGCAAIAY3AxBCACEFQgAhBAsgACAFNwMAIAAgBDcDCCACQTBqJICAgIAAC0IBAX5CASECAkAgAUL/AYNCyABSDQAgARCIgICAAEKAgICAcINCgICAgIAEUg0AIAAgATcDCEIAIQILIAAgAjcDAAsJABDKgICAAAALvQEEAX8BfgF/AX4jgICAgABBEGsiAiSAgICAACACQQRqEMGAgIAAAkAgAigCBEEBRw0AIAIoAgggAigCDBDCgICAAAsCQAJAIAAgARDDgICAACIDQgEQrYCAgAAiBEUNACADQgEQgYCAgAAiBUL/AYNCyABSDQEgAkEEahDEgICAACACKAIEQQFHDQAgACABIAIoAgggAigCDBDFgICAAAsQhoCAgAAhAyACQRBqJICAgIAAIAUgAyAEGw8LAAsMACAAQQEQq4GAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQo4CAgAAaC4oBAgF/AX4jgICAgABBMGsiAiSAgICAACACQSBqQYCDwIAAQQ8Q1oCAgAACQAJAIAIoAiANACACIAIpAyg3AwggAiABrUIghkIEhDcDGCACIACtQiCGQgSENwMQIAJBIGogAkEIahDYgICAACACKAIgRQ0BCwALIAIpAyghAyACQTBqJICAgIAAIAMLDAAgAEECEKuBgIAACycAIAAgARDDgICAAEIBIAKtQiCGQgSEIAOtQiCGQgSEEICAgIAAGgubAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCAAQQFxRQ0AIAJBvYLAgABBBBDWgICAACACKAIADQIgAiACKQMIIAGtQiCGQgSEENmAgIAADAELIAJBtYLAgABBCBDWgICAACACKAIADQEgAiACKQMIENeAgIAACyACKQMIIQMgAikDAFANAQsACyACQRBqJICAgIAAIAMLJwBBASAAEMaAgIAAQgEgAa1CIIZCBIQgAq1CIIZCBIQQgICAgAAaCwkAEL+AgIAAAAscAAJAIABBf2pB/wFxQQRJDQAQyoCAgAAACyAACwMAAAuLAQICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahDBgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQwoCAgAALQQAhAQJAQQAQzICAgAAiAkICEK2AgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQvCAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQAJAAkAgAEH/AXEOAwABAgALIAFBwoXAgABBBhDWgICAACABKAIADQMgASABKQMIENeAgIAADAILIAFByIXAgABBCBDWgICAACABKAIADQIgASABKQMIENeAgIAADAELIAFB0IXAgABBChDWgICAACABKAIADQEgASABKQMIENeAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILDwAQzoCAgAAQh4CAgAAaC2YCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQwYCAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEMKAgIAACyAAENCAgIAAIAApAwghASAAKQMAQYoIENGAgIAAIABBEGokgICAgAAgAQtKAgF/AX4jgICAgABBEGsiACSAgICAACAAENCAgIAAIAApAwghASAAKQMAQYoIENGAgIAAIAEQh4CAgAAaIABBEGokgICAgAAgAQtQAQF/I4CAgIAAQRBrIgEkgICAgAAgAUEEahDBgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQwoCAgAALIAAQ1YCAgAAgAUEQaiSAgICAAAspAAJAIACnQQFxRQ0ADwsgAUH6d2qtQiCGQoOAgIDggAF8ELiAgIAAAAtCAQF/I4CAgIAAQRBrIgAkgICAgAAgABDTgICAAAJAIAApAwBQDQBCg4CAgLCBARC4gICAAAALIABBEGokgICAgAALkwECAX8CfiOAgICAAEEQayIBJICAgIAAIAFBBGoQwYCAgAACQCABKAIEQQFHDQAgASgCCCABKAIMEMKAgIAAC0IAIQICQAJAQQEQ1ICAgAAiA0IAEK2AgIAARQ0AIANCABCBgICAACICQv8Bg0LNAFINASAAIAI3AwhCASECCyAAIAI3AwAgAUEQaiSAgICAAA8LAAuSAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAQQFxRQ0AIAFB1YTAgABBDBDWgICAACABKAIADQIgASABKQMIENeAgIAADAELIAFB0ITAgABBBRDWgICAACABKAIADQEgASABKQMIENeAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILTQECfkIAIQECQAJAQQAQ1ICAgAAiAkICEK2AgIAARQ0AIAJCAhCBgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALUQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABIAIQqIGAgABCASEEAkAgAygCAA0AIAAgAykDCDcDCEIAIQQLIAAgBDcDACADQRBqJICAgIAAC0QBAX8jgICAgABBEGsiAiSAgICAACACIAE3AwggAkEIakEBEKeAgIAAIQEgAEIANwMAIAAgATcDCCACQRBqJICAgIAAC10CAX8BfiOAgICAAEEgayICJICAgIAAIAIgASkDEDcDGCACIAEpAwg3AxAgAiABKQMANwMIIAJBCGpBAxCngICAACEDIABCADcDACAAIAM3AwggAkEgaiSAgICAAAtIAQF/I4CAgIAAQRBrIgMkgICAgAAgAyACNwMIIAMgATcDACADQQIQp4CAgAAhAiAAQgA3AwAgACACNwMIIANBEGokgICAgAALnwECAX8BfiOAgICAAEEQayICJICAgIAAEIaAgIAAIQMgAiAAOgALIAMgAxCIgICAAEKAgICAcINCBIQgAkELakEBENuAgIAAIQMgAiABQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCDCADIAMQiICAgABCgICAgHCDQgSEIAJBDGpBBBDbgICAACEDIAJBEGokgICAgAAgAwseACAAIAEgAq1CIIZCBIQgA61CIIZCBIQQmoCAgAALMQACQCAAEIiAgIAAQv////8PVg0AEN2AgIAAAAsgAEIEEImAgIAAQiCIpxDJgICAAAsJABDKgICAAAALqQMCAX8CfiOAgICAAEEgayICJICAgIAAQgwhAwJAIAFBBSABEIiAgIAAQiCIpxDfgICAACIBEIiAgIAAQoCAgIAQVA0AIAEQioCAgAAhAwsgAkEPaiADEIuAgIAAIgFCBEKEgICAgAIQjICAgAAQ4ICAgAACQAJAIAItAA9BAUYNACACKQAYIQMgAikAECEEIAJBD2ogAUKEgICAgAJChICAgIAEEIyAgIAAEOCAgIAAIAItAA9BAUYNACAEIAOEQgBSDQEgAikAECIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIgNCf1cNASAAIAIpABgiAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhDcDACAAIAM3AwggAkEgaiSAgICAAA8LEL+AgIAAAAtCg4CAgCAQuICAgAAACxwAIAAgAa1CIIZCBIQgAq1CIIZCBIQQjICAgAAL2QECA38BfiOAgICAAEEQayICJICAgIAAQQEhAwJAIAEQiICAgABCgICAgHCDQoCAgICAAlINACACQQhqQgA3AwAgAkIANwMAIABBAWohBEEAIQMCQANAIAEQiICAgABCgICAgBBUDQEgARCfgICAACEFIAFBARCMgYCAACEBAkAgA0EQRg0AIAIgA2ogBUIgiDwAACADQQFqIQMMAQsLQRAQp4GAgAAACyAEIAIpAwA3AAAgBEEIaiACQQhqKQMANwAAQQAhAwsgACADOgAAIAJBEGokgICAgAAL7wICAX8BfiOAgICAAEEwayICJICAgIAAEIaAgIAAIQMgAkGABjsBECADIAMQiICAgABCgICAgHCDQgSEIAJBEGpBAhDbgICAAEKEgICAEBCNgICAACEDIAJCgICAgIDgwIbAADcDCCACQgA3AwAgAiAAQjiGNwMYIAJCADcDEAJAAkAgACABhEIAUg0AIAJBgCI7AS4gAyADEIiAgIAAQoCAgIBwg0IEhCACQS5qQQIQ24CAgABChICAgBAQjYCAgAAhACAAIAAQiICAgABCgICAgHCDQgSEIAJBEBDbgICAACEADAELIAJBgMIAOwEuIAMgAxCIgICAAEKAgICAcINCBIQgAkEuakECENuAgIAAQoSAgIAQEI2AgIAAIQAgACAAEIiAgIAAQoCAgIBwg0IEhCACQRAQ24CAgAAhACAAIAAQiICAgABCgICAgHCDQgSEIAJBEGpBEBDbgICAACEACyACQTBqJICAgIAAIAALXgIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAiAAEN6AgIAAAkAgASkDACACKQMAWiABKQMIIgAgAikDCCIDWSAAIANRGw0AQoOAgIAwELiAgIAAAAsgAkEQaiSAgICAAAuFAQIBfwF+I4CAgIAAQTBrIgIkgICAgAAgAiABNwMIIAIgADYCBCACQQE2AgAgAkEQaiACEKyAgIAAAkAgAikDECIBUA0AIAJBJGoQxICAgAAgAigCJEUNACACIAIoAiggAigCLBCqgICAAAsgAikDGCEDIAJBMGokgICAgAAgA0IAIAGnGwtpAQF/I4CAgIAAQSBrIgMkgICAgAAgAyABNwMIIAMgADYCBCADQQE2AgAgAyACEK+AgIAAIANBFGoQxICAgAACQCADKAIUQQFHDQAgAyADKAIYIAMoAhwQqoCAgAALIANBIGokgICAgAALagICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEECNgIAQQAhAQJAIAAQq4CAgAAiAkICEK2AgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQtiAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEGNgIAIAIgADYCBCACIAEQr4CAgAAgAkEUahDEgICAAAJAIAIoAhRBAUcNACACIAIoAhggAigCHBCqgICAAAsgAkEgaiSAgICAAAsIABDOgICAAAvnAQEBfyOAgICAAEEQayIDJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQs0AUg0AIAJC/wGDQs0AUg0AQQAQ1ICAgABCAhCtgICAAA0BIAAQ6YCAgABBACADEMaAgIAAIAFCAhCCgICAABogARCFgICAAEIBIAIQ6oCAgAAgAUKO0q4VEIOAgIAAEISAgIAAIgFC/wGDQgRSDQIgA0EANgIAIAMQq4CAgAAgAUKEgICAcINCAhCCgICAABogA0EQaiSAgICAAEICDwsAC0KDgICAkIEBELiAgIAAAAsQv4CAgAAACw4AQQAgAEICEKSBgIAAC7YBAwF/AX4BfyOAgICAAEEgayIEJICAgIAAQZCCwIAAQQwQgoGAgAAhBSAEIAIgAxCRgYCAADcDCCAEIAE3AwBBACEGA0ACQCAGQRBHDQBBACEGAkADQCAGQRBGDQEgBEEQaiAGaiAEIAZqKQMANwMAIAZBCGohBgwACwsgACAFIARBEGpBAhCngICAABCogICAACAEQSBqJICAgIAADwsgBEEQaiAGakICNwMAIAZBCGohBgwACwulBAIDfwF+I4CAgIAAQeAAayIEJICAgIAAAkAgAEL/AYNCBFINACABQv8Bg0IEUg0AIAJC/wGDQsgAUg0AQQEgA6dB/wFxIgVBAEdBAXQgBUEBRhsiBkECRg0AIABCIIinIQUgAUIgiCEAIARBMGoQwYCAgAACQCAEKAIwQQFHDQAgBCgCNCAEKAI4EMKAgIAACyAApxDJgICAABDsgICAABDagICAACEAIARBMGogBRC5gICAACAEKQM4IQEgBCkDMBC6gICAABC1gICAACEDEIWAgIAAIQcgBCAGOgAcIAQgAjcDECAEIAA3AwggBCABNwMAIAQgBTYCGCAEIAQQu4CAgAA3AyggBCAHNwMgQQAhBQJAAkADQAJAIAVBEEcNAEEAIQUCQANAIAVBEEYNASAEQTBqIAVqIARBIGogBWopAwA3AwAgBUEIaiEFDAALCyAEQTBqIANCjtS52u4GIARBMGpBAhCngICAABCEgICAABC9gICAACAEKAIwQQFxDQIgBCkDWCEAIAQpA1AhASAEQTBqIAQpA0AgBCkDSBDtgICAACAEKAIwDQQgBCkDOCECIARBMGogASAAEO2AgIAAIAQoAjBBAUcNAwwECyAEQTBqIAVqQgI3AwAgBUEIaiEFDAALCxC/gICAAAALIAQgBCkDODcDCCAEIAI3AwBB1IHAgABBAiAEQQIQ7oCAgAAhACAEQeAAaiSAgICAACAADwsAC4wBAgF/AX4jgICAgABBEGsiACSAgICAACAAEMGAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBDCgICAAAsgAEEANgIAAkACQCAAEKuAgIAAIgFCAhCtgICAAEUNACABQgIQgYCAgAAiAUL/AYNCBFENAQALEMiAgIAAAAsgAEEQaiSAgICAACABQiCIpwtbAAJAAkAgAUKAgICAgICAwAB8Qv//////////AFYNACABIAGFIAIgAUI/h4WEQgBSDQAgAUIIhkILhCEBDAELIAIgARCYgICAACEBCyAAQgA3AwAgACABNwMICy4AAkAgASADRg0AAAsgAK1CIIZCBIQgAq1CIIZCBIQgAa1CIIZCBIQQnICAgAALkwICAn8DfiOAgICAAEEwayIFJICAgIAAAkACQCAAQv8Bg0LNAFINACABQv8Bg0IEUg0AIAJC/wGDQgRSDQAgA0L/AYNCyABSDQAgBSAEEL2AgIAAIAUoAgBBAXENACABQiCIpyEGIAUpAyghASAFKQMgIQQgBSkDGCEHIAUpAxAhCCAFEMGAgIAAAkAgBSgCAEEBRw0AIAUoAgQgBSgCCBDCgICAAAsgABCHgICAABogBhDwgICAAEIBfCIJQgBRDQEgBiAJEOaAgIAAIAUgBiACQiCIpxDJgICAABDsgICAABDagICAACADIAAgCCAHIAQgASAAELSAgIAAIAVBMGokgICAgABCAg8LAAsQv4CAgAAAC6gBAgF/An4jgICAgABBMGsiASSAgICAACABQRBqEMGAgIAAAkAgASgCEEEBRw0AIAEoAhQgASgCGBDCgICAAAsgAUEGNgIAIAEgADYCBCABQRBqIAEQrICAgAACQCABKQMQIgJQDQAgAUEkahDEgICAACABKAIkQQFHDQAgASABKAIoIAEoAiwQqoCAgAALIAEpAxghAyABQTBqJICAgIAAIANCACACpxsLiwEBAn8jgICAgABBEGsiASSAgICAAAJAQQEgAKdB/wFxIgJBAEdBAXQgAkEBRhsiAkECRg0AEM2AgIAAIAEQwYCAgAACQCABKAIAQQFHDQAgASgCBCABKAIIEMKAgIAACyABQQI2AgAgARCrgICAACACrUICEIKAgIAAGiABQRBqJICAgIAAQgIPCwALlQMFAX8BfgF/AX4BfyOAgICAAEHQAGsiAySAgICAAAJAIABC/wGDQgRSDQAgA0EoaiABEL6AgIAAIAMoAihBAUYNACADKQMwIQEgA0EoaiACEK6AgIAAIAMoAihBAUYNACAAQiCIIQIgAykDMCEEEM2AgIAAIANBKGoQwYCAgAACQCADKAIoQQFHDQAgAygCLCADKAIwEMKAgIAACyACpyEFEIWAgIAAIQIQtYCAgAAhBiADIAQQsYCAgAA3AyAgAyABNwMYIAMgAEKEgICAcIM3AxAgAyACNwMIIAMgAjcDAEEAIQcCQANAAkAgB0EoRw0AQQAhBwJAA0AgB0EoRg0BIANBKGogB2ogAyAHaikDADcDACAHQQhqIQcMAAsLIAZCjuqumA4gA0EoakEFEKeAgIAAEKiAgIAAAkAQ5YCAgABFDQAgBSABEOOAgIAAQgF8IgBQDQMgBSABIAAQ5ICAgAALIANB0ABqJICAgIAAQgIPCyADQShqIAdqQgI3AwAgB0EIaiEHDAALCxC/gICAAAALAAsPABDsgICAAK1CIIZCBIQLDgAQ9YCAgAAQsYCAgAALcwICfwF+I4CAgIAAQSBrIgAkgICAgAAgAEEQahDBgICAAAJAIAAoAhBBAUcNACAAKAIUIAAoAhgQwoCAgAALIABBAzYCACAAQRBqIAAQsoCAgAAgACgCECEBIAApAxghAiAAQSBqJICAgIAAIAJCACABGwsOABD3gICAABCxgICAAAtzAgJ/AX4jgICAgABBIGsiACSAgICAACAAQRBqEMGAgIAAAkAgACgCEEEBRw0AIAAoAhQgACgCGBDCgICAAAsgAEEENgIAIABBEGogABCygICAACAAKAIQIQEgACkDGCECIABBIGokgICAgAAgAkIAIAEbCyMAAkAgAEL/AYNCBFENAAALIABCIIinEPmAgIAAELGAgIAAC6gBAgF/An4jgICAgABBMGsiASSAgICAACABQRBqEMGAgIAAAkAgASgCEEEBRw0AIAEoAhQgASgCGBDCgICAAAsgAUEFNgIAIAEgADYCBCABQRBqIAEQrICAgAACQCABKQMQIgJQDQAgAUEkahDEgICAACABKAIkQQFHDQAgASABKAIoIAEoAiwQqoCAgAALIAEpAxghAyABQTBqJICAgIAAIANCACACpxsLIwACQCAAQv8Bg0IEUQ0AAAsgAEIgiKcQ8ICAgAAQsYCAgAALrgECAX8BfiOAgICAAEEQayICJICAgIAAAkACQCAAQv8Bg0IEUg0AIAIgARC+gICAACACKAIAQQFGDQAgAikDCCEDIAIQwYCAgAACQCACKAIAQQFHDQAgAigCBCACKAIIEMKAgIAAC0IAIQECQBDlgICAAEUNACAAQiCIpyADEOOAgIAAQgF8IgFQDQILIAEQsYCAgAAhACACQRBqJICAgIAAIAAPCwALEL+AgIAAAAubAQICfwF+I4CAgIAAQSBrIgEkgICAgAAgASAAEP2AgIAAAkAgASgCAEEBRg0AIAEoAhghAiABKQMIIQMgARDBgICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQwoCAgAALIAEgAhC5gICAAEIAIQACQCABKAIAQQFHDQAgASkDCCADEP6AgIAArSEACyABQSBqJICAgIAAIAAPCwAL4gECAn8CfiOAgICAAEEwayICJICAgIAAQQAhAwJAA0AgA0EYRg0BIAJBCGogA2pCAjcDACADQQhqIQMMAAsLQgEhBAJAIAFC/wGDQswAUg0AIAFBqIHAgABBAyACQQhqQQMQvICAgAAgAkEgaiACKQMIEK6AgIAAIAIoAiANACACKQMoIQEgAkEgaiACKQMQEL6AgIAAIAIoAiANACACKQMYIgVC/wGDQgRSDQAgAikDKCEEIAAgATcDECAAIAQ3AwggACAFQiCIPgIYQgAhBAsgACAENwMAIAJBMGokgICAgAALDQAgACABEJ6AgIAAUAv4CAMCfwN+AX8jgICAgABB8ABrIgYkgICAgAACQAJAAkACQCAAQv8Bg0LNAFINACAGQRBqIAEQ/YCAgAAgBigCEEEBRg0AIAYoAighByAGKQMgIQggBikDGCEBIAZBEGogAhC+gICAACAGKAIQQQFGDQAgA0L/AYNCyABSDQAgBEL/AYNCyABSDQAgBikDGCEJIAZBEGogBRCAgYCAACAGKAIQQQFGDQAgBikDKCECIAYpAyAhBCAGQRBqEMGAgIAAAkAgBigCEEEBRw0AIAYoAhQgBigCGBDCgICAAAsQhYCAgAAhBRC1gICAACEKIAAQh4CAgAAaAkAgBCAChEIAUQ0AIAoQtoCAgAAgACAFIAQgAhCpgICAAAsgBkEQaiAHELmAgIAAAkAgBigCEEEBRw0AIAYpAxggARD+gICAAEUNACAGQcgAaiAIEIGBgIAAIAYoAkhBAUYNASAGKQNQIQAgBiABNwMYIAYgADcDECAGIAetQiCGQgSENwMgQaiBwIAAQQMgBkEQakEDEO6AgIAAIQAgBiADNwNoIAYgCTcDYCAGIAU3A1ggBiAANwNQIAYgBTcDSEEAIQsDQAJAIAtBKEcNAEEAIQsCQANAIAtBKEYNASAGQRBqIAtqIAZByABqIAtqKQMANwMAIAtBCGohCwwACwsgCkKO7qa1jAUgBkEQakEFEKeAgIAAEKiAgIAAIAYgAjcDCCAGIAQ3AwAgByABEOOAgIAAIQAQ5YCAgABFDQQgAEIBfCIFUA0FIAggBVENBEKDgICAEBC4gICAAAALIAZBEGogC2pCAjcDACALQQhqIQsMAAsLQoOAgICg+gEQuICAgAAACwALAkAgCCAAWA0AIAcgASAIEOSAgIAACxCFgICAACEBEPWAgIAAIQggBxD5gICAACEAIAhCAXwiCFANACAGQQM2AhAgBkEQaiAIELOAgIAAIABCAXwiCFANACAGQQU2AhAgBiAHNgIUIAZBEGogCBCvgICAACAGQcgAahDEgICAAAJAIAYoAkhBAUcNACAGQRBqIAYoAkwgBigCUBCqgICAAAsCQAJAAkAgAxDcgICAAEH/AXFBf2oOBAEAAgABCxC1gICAACEIQZyCwIAAQQwQgoGAgAAhAiAGIAM3A2ggBkIENwNgIAYgCTcDWCAGIAE3A1AgBiABNwNIQQAhCwNAAkAgC0EoRw0AQQAhCwJAA0AgC0EoRg0BIAZBEGogC2ogBkHIAGogC2opAwA3AwAgC0EIaiELDAALCyAIIAIgBkEQakEFEKeAgIAAEKiAgIAADAULIAZBEGogC2pCAjcDACALQQhqIQsMAAsLIAMgBhDigICAAAwCCyADIAYQ4oCAgAAgBxDwgICAAEIBfCIDUA0AIAcgAxDmgICAAEIKQgAQ4YCAgAAhAyAGQRBqIAdBARDsgICAABDagICAAEKMFBCLgICAABCOgICAACADIAEgBCACQgBCACABELSAgIAADAELEL+AgIAAAAsgBkHwAGokgICAgABCAgt9AgF/AX4CQAJAAkACQCABp0H/AXEiAkHFAEYNACACQQtHDQIgACABQj+HNwMYIAAgAUIIhzcDEAwBCyABEJaAgIAAIQMgARCXgICAACEBIAAgAzcDGCAAIAE3AxALQgAhAQwBCyAAQoOQgICAATcDCEIBIQELIAAgATcDAAs7AAJAAkAgAUL//////////wBWDQAgAUIIhkIGhCEBDAELIAEQk4CAgAAhAQsgAEIANwMAIAAgATcDCAtFAgF/AX4jgICAgABBEGsiAiSAgICAACACIAAgARCogYCAAAJAIAIoAgBBAUcNAAALIAIpAwghAyACQRBqJICAgIAAIAMLiQEBAn8jgICAgABBIGsiAySAgICAACADIAAQ/YCAgAACQCADKAIAQQFGDQAgAUL/AYNCyABSDQAgAkL/AYNCzQBSDQAgAxDBgICAAAJAIAMoAgBBAUcNACADKAIEIAMoAggQwoCAgAALEIWAgIAAIAIQ/oCAgAAhBCADQSBqJICAgIAAIAStDwsAC4AGAwF/A34BfyOAgICAAEHgAGsiBySAgICAAAJAAkAgAEL/AYNCzQBSDQAgAUL/AYNCzQBSDQAgByACEL6AgIAAIAcoAgBBAUYNACADQv8Bg0IEUg0AIARC/wGDQsgAUg0AIAVC/wGDQsgAUg0AIAcpAwghCCAHIAYQgIGAgAAgBygCAEEBRg0AIAcpAxghAiAHKQMQIQUgBxDBgICAAAJAIAcoAgBBAUcNACAHKAIEIAcoAggQwoCAgAALIAAQh4CAgAAaEIWAgIAAIQYQtYCAgAAhCUGogsCAAEENEIKBgIAAIQogByAENwNYIAcgA0KEgICAcIM3A1AgByAINwNIIAcgATcDQCAHIAY3AzhBACELAkACQANAAkAgC0EoRw0AQQAhCwJAA0AgC0EoRg0BIAcgC2ogB0E4aiALaikDADcDACALQQhqIQsMAAsLIAkgCiAHQQUQp4CAgAAQqICAgAACQCAFUCACQgBTIAJQGw0AIAkQtoCAgAAgACAGIAUgAhCpgICAAAsCQAJAIAQQ3ICAgAAiC0H/AXFBfmoOAwEAAQALQoOAgIDAABC4gICAAAALIAcgBBDegICAACAFIAcpAwBUIAIgBykDCCIAUyACIABRGw0FEPeAgIAAQgF8IgBQDQMgB0EENgIAIAcgABCzgICAAAJAIAtB/wFxQQRHDQAgB0EANgIAIARChICAgBBChICAgNAAEIyAgIAAIgQQiICAgABCgICAgHCDQoCAgIDAAFINAyAEIAdBBBCFgYCAACAHKAIAIgtBGHQgC0GA/gNxQQh0ciALQQh2QYD+A3EgC0EYdnJyIgsQ8ICAgABCAXwiBFANBCALIAQQ5oCAgAAQhYCAgAAhBCAHIAtBARDsgICAABDagICAAEIAQgAQ4YCAgAAgBCAFIAJCAEIAIAQQtICAgAALIAdB4ABqJICAgIAAQgIPCyAHIAtqQgI3AwAgC0EIaiELDAALCxCGgYCAAAALEL+AgIAAAAsAC0KDgICAMBC4gICAAAALHwAgAEIEIAGtQiCGQgSEIAKtQiCGQgSEEJuAgIAAGgsJABC/gICAAAALLwACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQwICAgAAPCwAL/gMHAX8DfgF/AX4BfwF+AX8jgICAgABBMGsiASSAgICAAAJAAkAgAEL/AYNCywBSDQAQzYCAgAAgAUEIahDBgICAAAJAIAEoAghBAUcNACABKAIMIAEoAhAQwoCAgAALIAAQj4CAgABCIIghAkIAIQMCQANAIAMgAlENASAAIANCIIZCBIQQkICAgAAhBEEAIQUCQANAIAVBGEYNASABQQhqIAVqQgI3AwAgBUEIaiEFDAALC0EBIQUCQCAEQv8Bg0LMAFINACAEQeiCwIAAQQMgAUEIakEDELyAgIAAIAEpAwgiBEL/AYNCBFINACABKQMQIgZC/wGDQgRSDQAgByAGQiCIpyABKQMYIgZC/wGDQsgAUiIFGyEHIAggBiAFGyEIIAkgBEIgiKcgBRshCQsgA0L/////D1ENAyAFDQMgASAHNgIUIAEgCTYCECABIAg3AwggAUEIahCJgYCAACAJIAcQw4CAgAAgCEIBEIKAgIAAGiABQSRqEMSAgIAAAkAgASgCJEEBRw0AIAkgByABKAIoIAEoAiwQxYCAgAALIANCAXwhAwwACwtBj4PAgABBExCCgYCAABCKgYCAACEDIAEgADcDCCADQbiDwIAAQQEgAUEIakEBEO6AgIAAEJGAgIAAGiABQTBqJICAgIAAQgIPCwALEL+AgIAAAAvWAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAKQMAIgIQiICAgABC/////x9YDQAgAkEAQQIQ34CAgAAiAhCIgICAAEKAgICAcINCgICAgCBSDQEgAUEAOwEOIAIQiICAgABCgICAgHCDQoCAgIAgUg0CIAIgAUEOakECEIWBgIAAIAEvAQ5BgAZHDQMgAUEQaiSAgICAAA8LQoOAgICA/QAQuICAgAAAC0KDgICAgIIBELiAgIAAAAsQhoGAgAAAC0KDgICAgPoBELiAgIAAAAtjAwF/AX4BfyOAgICAAEEQayIBJICAgIAAIAEgADcDAEICIQJBASEDAkADQCADRQ0BIANBf2ohAyAAIQIMAAsLIAEgAjcDCCABQQhqQQEQp4CAgAAhACABQRBqJICAgIAAIAALggIBA38jgICAgABBIGsiAySAgICAAAJAAkAgAEL/AYNCBFINACABQv8Bg0IEUg0AIAJC/wGDQsgAUg0AIABCIIinIQQgAUIgiKchBSADIAI3AwggA0EUahDBgICAAAJAIAMoAhRBAUcNACADKAIYIAMoAhwQwoCAgAALAkAgBCAFEMCAgIAAIgAQiICAgABCgICAgBBUDQACQCACEIiAgIAAQoCAgIAQWg0AIAAhAgwBCyACEIiAgIAAQv////8fWA0CIANBCGoQiYGAgAAgACACQQIQjIGAgAAQjoCAgAAhAgsgA0EgaiSAgICAACACDwsAC0KDgICAgPoBELiAgIAAAAslACAAIAGtQiCGQgSEIAAQiICAgABCgICAgHCDQgSEEIyAgIAAC54BAgF/AX4jgICAgABBIGsiACSAgICAACAAQRBqEMGAgIAAAkAgACgCEEEBRw0AIAAoAhQgACgCGBDCgICAAAsgAEEQahCOgYCAAAJAAkAgACgCEA0AIAApAxghASAAQRBqEI6BgIAAIAAoAhBBAUcNAQsACyAAIAApAxg3AwggACABNwMAIABBAhCngICAACEBIABBIGokgICAgAAgAQsMACAAQgEQgYGAgAALCAAQtYCAgAALUQEBfyOAgICAAEEQayIBJICAgIAAAkAgAEL/AYNCBFENAAALIAEgAEIgiKcQuYCAgAAgASkDACABKQMIEJGBgIAAIQAgAUEQaiSAgICAACAACw0AIAFCAiAAp0EBcRsLugIEAX8BfgF/AX4jgICAgABBEGsiAiSAgICAAAJAIABC/wGDQgRSDQACQAJAIAFCAlINAEIAIQEMAQsgAiABEL6AgIAAIAIoAgBBAUYNASACKQMIIQNCASEBCxDNgICAACACEMGAgIAAAkAgAigCAEEBRw0AIAIoAgQgAigCCBDCgICAAAtBASAAQiCIpyIEEMaAgIAAIQUCQAJAIAFQDQAgBSADQgEQgoCAgAAaIAIQxICAgAAgAigCAEEBRw0BIAQgAigCBCACKAIIEMeAgIAADAELIAVCARCSgICAABoLQo7yqrzw1qrrABCKgYCAACEFIAIgASADEJGBgIAANwMIIAIgAEKEgICAcIM3AwAgBUHIgsCAAEECIAJBAhDugICAABCRgICAABogAkEQaiSAgICAAEICDwsAC4cBAgF/AX4jgICAgABBEGsiASSAgICAACABIAAQt4CAgAACQCABKQMAIgBCAlENACABKQMIIQIQzYCAgAAgARDBgICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQwoCAgAALELWAgIAAEIWAgIAAIAAgAhDqgICAACABQRBqJICAgIAAQgIPCwAL4gQBBX8jgICAgABB0ABrIgIkgICAgAAgAkEoaiAAEJWBgIAAAkAgAigCKEECRg0AIAJBCGpBCGogAkEoakEIaiIDKAIANgIAIAIgAikCKDcDCCACQShqIAEQlYGAgAAgAigCKEECRg0AIAJBGGpBCGogAygCADYCACACIAIpAig3AxggAkEoahDBgICAAAJAIAIoAihBAUcNACACKAIsIAIoAjAQwoCAgAALEM2AgIAAAkACQAJAEMuAgIAADQAQloGAgAAiA0GA+4ADIANBgPuAA0kbIQQgAiACQRhqNgIsIAIgAkEIajYCKEEAIQMDQCADQQhGDQMCQCACQShqIANqKAIAIgUoAgBBAXFFDQAgBSgCCCIGIARLDQMgBSgCBCAGSw0DCyADQQRqIQMMAAsLQoOAgIDQ/wAQuICAgAAAC0KDgICAwP8AELiAgIAAAAsCQAJAIAIoAghBAUcNAEEBIAIoAgwgAigCEBCXgYCAAAwBC0EBEMyAgIAAQgIQkoCAgAAaCwJAAkAgAigCGEEBRw0AQQIgAigCHCACKAIgEJeBgIAADAELQQIQzICAgABCAhCSgICAABoLIAJBKGpBCGogAkEIakEIaigCADYCACACQTxqIAJBGGpBCGooAgA2AgAgAiACKQMINwMoIAIgAikDGDcCNEH8hMCAAEEPEIKBgIAAEIqBgIAAIQAgAkEoahCYgYCAACEBIAIgAkE0ahCYgYCAADcDSCACIAE3A0AgAEGghcCAAEECIAJBwABqQQIQ7oCAgAAQkYCAgAAaIAJB0ABqJICAgIAAQgIPCwALaAEBfyOAgICAAEEQayICJICAgIAAAkACQCABQgJRDQAgAkEEaiABEKmBgIAAAkAgAigCBEUNACAAQQI2AgAMAgsgACACKQIINwIEIABBATYCAAwBCyAAQQA2AgALIAJBEGokgICAgAALMwECfhCggICAACEAAkAQoYCAgABCIIgiASAAQiCIIgBUDQAgAacgAKdrDwsQv4CAgAAAC1YCAX8BfiOAgICAAEEQayIDJICAgIAAIAAQzICAgAAhBCADIAEgAhCqgYCAAAJAIAMoAgBBAUcNAAALIAQgAykDCEICEIKAgIAAGiADQRBqJICAgIAAC0MCAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABCagYCAAAJAIAEoAgBBAUcNAAALIAEpAwghAiABQRBqJICAgIAAIAILwgECAn8BfiOAgICAAEHAAGsiACSAgICAACAAQQhqEMGAgIAAAkAgACgCCEEBRw0AIAAoAgwgACgCEBDCgICAAAsgAEEIahDBgICAACAAQRRqIgEQxICAgAAgAEEwaiAAQQhqEJqBgIAAAkACQCAAKAIwDQAgACkDOCECIABBMGogARCagYCAACAAKAIwQQFHDQELAAsgACAAKQM4NwMoIAAgAjcDICAAQSBqQQIQp4CAgAAhAiAAQcAAaiSAgICAACACCzAAAkAgASgCAEEBRw0AIAAgASgCBCABKAIIEKqBgIAADwsgAEIANwMAIABCAjcDCAuqAQEBfyOAgICAAEEgayIAJICAgIAAIABBDGoQwYCAgAACQCAAKAIMQQFHDQAgACgCECAAKAIUEMKAgIAACxDNgICAAAJAEMuAgIAARQ0AQoOAgIDg/wAQuICAgAAAC0EAEMyAgIAAQgFCAhCCgICAABpBsIXAgABBEhCCgYCAABCKgYCAAEEEQQAgAEEYakEAEO6AgIAAEJGAgIAAGiAAQSBqJICAgIAAQgILCQAQy4CAgACtCzEAAkAgAEL/AYNCBFINACABQv8Bg0IEUg0AIABCIIinIAFCIIinEMKAgIAAQgIPCwALPgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABDQgICAACAAKQMAIAApAwgQkYGAgAAhASAAQRBqJICAgIAAIAELPgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABDTgICAACAAKQMAIAApAwgQkYGAgAAhASAAQRBqJICAgIAAIAELfQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQCAAQv8Bg0LNAFINACABQQRqEMGAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBDCgICAAAsQz4CAgAAhAhDSgICAACAAEOmAgIAAIAIgABChgYCAACABQRBqJICAgIAAQgIPCwALYQIBfwF+I4CAgIAAQRBrIgIkgICAgABByYPAgABBFRCCgYCAABCKgYCAACEDIAIgADcDCCACIAE3AwAgA0Hwg8CAAEECIAJBAhDugICAABCRgICAABogAkEQaiSAgICAAAvcAgIBfwJ+I4CAgIAAQSBrIgIkgICAgAACQAJAAkAgAEL/AYNCzQBSDQAgAUL/AYNCBFINACACQQhqEMGAgIAAAkAgAigCCEEBRw0AIAIoAgwgAigCEBDCgICAAAsQz4CAgAAhAwJAAkAgAUL/////D1YNACACQQhqENOAgIAAIAIpAxAhASACKQMIQYgIENGAgIAAIAEgABD+gICAAEUNAxCjgYCAAAwBCxCWgYCAACABQiCIp0kNA0EBIABCABCkgYCAAEEBENSAgIAAQgAgAUKEgICAcIMiASABEICAgIAAGkGAhMCAAEEWEIKBgIAAEIqBgIAAIQQgAiABNwMYIAIgAzcDECACIAA3AwggBEGchMCAAEEDIAJBCGpBAxDugICAABCRgICAABoLIAJBIGokgICAgABCAg8LAAtCg4CAgOCAARC4gICAAAALQoOAgIDwgAEQuICAgAAACxMAQQEQ1ICAgABCABCSgICAABoLFQAgABDUgICAACABIAIQgoCAgAAaC6cBAgF/An4jgICAgABBEGsiACSAgICAACAAEMGAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBDCgICAAAsgABDTgICAACAAKQMIIQEgACkDAEGICBDRgICAACABEIeAgIAAGiAAENWAgIAAAkAgACgCAA0AEMiAgIAAAAsgACkDCCECEKOBgIAAIAEQ6YCAgAAgAiABEKGBgIAAIABBEGokgICAgABCAgugAQIBfwJ+I4CAgIAAQRBrIgAkgICAgAAgABDBgICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQwoCAgAALEM+AgIAAIQEQ0oCAgABBABDUgICAAEICEJKAgIAAGkG0hMCAAEETEIKBgIAAEIqBgIAAIQIgACABNwMAIAJByITAgABBASAAQQEQ7oCAgAAQkYCAgAAaIABBEGokgICAgABCAgsJABDKgICAAAAL2wECAX4EfwJAAkAgAkEJSw0AQgAhAyACIQQgASEFA0ACQCAEDQAgA0IIhkIOhCEDDAMLQQEhBgJAIAUtAAAiB0HfAEYNAAJAIAdBUGpB/wFxQQpJDQACQCAHQb9/akH/AXFBGkkNACAHQZ9/akH/AXFBGUsNBCAHQUVqIQYMAgsgB0FLaiEGDAELIAdBUmohBgsgA0IGhiAGrUL/AYOEIQMgBEF/aiEEIAVBAWohBQwACwsgAa1CIIZCBIQgAq1CIIZCBIQQmYCAgAAhAwsgAEIANwMAIAAgAzcDCAutAQICfwF+I4CAgIAAQRBrIgIkgICAgABBACEDAkADQCADQRBGDQEgAiADakICNwMAIANBCGohAwwACwtBASEDAkAgAUL/AYNCzABSDQAgAUHshMCAAEECIAJBAhC8gICAACACKQMAIgFC/wGDQgRSDQAgAikDCCIEQv8Bg0IEUg0AIAAgAUIgiKc2AgggACAEQiCIPgIEQQAhAwsgACADNgIAIAJBEGokgICAgAALYAIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABrUIghkIEhDcDCCADIAKtQiCGQgSENwMAQeyEwIAAQQIgA0ECEO6AgIAAIQQgAEIANwMAIAAgBDcDCCADQRBqJICAgIAAC3cCAn8BfiOAgICAAEEQayICJICAgIAAQQAhAwJAAkAgARDMgICAACIEQgIQrYCAgABFDQAgAkEEaiAEQgIQgYCAgAAQqYGAgABBASEDIAIoAgRBAUYNASAAIAIpAgg3AgQLIAAgAzYCACACQRBqJICAgIAADwsACwvkBQEAQYCAwAAL2gVFSURNYXhSZWNlaXZlZE5vbmNlT3JkZXJlZE5vbmNlQ291bnRDb21wb3NlZENvdW50SW5ib3VuZENvdW50T3V0Ym91bmRDb3VudG1lc3NhZ2Vkc3RfZWlkcGF5X2luX3pyb3JlY2VpdmVyAABRABAABwAAAEoAEAAHAAAAYAEQAAcAAABYABAACgAAAGIAEAAIAAAAbm9uY2VzZW5kZXJzcmNfZWlkAACUABAABQAAAJkAEAAGAAAAnwAQAAcAAABuYXRpdmVfZmVlenJvX2ZlZQAAAMAAEAAKAAAAygAQAAcAAABmZWVndWlkAOQAEAADAAAA5wAQAAQAAACUABAABQAAAG5hdGl2ZV90b2tlbnNldF9kZWxlZ2F0ZXNlbmRfY29tcG9zZWNsZWFyX2NvbXBvc2VFbmRwb2ludFBlZXJlaWRwZWVyQQEQAAMAAABEARAABAAAAG1zZ190eXBlb3B0aW9ucwBBARAAAwAAAFgBEAAIAAAAYAEQAAcAAABFbmZvcmNlZE9wdGlvbnNlbmZvcmNlZF9vcHRpb25fc2V0ZW5mb3JjZWRfb3B0aW9uX3BhcmFtc6IBEAAWAAAAdGhyZXNob2xkb3duZXJzaGlwX3RyYW5zZmVycmVkbmV3X293bmVyb2xkX293bmVy3gEQAAkAAADnARAACQAAAG93bmVyc2hpcF90cmFuc2ZlcnJpbmd0dGwAAADeARAACQAAAOcBEAAJAAAAFgIQAAMAAABvd25lcnNoaXBfcmVub3VuY2VkAOcBEAAJAAAAT3duZXJQZW5kaW5nT3duZXJleHRlbmRfdG8AAGECEAAJAAAAwAEQAAkAAAB0dGxfY29uZmlnc19zZXRpbnN0YW5jZXBlcnNpc3RlbnQAAACLAhAACAAAAJMCEAAKAAAAdHRsX2NvbmZpZ3NfZnJvemVuRnJvemVuSW5zdGFuY2VQZXJzaXN0ZW50AMudAQ5jb250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CiogYGV4ZWN1dG9yYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBleGVjdXRvciBmb3IgdGhlIHJlY2VpdmVkIG1lc3NhZ2UKKiBgb3JpZ2luYCAtIFRoZSBvcmlnaW4gaW5mb3JtYXRpb24gY29udGFpbmluZyB0aGUgc291cmNlIGVuZHBvaW50IGFuZCBzZW5kZXIgYWRkcmVzczoKLSBgc3JjX2VpZGA6IFRoZSBzb3VyY2UgY2hhaW4gZW5kcG9pbnQgSUQKLSBgc2VuZGVyYDogVGhlIHNlbmRlciBhZGRyZXNzIG9uIHRoZSBzb3VyY2UgY2hhaW4KLSBgbm9uY2VgOiBUaGUgbm9uY2Ugb2YgdGhlIG1lc3NhZ2UKKiBgZ3VpZGAgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZWNlaXZlZCBMYXllclplcm8gbWVzc2FnZQoqIGBtZXNzYWdlYCAtIFRoZSBwYXlsb2FkIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlCiogYGV4dHJhX2RhdGFgIC0gQWRkaXRpb25hbCBhcmJpdHJhcnkgZGF0YSBwcm92aWRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBleGVjdXRvcgoqIGB2YWx1ZWAgLSBUaGUgbmF0aXZlIHRva2VuIHZhbHVlIHNlbnQgd2l0aCB0aGUgbWVzc2FnZQAAAAAKbHpfcmVjZWl2ZQAAAAAABgAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAABGd1aWQAAAPuAAAAIAAAAAAAAAAHbWVzc2FnZQAAAAAOAAAAAAAAAApleHRyYV9kYXRhAAAAAAAOAAAAAAAAAAV2YWx1ZQAAAAAAAAsAAAAAAAAAAAAAAexJbmRpY2F0ZXMgd2hldGhlciBhbiBhZGRyZXNzIGlzIGFuIGFwcHJvdmVkIGNvbXBvc2VNc2cgc2VuZGVyIHRvIHRoZSBFbmRwb2ludC4KCkFwcGxpY2F0aW9ucyBjYW4gb3B0aW9uYWxseSBjaG9vc2UgdG8gaW1wbGVtZW50IHNlcGFyYXRlIGNvbXBvc2VNc2cgc2VuZGVycyB0aGF0IGFyZSBOT1QgdGhlIGJyaWRnaW5nIGxheWVyLgpUaGUgZGVmYXVsdCBzZW5kZXIgSVMgdGhlIE9BcHBSZWNlaXZlciBpbXBsZW1lbnRlci4KCiMgQXJndW1lbnRzCiogYG9yaWdpbmAgLSBUaGUgb3JpZ2luIGluZm9ybWF0aW9uIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBlbmRwb2ludCBhbmQgc2VuZGVyIGFkZHJlc3MKKiBgbWVzc2FnZWAgLSBUaGUgbHpSZWNlaXZlIHBheWxvYWQKKiBgc2VuZGVyYCAtIFRoZSBzZW5kZXIgYWRkcmVzcyB0byBjaGVjawoKIyBSZXR1cm5zClRydWUgaWYgdGhlIHNlbmRlciBpcyBhIHZhbGlkIGNvbXBvc2VNc2cgc2VuZGVyLCBmYWxzZSBvdGhlcndpc2UAAAAVaXNfY29tcG9zZV9tc2dfc2VuZGVyAAAAAAAAAwAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAAdtZXNzYWdlAAAAAA4AAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAABAAAAAAAAAAAAAAAKbHpfY29tcG9zZQAAAAAABwAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAEZ3VpZAAAA+4AAAAgAAAAAAAAAAVpbmRleAAAAAAAAAQAAAAAAAAAB21lc3NhZ2UAAAAADgAAAAAAAAAKZXh0cmFfZGF0YQAAAAAADgAAAAAAAAAFdmFsdWUAAAAAAAALAAAAAAAAAAAAAADZUmV0cmlldmVzIHRoZSBlbmZvcmNlZCBvcHRpb25zIGZvciBhIGdpdmVuIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECiogYG1zZ190eXBlYCAtIFRoZSBPQXBwIG1lc3NhZ2UgdHlwZQoKIyBSZXR1cm5zClRoZSBlbmZvcmNlZCBvcHRpb25zIGZvciB0aGUgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZQAAAAAAABBlbmZvcmNlZF9vcHRpb25zAAAAAgAAAAAAAAADZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAEAAAAOAAAAAAAAAptTZXRzIHRoZSBlbmZvcmNlZCBvcHRpb25zIGZvciBzcGVjaWZpYyBlbmRwb2ludCBhbmQgbWVzc2FnZSB0eXBlIGNvbWJpbmF0aW9ucy4KCk9ubHkgdGhlIGBhdXRob3JpemVyYCBvZiB0aGUgT0FwcCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLgpQcm92aWRlcyBhIHdheSBmb3IgdGhlIE9BcHAgdG8gZW5mb3JjZSB0aGluZ3MgbGlrZSBwYXlpbmcgZm9yIFByZUNyaW1lLCBBTkQvT1IgbWluaW11bSBkc3QgbHpSZWNlaXZlIGdhcyBhbW91bnRzIGV0Yy4KVGhlc2UgZW5mb3JjZWQgb3B0aW9ucyBjYW4gdmFyeSBhcyB0aGUgcG90ZW50aWFsIG9wdGlvbnMvZXhlY3V0aW9uIG9uIHRoZSByZW1vdGUgbWF5IGRpZmZlciBhcyBwZXIgdGhlIG1zZ190eXBlLgplLmcuIEFtb3VudCBvZiBselJlY2VpdmUoKSBnYXMgbmVjZXNzYXJ5IHRvIGRlbGl2ZXIgYSBsekNvbXBvc2UoKSBtZXNzYWdlIGFkZHMgb3ZlcmhlYWQgeW91IGRvbid0IHdhbnQgdG8gcGF5CmlmIHlvdSBhcmUgb25seSBtYWtpbmcgYSBzdGFuZGFyZCBMYXllclplcm8gbWVzc2FnZSBpZS4gbHpSZWNlaXZlKCkgV0lUSE9VVCBzZW5kQ29tcG9zZSgpLgoKIyBBcmd1bWVudHMKKiBgb3B0aW9uc2AgLSBBIHZlY3RvciBvZiBFbmZvcmNlZE9wdGlvblBhcmFtIHN0cnVjdHVyZXMgc3BlY2lmeWluZyBlbmZvcmNlZCBvcHRpb25zAAAAABRzZXRfZW5mb3JjZWRfb3B0aW9ucwAAAAEAAAAAAAAAB29wdGlvbnMAAAAD6gAAB9AAAAATRW5mb3JjZWRPcHRpb25QYXJhbQAAAAAAAAAAAAAAAnpDb21iaW5lcyBvcHRpb25zIGZvciBhIGdpdmVuIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUuCgpJZiB0aGVyZSBpcyBhbiBlbmZvcmNlZCBselJlY2VpdmUgb3B0aW9uOgotIHtnYXNfbGltaXQ6IDIwMGssIHZhbHVlOiAxIFhMTX0gQU5EIGEgY2FsbGVyIHN1cHBsaWVzIGEgbHpSZWNlaXZlIG9wdGlvbjoge2dhc19saW1pdDogMTAwaywgdmFsdWU6IDAuNSBYTE19Ci0gVGhlIHJlc3VsdGluZyBvcHRpb25zIHdpbGwgYmUge2dhc19saW1pdDogMzAwaywgdmFsdWU6IDEuNSBYTE19IHdoZW4gdGhlIG1lc3NhZ2UgaXMgZXhlY3V0ZWQgb24gdGhlIHJlbW90ZSBsel9yZWNlaXZlKCkgZnVuY3Rpb24uClRoZSBwcmVzZW5jZSBvZiBkdXBsaWNhdGVkIG9wdGlvbnMgaXMgaGFuZGxlZCBvZmYtY2hhaW4gaW4gdGhlIHZlcmlmaWVyL2V4ZWN1dG9yLgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIFRoZSBlbmRwb2ludCBJRAoqIGBtc2dfdHlwZWAgLSBUaGUgT0FwcCBtZXNzYWdlIHR5cGUKKiBgZXh0cmFfb3B0aW9uc2AgLSBBZGRpdGlvbmFsIG9wdGlvbnMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIKCiMgUmV0dXJucwpUaGUgY29tYmluYXRpb24gb2YgY2FsbGVyIHNwZWNpZmllZCBvcHRpb25zIEFORCBlbmZvcmNlZCBvcHRpb25zAAAAAAAPY29tYmluZV9vcHRpb25zAAAAAAMAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAADWV4dHJhX29wdGlvbnMAAAAAAAAOAAAAAQAAAA4AAAAAAAAArlJldHJpZXZlcyB0aGUgT0FwcCB2ZXJzaW9uIGluZm9ybWF0aW9uLgoKIyBSZXR1cm5zCkEgdHVwbGUgY29udGFpbmluZzoKLSBgc2VuZGVyX3ZlcnNpb25gOiBUaGUgdmVyc2lvbiBvZiB0aGUgT0FwcFNlbmRlcgotIGByZWNlaXZlcl92ZXJzaW9uYDogVGhlIHZlcnNpb24gb2YgdGhlIE9BcHBSZWNlaXZlcgAAAAAADG9hcHBfdmVyc2lvbgAAAAAAAAABAAAD7QAAAAIAAAAGAAAABgAAAAAAAABsUmV0cmlldmVzIHRoZSBMYXllclplcm8gZW5kcG9pbnQgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIE9BcHAuCgojIFJldHVybnMKVGhlIExheWVyWmVybyBlbmRwb2ludCBhZGRyZXNzAAAACGVuZHBvaW50AAAAAAAAAAEAAAATAAAAAAAAAMFSZXRyaWV2ZXMgdGhlIHBlZXIgKE9BcHApIGFzc29jaWF0ZWQgd2l0aCBhIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECgojIFJldHVybnMKVGhlIHBlZXIgYWRkcmVzcyAoT0FwcCBpbnN0YW5jZSkgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGVuZHBvaW50AAAAAAAABHBlZXIAAAABAAAAAAAAAANlaWQAAAAABAAAAAEAAAPoAAAD7gAAACAAAAAAAAAA5VNldHMgb3IgcmVtb3ZlcyB0aGUgcGVlciBhZGRyZXNzIChPQXBwIGluc3RhbmNlKSBmb3IgYSBjb3JyZXNwb25kaW5nIGVuZHBvaW50LgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIFRoZSBlbmRwb2ludCBJRAoqIGBwZWVyYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBwZWVyIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlbmRwb2ludCwgb3IgTm9uZSB0byByZW1vdmUgdGhlIHBlZXIAAAAAAAAIc2V0X3BlZXIAAAACAAAAAAAAAANlaWQAAAAABAAAAAAAAAAEcGVlcgAAA+gAAAPuAAAAIAAAAAAAAAAAAAAAjlNldHMgdGhlIGRlbGVnYXRlIGFkZHJlc3MgZm9yIHRoZSBPQXBwIENvcmUuCgojIEFyZ3VtZW50cwoqIGBkZWxlZ2F0ZWAgLSBUaGUgYWRkcmVzcyBvZiB0aGUgZGVsZWdhdGUgdG8gYmUgc2V0LCBvciBOb25lIHRvIHJlbW92ZSB0aGUgZGVsZWdhdGUAAAAAAAxzZXRfZGVsZWdhdGUAAAABAAAAAAAAAAhkZWxlZ2F0ZQAAA+gAAAATAAAAAAAAAAAAAAGPU2V0cyBUVEwgY29uZmlncyBmb3IgaW5zdGFuY2UgYW5kIHBlcnNpc3RlbnQgc3RvcmFnZS4KCi0gYE5vbmVgIHZhbHVlcyByZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgY29uZmlnIChkaXNhYmxlcyBhdXRvLWV4dGVuc2lvbiBmb3IgdGhhdCB0eXBlKQotIFZhbGlkYXRlcyB0aGF0IGB0aHJlc2hvbGQgPD0gZXh0ZW5kX3RvIDw9IE1BWF9UVExgCgojIEFyZ3VtZW50cwotIGBpbnN0YW5jZWAgLSBUVEwgY29uZmlnIGZvciBpbnN0YW5jZSBzdG9yYWdlCi0gYHBlcnNpc3RlbnRgIC0gVFRMIGNvbmZpZyBmb3IgcGVyc2lzdGVudCBzdG9yYWdlCgojIFBhbmljcwotIGBUdGxDb25maWdGcm96ZW5gIGlmIGNvbmZpZ3MgYXJlIGZyb3plbgotIGBJbnZhbGlkVHRsQ29uZmlnYCBpZiB2YWxpZGF0aW9uIGZhaWxzAAAAAA9zZXRfdHRsX2NvbmZpZ3MAAAAAAgAAAAAAAAAIaW5zdGFuY2UAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAASFJldHVybnMgdGhlIGN1cnJlbnQgVFRMIGNvbmZpZ3MgYXMgKGluc3RhbmNlX2NvbmZpZywgcGVyc2lzdGVudF9jb25maWcpLgAAAAt0dGxfY29uZmlncwAAAAAAAAAAAQAAA+0AAAACAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAOFQZXJtYW5lbnRseSBmcmVlemVzIFRUTCBjb25maWdzLCBwcmV2ZW50aW5nIGFueSBmdXR1cmUgbW9kaWZpY2F0aW9ucy4KClRoaXMgaXMgaXJyZXZlcnNpYmxlIGFuZCBwcm92aWRlcyBpbW11dGFiaWxpdHkgZ3VhcmFudGVlcyB0byB1c2Vycy4KRW1pdHMgYFR0bENvbmZpZ3NGcm96ZW5gIGV2ZW50LgoKIyBQYW5pY3MKLSBgVHRsQ29uZmlnQWxyZWFkeUZyb3plbmAgaWYgYWxyZWFkeSBmcm96ZW4AAAAAAAASZnJlZXplX3R0bF9jb25maWdzAAAAAAAAAAAAAAAAAAAAAAAnUmV0dXJucyB3aGV0aGVyIFRUTCBjb25maWdzIGFyZSBmcm96ZW4uAAAAABVpc190dGxfY29uZmlnc19mcm96ZW4AAAAAAAAAAAAAAQAAAAEAAAAAAAAApUV4dGVuZHMgdGhlIGluc3RhbmNlIFRUTC4KCiMgQXJndW1lbnRzCgoqIGB0aHJlc2hvbGRgIC0gVGhlIHRocmVzaG9sZCB0byBleHRlbmQgdGhlIFRUTCAoaWYgY3VycmVudCBUVEwgaXMgYmVsb3cgdGhpcywgZXh0ZW5kKS4KKiBgZXh0ZW5kX3RvYCAtIFRoZSBUVEwgdG8gZXh0ZW5kIHRvLgAAAAAAABNleHRlbmRfaW5zdGFuY2VfdHRsAAAAAAIAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAACWV4dGVuZF90bwAAAAAAAAQAAAAAAAAAAAAAAD5SZXR1cm5zIHRoZSBjdXJyZW50IG93bmVyIGFkZHJlc3MsIG9yIE5vbmUgaWYgbm8gb3duZXIgaXMgc2V0LgAAAAAABW93bmVyAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAABZUmV0dXJucyB0aGUgcGVuZGluZyBvd25lciBhZGRyZXNzIGZvciAyLXN0ZXAgdHJhbnNmZXIsIG9yIE5vbmUgaWYgbm8gdHJhbnNmZXIgaXMgcGVuZGluZy4AAAAAAAANcGVuZGluZ19vd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAABK1RyYW5zZmVycyBvd25lcnNoaXAgaW1tZWRpYXRlbHkgdG8gYSBuZXcgYWRkcmVzcy4KClVzZSB3aXRoIGNhdXRpb24gLSBpZiB5b3UgdHJhbnNmZXIgdG8gYSB3cm9uZyBhZGRyZXNzLCBvd25lcnNoaXAgaXMgbG9zdCBmb3JldmVyLgpDb25zaWRlciB1c2luZyBgcHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXJgIGluc3RlYWQuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzAAAAABJ0cmFuc2Zlcl9vd25lcnNoaXAAAAAAAAEAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAlxQcm9wb3NlcyBhbiBvd25lcnNoaXAgdHJhbnNmZXIgdG8gYSBuZXcgYWRkcmVzcy4KClRoZSBuZXcgb3duZXIgbXVzdCBjYWxsIGBhY2NlcHRfb3duZXJzaGlwKClgIHdpdGhpbiBgdHRsYCBsZWRnZXJzCnRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zlci4gVGhlIHBlbmRpbmcgdHJhbnNmZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cGlyZSBhZnRlci4KCiMgQXJndW1lbnRzCi0gYG5ld19vd25lcmAgLSBUaGUgcHJvcG9zZWQgbmV3IG93bmVyCi0gYHR0bGAgLSBOdW1iZXIgb2YgbGVkZ2VycyB0aGUgbmV3IG93bmVyIGhhcyB0byBhY2NlcHQuClVzZSBgMGAgdG8gY2FuY2VsIGEgcGVuZGluZyB0cmFuc2ZlciAobmV3X293bmVyIG11c3QgbWF0Y2ggcGVuZGluZykuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBOb1BlbmRpbmdUcmFuc2ZlcmAgd2hlbiBjYW5jZWxsaW5nIGFuZCBubyBwZW5kaW5nIHRyYW5zZmVyIGV4aXN0cwotIGBJbnZhbGlkVHRsYCBpZiB0dGwgZXhjZWVkcyBtYXggVFRMCi0gYEludmFsaWRQZW5kaW5nT3duZXJgIHdoZW4gY2FuY2VsbGluZyB3aXRoIHdyb25nIG5ld19vd25lciBhZGRyZXNzAAAAGnByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyAAAAAAACAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAN0dGwAAAAABAAAAAAAAAAAAAAAuUFjY2VwdHMgYSBwZW5kaW5nIDItc3RlcCBvd25lcnNoaXAgdHJhbnNmZXIuCgpNdXN0IGJlIGNhbGxlZCBieSB0aGUgcGVuZGluZyBvd25lciBiZWZvcmUgdGhlIFRUTCBleHBpcmVzLgoKIyBQYW5pY3MKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgdHJhbnNmZXIgKG9yIGl0IGV4cGlyZWQpAAAAAAAAEGFjY2VwdF9vd25lcnNoaXAAAAAAAAAAAAAAAAAAAACkUGVybWFuZW50bHkgcmVub3VuY2VzIG93bmVyc2hpcC4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYFRyYW5zZmVySW5Qcm9ncmVzc2AgaWYgYSAyLXN0ZXAgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MgKGNhbmNlbCBpdCBmaXJzdCkAAAAScmVub3VuY2Vfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAA1FbmRwb2ludEVycm9yAAAAAAAAGQAAAAAAAAARQWxyZWFkeVJlZ2lzdGVyZWQAAAAAAAABAAAAAAAAAA1Db21wb3NlRXhpc3RzAAAAAAAAAgAAAAAAAAAPQ29tcG9zZU5vdEZvdW5kAAAAAAMAAAAAAAAAHERlZmF1bHRSZWNlaXZlTGliVW5hdmFpbGFibGUAAAAEAAAAAAAAABlEZWZhdWx0U2VuZExpYlVuYXZhaWxhYmxlAAAAAAAABQAAAAAAAAAVSW5zdWZmaWNpZW50TmF0aXZlRmVlAAAAAAAABgAAAAAAAAASSW5zdWZmaWNpZW50WnJvRmVlAAAAAAAHAAAAAAAAABBJbnZhbGlkRmVlQW1vdW50AAAACAAAAAAAAAANSW52YWxpZEV4cGlyeQAAAAAAAAkAAAAAAAAADEludmFsaWRJbmRleAAAAAoAAAAAAAAADEludmFsaWROb25jZQAAAAsAAAAAAAAAEkludmFsaWRQYXlsb2FkSGFzaAAAAAAADAAAAAAAAAAVSW52YWxpZFJlY2VpdmVMaWJyYXJ5AAAAAAAADQAAAAAAAAART25seU5vbkRlZmF1bHRMaWIAAAAAAAAOAAAAAAAAAA5Pbmx5UmVjZWl2ZUxpYgAAAAAADwAAAAAAAAART25seVJlZ2lzdGVyZWRMaWIAAAAAAAAQAAAAAAAAAAtPbmx5U2VuZExpYgAAAAARAAAAAAAAABRQYXRoTm90SW5pdGlhbGl6YWJsZQAAABIAAAAAAAAAEVBhdGhOb3RWZXJpZmlhYmxlAAAAAAAAEwAAAAAAAAATUGF5bG9hZEhhc2hOb3RGb3VuZAAAAAAUAAAAAAAAAAlTYW1lVmFsdWUAAAAAAAAVAAAAAAAAAAxVbmF1dGhvcml6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aGFpbiBtZXNzYWdlIGNhbWUgZnJvbS4AAAAAAAAAAAAABk9yaWdpbgAAAAAAAwAAABdOb25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAAFbm9uY2UAAAAAAAAGAAAALlNlbmRlciBhZGRyZXNzIG9uIHRoZSBzb3VyY2UgY2hhaW4gKDMyIGJ5dGVzKS4AAAAAAAZzZW5kZXIAAAAAA+4AAAAgAAAAJlNvdXJjZSBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAAHc3JjX2VpZAAAAAAEAAAAAQAAAChGZWUgc3RydWN0dXJlIGZvciBjcm9zcy1jaGFpbiBtZXNzYWdpbmcuAAAAAAAAAAxNZXNzYWdpbmdGZWUAAAACAAAAH0ZlZSBwYWlkIGluIG5hdGl2ZSB0b2tlbiAoWExNKS4AAAAACm5hdGl2ZV9mZWUAAAAAAAsAAAAoRmVlIHBhaWQgaW4gWlJPIHRva2VuIChMYXllclplcm8gdG9rZW4pLgAAAAd6cm9fZmVlAAAAAAsAAAABAAAAQlJlY2VpcHQgcmV0dXJuZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNlbmRpbmcgYSBjcm9zcy1jaGFpbiBtZXNzYWdlLgAAAAAAAAAAABBNZXNzYWdpbmdSZWNlaXB0AAAAAwAAAClUaGUgZmVlcyBjaGFyZ2VkIGZvciBzZW5kaW5nIHRoZSBtZXNzYWdlLgAAAAAAAANmZWUAAAAH0AAAAAxNZXNzYWdpbmdGZWUAAAArR2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBtZXNzYWdlLgAAAAAEZ3VpZAAAA+4AAAAgAAAAJFRoZSBvdXRib3VuZCBub25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAVub25jZQAAAAAAAAYAAAACAAAAOFR5cGUgb2YgbWVzc2FnZSBsaWJyYXJ5IGluZGljYXRpbmcgc3VwcG9ydGVkIG9wZXJhdGlvbnMuAAAAAAAAAA5NZXNzYWdlTGliVHlwZQAAAAAAAwAAAAAAAAAfU3VwcG9ydHMgb25seSBzZW5kaW5nIG1lc3NhZ2VzLgAAAAAEU2VuZAAAAAAAAAAhU3VwcG9ydHMgb25seSByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAAB1JlY2VpdmUAAAAAAAAAAC1TdXBwb3J0cyBib3RoIHNlbmRpbmcgYW5kIHJlY2VpdmluZyBtZXNzYWdlcy4AAAAAAAAOU2VuZEFuZFJlY2VpdmUAAAAAAAEAAAC3VmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgYSBtZXNzYWdlIGxpYnJhcnkuCgpOb3RlOiBgbWlub3JgIGFuZCBgZW5kcG9pbnRfdmVyc2lvbmAgdXNlIGB1MzJgIGluc3RlYWQgb2YgYHU4YCBiZWNhdXNlIFN0ZWxsYXIgZG9lcyBub3QKc3VwcG9ydCBgdThgIHR5cGVzIGluIGNvbnRyYWN0IGludGVyZmFjZSBmdW5jdGlvbnMuAAAAAAAAAAARTWVzc2FnZUxpYlZlcnNpb24AAAAAAAADAAAAM0VuZHBvaW50IHZlcnNpb24gKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAQZW5kcG9pbnRfdmVyc2lvbgAAAAQAAAAVTWFqb3IgdmVyc2lvbiBudW1iZXIuAAAAAAAABW1ham9yAAAAAAAABgAAADdNaW5vciB2ZXJzaW9uIG51bWJlciAoc2hvdWxkIG5vdCBleGNlZWQgdTg6Ok1BWCA9IDI1NSkuAAAAAAVtaW5vcgAAAAAAAAQAAAABAAAANlRpbWVvdXQgY29uZmlndXJhdGlvbiBmb3IgcmVjZWl2ZSBsaWJyYXJ5IHRyYW5zaXRpb25zLgAAAAAAAAAAAAdUaW1lb3V0AAAAAAIAAAAoVW5peCB0aW1lc3RhbXAgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLgAAAAZleHBpcnkAAAAAAAYAAAApVGhlIG5ldyBsaWJyYXJ5IGFkZHJlc3MgdG8gdHJhbnNpdGlvbiB0by4AAAAAAAADbGliAAAAABMAAAABAAAANVBhcmFtZXRlcnMgZm9yIHNldHRpbmcgbWVzc2FnZSBsaWJyYXJ5IGNvbmZpZ3VyYXRpb24uAAAAAAAAAAAAAA5TZXRDb25maWdQYXJhbQAAAAAAAwAAAB9YRFItZW5jb2RlZCBjb25maWd1cmF0aW9uIGRhdGEuAAAAAAZjb25maWcAAAAAAA4AAAAwVGhlIHR5cGUgb2YgY29uZmlndXJhdGlvbiAoZS5nLiwgZXhlY3V0b3IsIFVMTikuAAAAC2NvbmZpZ190eXBlAAAAAAQAAAAnVGhlIGVuZHBvaW50IElEIHRoaXMgY29uZmlnIGFwcGxpZXMgdG8uAAAAAANlaWQAAAAABAAAAAEAAAAxUmVzb2x2ZWQgbGlicmFyeSBpbmZvcm1hdGlvbiB3aXRoIGRlZmF1bHQgc3RhdHVzLgAAAAAAAAAAAAAPUmVzb2x2ZWRMaWJyYXJ5AAAAAAIAAABEV2hldGhlciB0aGlzIGlzIHRoZSBkZWZhdWx0IGxpYnJhcnkgKHRydWUpIG9yIE9BcHAtc3BlY2lmaWMgKGZhbHNlKS4AAAAKaXNfZGVmYXVsdAAAAAAAAQAAAB1UaGUgcmVzb2x2ZWQgbGlicmFyeSBhZGRyZXNzLgAAAAAAAANsaWIAAAAAEwAAAAEAAABIT3V0Ym91bmQgcGFja2V0IGNvbnRhaW5pbmcgYWxsIGluZm9ybWF0aW9uIGZvciBjcm9zcy1jaGFpbiB0cmFuc21pc3Npb24uAAAAAAAAAA5PdXRib3VuZFBhY2tldAAAAAAABwAAABhEZXN0aW5hdGlvbiBlbmRwb2ludCBJRC4AAAAHZHN0X2VpZAAAAAAEAAAALEdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG1lc3NhZ2UuAAAABGd1aWQAAAPuAAAAIAAAABRUaGUgbWVzc2FnZSBwYXlsb2FkLgAAAAdtZXNzYWdlAAAAAA4AAAAgT3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAMVJlY2VpdmVyIGFkZHJlc3Mgb24gZGVzdGluYXRpb24gY2hhaW4gKDMyIGJ5dGVzKS4AAAAAAAAIcmVjZWl2ZXIAAAPuAAAAIAAAAB9TZW5kZXIgYWRkcmVzcyBvbiBzb3VyY2UgY2hhaW4uAAAAAAZzZW5kZXIAAAAAABMAAAATU291cmNlIGVuZHBvaW50IElELgAAAAAHc3JjX2VpZAAAAAAEAAAAAQAAACtBIGZlZSByZWNpcGllbnQgd2l0aCB0aGUgYW1vdW50IHRvIGJlIHBhaWQuAAAAAAAAAAAMRmVlUmVjaXBpZW50AAAAAgAAABVBbW91bnQgb2YgZmVlIHRvIHBheS4AAAAAAAAGYW1vdW50AAAAAAALAAAAH1RoZSBhZGRyZXNzIHRvIHNlbmQgdGhlIGZlZSB0by4AAAAAAnRvAAAAAAATAAAAAQAAADxSZXN1bHQgb2Ygc2VuZCBvcGVyYXRpb24gY29udGFpbmluZyBmZWVzIGFuZCBlbmNvZGVkIHBhY2tldC4AAAAAAAAADUZlZXNBbmRQYWNrZXQAAAAAAAADAAAAKlRoZSBlbmNvZGVkIHBhY2tldCByZWFkeSBmb3IgdHJhbnNtaXNzaW9uLgAAAAAADmVuY29kZWRfcGFja2V0AAAAAAAOAAAAP0xpc3Qgb2YgbmF0aXZlIHRva2VuIGZlZSByZWNpcGllbnRzIChleGVjdXRvciwgRFZOcywgdHJlYXN1cnkpLgAAAAAVbmF0aXZlX2ZlZV9yZWNpcGllbnRzAAAAAAAD6gAAB9AAAAAMRmVlUmVjaXBpZW50AAAALExpc3Qgb2YgWlJPIHRva2VuIGZlZSByZWNpcGllbnRzICh0cmVhc3VyeSkuAAAAEnpyb19mZWVfcmVjaXBpZW50cwAAAAAD6gAAB9AAAAAMRmVlUmVjaXBpZW50AAAABAAAABRPQXBwRXJyb3I6IDIwMDAtMjA5OQAAAAAAAAAJT0FwcEVycm9yAAAAAAAABAAAAAAAAAAOSW52YWxpZE9wdGlvbnMAAAAAB9AAAAAAAAAABk5vUGVlcgAAAAAH0QAAAAAAAAAIT25seVBlZXIAAAfSAAAAAAAAABNacm9Ub2tlblVuYXZhaWxhYmxlAAAAB9MAAAACAAAAAAAAAAAAAAAPT0FwcENvcmVTdG9yYWdlAAAAAAIAAAAAAAAAAAAAAAhFbmRwb2ludAAAAAEAAAAAAAAABFBlZXIAAAABAAAABAAAAAUAAAAAAAAAAAAAAAdQZWVyU2V0AAAAAAEAAAAIcGVlcl9zZXQAAAACAAAAAAAAAANlaWQAAAAABAAAAAAAAAAAAAAABHBlZXIAAAPoAAAD7gAAACAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAMAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAAB29wdGlvbnMAAAAADgAAAAIAAAAAAAAAAAAAABdPQXBwT3B0aW9uc1R5cGUzU3RvcmFnZQAAAAABAAAAAQAAAAAAAAAPRW5mb3JjZWRPcHRpb25zAAAAAAIAAAAEAAAABAAAAAUAAAAAAAAAAAAAABFFbmZvcmNlZE9wdGlvblNldAAAAAAAAAEAAAATZW5mb3JjZWRfb3B0aW9uX3NldAAAAAABAAAAAAAAABZlbmZvcmNlZF9vcHRpb25fcGFyYW1zAAAAAAPqAAAH0AAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAAAAAACAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAYAAAAAAAAACkludmFsaWRUdGwAAAAABAcAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECAAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAkAAAAAAAAAC093bmVyTm90U2V0AAAABAoAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAECwAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAABAAAAAAAAABNNaWdyYXRpb25Ob3RBbGxvd2VkAAAABBoAAAAEAAAAGE11bHRpc2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlzaWdFcnJvcgAAAAAAAAgAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCUAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQmAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCcAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQoAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCkAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQqAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAEKwAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aXNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyByZW5vdW5jZWQuAAAAAAAAAAAAEk93bmVyc2hpcFJlbm91bmNlZAAAAAAAAQAAABNvd25lcnNoaXBfcmVub3VuY2VkAAAAAAEAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA5Pd25hYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVyAAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQAAAAFAAAAJ0V2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgc2V0LgAAAAAAAAAADVR0bENvbmZpZ3NTZXQAAAAAAAABAAAAD3R0bF9jb25maWdzX3NldAAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAABBUdGxDb25maWdTdG9yYWdlAAAAAwAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAISW5zdGFuY2UAAAAAAAAAAAAAAApQZXJzaXN0ZW50AAAAAAACAAAAAAAAAAAAAAASVXBncmFkZWFibGVTdG9yYWdlAAAAAAABAAAAAAAAAAAAAAAJTWlncmF0aW5nAAAAAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAFwAAAAAAbw5jb250cmFjdG1ldGF2MAAAAAAAAAAFcnN2ZXIAAAAAAAAGMS45MC4wAAAAAAAAAAAACHJzc2RrdmVyAAAALzIzLjQuMCM2NzNkNmM0ZjIzNjhkMjgyZDI1ZGEyOWJkYTU1YzIxYjhiZTY5Y2E2AA==";
11
+ export declare const WASM_BASE64 = "AGFzbQEAAAAB4QEjYAR+fn5+AX5gAn5+AX5gA35+fgF+YAABfmABfgF+YAV+fn5+fgBgAn9/AX5gA35+fgBgA39/fwBgAX8BfmACf38AYAJ+fgF/YAJ/fgBgA39+fgBgCn9/fn5+fn5+fn4AYAF+AGAFfn9/f38AYAAAYAF/AGAEf39/fwBgAX8Bf2AAAX9gAn5/AGAEfn5/fwF+YAF+AX9gA35/fwF+YAJ/fgF+YAJ+fgBgBH9/f38BfmAEfn5+fgBgAn5/AX5gBX5+fn5+AX5gBn5+fn5+fgF+YAd+fn5+fn5+AX5gA35/fwAC3wElAWwBNwAAAWwBMQABAWwBXwACAXYBXwADAWQBXwACAXgBNwADAWIBNAADAWEBMAAEAWIBOAAEAWIBNgABAWkBYQAEAWkBYgAEAWIBZgACAWIBOQABAXgBMQABAWwBMgABAXYBMwAEAXYBMQABAWIBZQABAWkBXwAEAWkBMAAEAXYBZwABAWkBOAAEAWkBNwAEAWkBNgABAWIBagABAWIBMgAAAWIBMQAAAW0BOQACAW0BYQAAAXgBMAABAWIBYgAEAXgBMwADAXgBOAADAWwBMAABAWwBOAABAXgBNQAEA4sBiQEFAQYHBQgJCgsMDA0ECgwOAwQMDwoPCRAMDBEGEgoGEhMGCBEUERUJEQMDEhYREgkSCAwKDQYXGBEMGQwBFhoNFQwDAwEDBA8bAQsRFQ0GBBwDAwEBDAoKCQMKAwMDEgMEAQQdAQQSAh4CABUNHwkEAgMDAwMDBAkEAQQMIAwMAiEiERIIDAgKCAUDAQARBiEEfwFBgIDAAAt/AEHAg8AAC38AQdqFwAALfwBB4IXAAAsH/wQnBm1lbW9yeQIACmF1dGhvcml6ZXIAZwVvd25lcgBoDXBlbmRpbmdfb3duZXIAahJ0cmFuc2Zlcl9vd25lcnNoaXAAaxpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgBuEGFjY2VwdF9vd25lcnNoaXAAdhJyZW5vdW5jZV9vd25lcnNoaXAAdxNleHRlbmRfaW5zdGFuY2VfdHRsAHgPc2V0X3R0bF9jb25maWdzAHkLdHRsX2NvbmZpZ3MAfhJmcmVlemVfdHRsX2NvbmZpZ3MAgAEVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAIEBDG9hcHBfdmVyc2lvbgCCAQhlbmRwb2ludACEAQRwZWVyAIUBCHNldF9wZWVyAIYBDHNldF9kZWxlZ2F0ZQCHARBlbmZvcmNlZF9vcHRpb25zAIkBFHNldF9lbmZvcmNlZF9vcHRpb25zAIoBD2NvbWJpbmVfb3B0aW9ucwCMAQ1fX2NvbnN0cnVjdG9yAI4BBXF1b3RlAI8BCWluY3JlbWVudACSARFzZXRfb3JkZXJlZF9ub25jZQCUARJza2lwX2luYm91bmRfbm9uY2UAlQEDZWlkAJYBBWNvdW50AJcBDmNvbXBvc2VkX2NvdW50AJkBDWluYm91bmRfY291bnQAmwEOb3V0Ym91bmRfY291bnQAnQEKbmV4dF9ub25jZQCeARVhbGxvd19pbml0aWFsaXplX3BhdGgAnwEKbHpfcmVjZWl2ZQChARVpc19jb21wb3NlX21zZ19zZW5kZXIApAEKbHpfY29tcG9zZQClAQFfAwEKX19kYXRhX2VuZAMCC19faGVhcF9iYXNlAwMKmosBiQGxAQECfyOAgICAAEEwayIFJICAgIAAIAUgAyAEEKaAgIAANwMQIAUgAjcDCCAFIAE3AwBBACEGA0ACQCAGQRhHDQBBACEGAkADQCAGQRhGDQEgBUEYaiAGaiAFIAZqKQMANwMAIAZBCGohBgwACwsgAEKO7uqVvrbe8wAgBUEYakEDEKeAgIAAEKiAgIAAIAVBMGokgICAgAAPCyAFQRhqIAZqQgI3AwAgBkEIaiEGDAALC0MBAX8jgICAgABBEGsiAiSAgICAACACIAAgARCRgYCAAAJAIAIoAgBBAUcNAAALIAIpAwghASACQRBqJICAgIAAIAELGgAgAK1CIIZCBIQgAa1CIIZCBIQQlYCAgAALIQACQCAAIAEgAhCEgICAAEL/AYNCAlENABC/gICAAAALC7EBAQJ/I4CAgIAAQTBrIgUkgICAgAAgBSADIAQQpoCAgAA3AxAgBSACNwMIIAUgATcDAEEAIQYDQAJAIAZBGEcNAEEAIQYCQANAIAZBGEYNASAFQRhqIAZqIAUgBmopAwA3AwAgBkEIaiEGDAALCyAAQo7u6pW+tt7zACAFQRhqQQMQp4CAgAAQqICAgAAgBUEwaiSAgICAAA8LIAVBGGogBmpCAjcDACAGQQhqIQYMAAsLJQAgABCrgICAAEIBIAGtQiCGQgSEIAKtQiCGQgSEEICAgIAAGgviAwIBfwJ+I4CAgIAAQTBrIgEkgICAgAACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMEBQYACyABQQhqQYCAwIAAQQMQ1oCAgAAgASgCCA0IIAFBCGogASkDEBDXgICAAAwGCyABQSBqQYOAwIAAQRAQ1oCAgAAgASgCIA0HIAEgASkDKDcDCCABIAApAwg3AxggASAANQIEQiCGQgSENwMQIAFBIGogAUEIahDYgICAACABKQMoIQIgASkDICEDDAYLIAFBCGpBk4DAgABBDBDWgICAACABKAIIDQYgAUEIaiABKQMQENeAgIAADAQLIAFBCGpBn4DAgABBBRDWgICAACABKAIIDQUgAUEIaiABKQMQENeAgIAADAMLIAFBCGpBpIDAgABBDRDWgICAACABKAIIDQQgAUEIaiABKQMQENeAgIAADAILIAFBCGpBsYDAgABBDBDWgICAACABKAIIDQMgAUEIaiABKQMQIAA1AgRCIIZCBIQQ2YCAgAAMAQsgAUEIakG9gMCAAEENENaAgIAAIAEoAggNAiABQQhqIAEpAxAgADUCBEIghkIEhBDZgICAAAsgASkDECECIAEpAwghAwsgA1ANAQsACyABQTBqJICAgIAAIAILdAIBfwJ+I4CAgIAAQRBrIgIkgICAgABCACEDAkACQCABEKuAgIAAIgRCARCtgICAAEUNACACIARCARCBgICAABCugICAACACKAIAQQFGDQEgACACKQMINwMIQgEhAwsgACADNwMAIAJBEGokgICAgAAPCwALDwAgACABEKKAgIAAQgFRC10CAX8BfgJAAkAgAadB/wFxIgJBwABGDQACQCACQQZGDQBCASEDQoOQgICAASEBDAILIAFCCIghAUIAIQMMAQtCACEDIAEQlICAgAAhAQsgACADNwMAIAAgATcDCAsOACAAIAFCARCwgICAAAsbACAAEKuAgIAAIAEQsYCAgAAgAhCCgICAABoLQQEBfyOAgICAAEEQayIBJICAgIAAIAEgABCjgYCAAAJAIAEoAgBBAUcNAAALIAEpAwghACABQRBqJICAgIAAIAALdAIBfwJ+I4CAgIAAQRBrIgIkgICAgABCACEDAkACQCABEKuAgIAAIgRCAhCtgICAAEUNACACIARCAhCBgICAABCugICAACACKAIAQQFGDQEgACACKQMINwMIQgEhAwsgACADNwMAIAJBEGokgICAgAAPCwALDgAgACABQgIQsICAgAALnwUBAX8jgICAgABB8ABrIgokgICAgAAQtYCAgAAQtoCAgAAgBBC1gICAACAFIAYQqYCAgAACQAJAIAcgCIRCAFENACAKQcAAahC1gICAAEKO6PcfEIOAgIAAEISAgIAAELeAgIAAIAopA0AiBkICUQ0BAkAgBqdBAXFFDQAgCikDSCAEELWAgIAAIAcgCBCpgICAAAwBC0KDgICAsPoBELiAgIAAAAsgCkHAAGogARC5gICAACAKKQNIIQQgCikDQBC6gICAABC1gICAACEGEIWAgIAAIQUgCiAHQgBSIAhCAFUgCFAbOgAkIAogAzcDGCAKIAI3AxAgCiAENwMIIAogATYCICAKQQhqELuAgIAAIQggCiAJNwM4IAogCDcDMCAKIAU3AyhBACEBA0ACQCABQRhHDQBBACEBAkADQCABQRhGDQEgCkHAAGogAWogCkEoaiABaikDADcDACABQQhqIQEMAAsLIAZCjtKzlQ4gCkHAAGpBAxCngICAABCEgICAACEIQQAhAQJAA0AgAUEYRg0BIApBKGogAWpCAjcDACABQQhqIQEMAAsLIAhC/wGDQswAUg0CIAhB7IHAgABBAyAKQShqQQMQvICAgAAgCkHAAGogCikDKBC9gICAACAKKAJAQQFxDQIgCikDaCEIIAopA2AhByAKKQNYIQQgCikDUCEGIApBwABqIAopAzAQvoCAgAAgCigCQA0CIAopA0ghBSAKQcAAaiAKKQM4EK6AgIAAIAooAkBBAUYNAiAKKQNIIQkgACAHNwMQIAAgBjcDACAAIAk3AyggACAFNwMgIAAgCDcDGCAAIAQ3AwggCkHwAGokgICAgAAPCyAKQcAAaiABakICNwMAIAFBCGohAQwACwsQv4CAgAAAC4cBAgF/AX4jgICAgABBEGsiACSAgICAACAAQQRqEMGAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBDCgICAAAsCQAJAQQAgABDGgICAACIBQgIQrYCAgABFDQAgAUICEIGAgIAAIgFC/wGDQs0AUQ0BAAsQyICAgAAACyAAQRBqJICAgIAAIAELNgACQCAAQYSCwIAAQQwQ84CAgAAQg4CAgAAQhICAgAAiAEL/AYNCzQBRDQAQv4CAgAAACyAACzkAAkAgAUICUQ0AAkAgAUL/AYNCzQBRDQAgAEICNwMADwsgACABNwMIIABCATcDAA8LIABCADcDAAsLACAAEKSAgIAAGgvGAQIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAhDBgICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQwoCAgAALAkACQAJAQQEgARDGgICAACIDQgEQrYCAgABFDQAgAiADQgEQgYCAgAAQvoCAgAAgAigCAEEBRw0BAAsgAEIANwMADAELIAIpAwghAyAAQgE3AwAgACADNwMIIAIQxICAgAAgAigCAEEBRw0AIAEgAigCBCACKAIIEMeAgIAACyACQRBqJICAgIAACx4AAkAgAKdBAXFFDQAPC0KDgICAkPoBELiAgIAAAAtzAgF/AX4jgICAgABBMGsiASSAgICAACABIAApAwA3AyggASAAMQAcNwMgIAEgACkDEDcDGCABIAApAwg3AxAgASAANQIYQiCGQgSENwMIQeyAwIAAQQUgAUEIakEFEPWAgIAAIQIgAUEwaiSAgICAACACCzEAAkAgAiAERg0AAAsgACABrUIghkIEhCADrUIghkIEhCACrUIghkIEhBCdgICAABoL7wECAn8DfiOAgICAAEEwayICJICAgIAAQQAhAwJAA0AgA0EQRg0BIAIgA2pCAjcDACADQQhqIQMMAAsLQgAhBEIBIQUCQCABQv8Bg0LMAFINACABQdSBwIAAQQIgAkECELyAgIAAIAJBEGogAikDABCigYCAACACKAIQQQFGDQAgAikDKCEBIAIpAyAhBiACQRBqIAIpAwgQooGAgAAgAigCEEEBRg0AIAIpAyAhBCAAIAIpAyg3AyggACAENwMgIAAgATcDGCAAIAY3AxBCACEFQgAhBAsgACAFNwMAIAAgBDcDCCACQTBqJICAgIAAC0IBAX5CASECAkAgAUL/AYNCyABSDQAgARCIgICAAEKAgICAcINCgICAgIAEUg0AIAAgATcDCEIAIQILIAAgAjcDAAsJABDKgICAAAALvQEEAX8BfgF/AX4jgICAgABBEGsiAiSAgICAACACQQRqEMGAgIAAAkAgAigCBEEBRw0AIAIoAgggAigCDBDCgICAAAsCQAJAIAAgARDDgICAACIDQgEQrYCAgAAiBEUNACADQgEQgYCAgAAiBUL/AYNCyABSDQEgAkEEahDEgICAACACKAIEQQFHDQAgACABIAIoAgggAigCDBDFgICAAAsQhoCAgAAhAyACQRBqJICAgIAAIAUgAyAEGw8LAAsMACAAQQEQrIGAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQo4CAgAAaC4oBAgF/AX4jgICAgABBMGsiAiSAgICAACACQSBqQYCDwIAAQQ8Q1oCAgAACQAJAIAIoAiANACACIAIpAyg3AwggAiABrUIghkIEhDcDGCACIACtQiCGQgSENwMQIAJBIGogAkEIahDYgICAACACKAIgRQ0BCwALIAIpAyghAyACQTBqJICAgIAAIAMLDAAgAEECEKyBgIAACycAIAAgARDDgICAAEIBIAKtQiCGQgSEIAOtQiCGQgSEEICAgIAAGgubAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCAAQQFxRQ0AIAJBvYLAgABBBBDWgICAACACKAIADQIgAiACKQMIIAGtQiCGQgSEENmAgIAADAELIAJBtYLAgABBCBDWgICAACACKAIADQEgAiACKQMIENeAgIAACyACKQMIIQMgAikDAFANAQsACyACQRBqJICAgIAAIAMLJwBBASAAEMaAgIAAQgEgAa1CIIZCBIQgAq1CIIZCBIQQgICAgAAaCwkAEL+AgIAAAAscAAJAIABBf2pB/wFxQQRJDQAQyoCAgAAACyAACwMAAAuLAQICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahDBgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQwoCAgAALQQAhAQJAQQAQzICAgAAiAkICEK2AgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQvCAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQAJAAkAgAEH/AXEOAwABAgALIAFBwoXAgABBBhDWgICAACABKAIADQMgASABKQMIENeAgIAADAILIAFByIXAgABBCBDWgICAACABKAIADQIgASABKQMIENeAgIAADAELIAFB0IXAgABBChDWgICAACABKAIADQEgASABKQMIENeAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILDwAQzoCAgAAQh4CAgAAaC2YCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQwYCAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEMKAgIAACyAAENCAgIAAIAApAwghASAAKQMAQYoIENGAgIAAIABBEGokgICAgAAgAQtKAgF/AX4jgICAgABBEGsiACSAgICAACAAENCAgIAAIAApAwghASAAKQMAQYoIENGAgIAAIAEQh4CAgAAaIABBEGokgICAgAAgAQtQAQF/I4CAgIAAQRBrIgEkgICAgAAgAUEEahDBgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQwoCAgAALIAAQ1YCAgAAgAUEQaiSAgICAAAspAAJAIACnQQFxRQ0ADwsgAUH6d2qtQiCGQoOAgIDggAF8ELiAgIAAAAtCAQF/I4CAgIAAQRBrIgAkgICAgAAgABDTgICAAAJAIAApAwBQDQBCg4CAgLCBARC4gICAAAALIABBEGokgICAgAALkwECAX8CfiOAgICAAEEQayIBJICAgIAAIAFBBGoQwYCAgAACQCABKAIEQQFHDQAgASgCCCABKAIMEMKAgIAAC0IAIQICQAJAQQEQ1ICAgAAiA0IAEK2AgIAARQ0AIANCABCBgICAACICQv8Bg0LNAFINASAAIAI3AwhCASECCyAAIAI3AwAgAUEQaiSAgICAAA8LAAuSAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAQQFxRQ0AIAFB1YTAgABBDBDWgICAACABKAIADQIgASABKQMIENeAgIAADAELIAFB0ITAgABBBRDWgICAACABKAIADQEgASABKQMIENeAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILTQECfkIAIQECQAJAQQAQ1ICAgAAiAkICEK2AgIAARQ0AIAJCAhCBgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALUQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABIAIQqYGAgABCASEEAkAgAygCAA0AIAAgAykDCDcDCEIAIQQLIAAgBDcDACADQRBqJICAgIAAC0QBAX8jgICAgABBEGsiAiSAgICAACACIAE3AwggAkEIakEBEKeAgIAAIQEgAEIANwMAIAAgATcDCCACQRBqJICAgIAAC10CAX8BfiOAgICAAEEgayICJICAgIAAIAIgASkDEDcDGCACIAEpAwg3AxAgAiABKQMANwMIIAJBCGpBAxCngICAACEDIABCADcDACAAIAM3AwggAkEgaiSAgICAAAtIAQF/I4CAgIAAQRBrIgMkgICAgAAgAyACNwMIIAMgATcDACADQQIQp4CAgAAhAiAAQgA3AwAgACACNwMIIANBEGokgICAgAALnwECAX8BfiOAgICAAEEQayICJICAgIAAEIaAgIAAIQMgAiAAOgALIAMgAxCIgICAAEKAgICAcINCBIQgAkELakEBENuAgIAAIQMgAiABQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCDCADIAMQiICAgABCgICAgHCDQgSEIAJBDGpBBBDbgICAACEDIAJBEGokgICAgAAgAwseACAAIAEgAq1CIIZCBIQgA61CIIZCBIQQmoCAgAALMQACQCAAEIiAgIAAQv////8PVg0AEN2AgIAAAAsgAEIEEImAgIAAQiCIpxDJgICAAAsJABDKgICAAAALqQMCAX8CfiOAgICAAEEgayICJICAgIAAQgwhAwJAIAFBBSABEIiAgIAAQiCIpxDfgICAACIBEIiAgIAAQoCAgIAQVA0AIAEQioCAgAAhAwsgAkEPaiADEIuAgIAAIgFCBEKEgICAgAIQjICAgAAQ4ICAgAACQAJAIAItAA9BAUYNACACKQAYIQMgAikAECEEIAJBD2ogAUKEgICAgAJChICAgIAEEIyAgIAAEOCAgIAAIAItAA9BAUYNACAEIAOEQgBSDQEgAikAECIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIgNCf1cNASAAIAIpABgiAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhDcDACAAIAM3AwggAkEgaiSAgICAAA8LEL+AgIAAAAtCg4CAgCAQuICAgAAACxwAIAAgAa1CIIZCBIQgAq1CIIZCBIQQjICAgAAL2QECA38BfiOAgICAAEEQayICJICAgIAAQQEhAwJAIAEQiICAgABCgICAgHCDQoCAgICAAlINACACQQhqQgA3AwAgAkIANwMAIABBAWohBEEAIQMCQANAIAEQiICAgABCgICAgBBUDQEgARCfgICAACEFIAFBARCNgYCAACEBAkAgA0EQRg0AIAIgA2ogBUIgiDwAACADQQFqIQMMAQsLQRAQqIGAgAAACyAEIAIpAwA3AAAgBEEIaiACQQhqKQMANwAAQQAhAwsgACADOgAAIAJBEGokgICAgAAL7wICAX8BfiOAgICAAEEwayICJICAgIAAEIaAgIAAIQMgAkGABjsBECADIAMQiICAgABCgICAgHCDQgSEIAJBEGpBAhDbgICAAEKEgICAEBCNgICAACEDIAJCgICAgIDgwIbAADcDCCACQgA3AwAgAiAAQjiGNwMYIAJCADcDEAJAAkAgACABhEIAUg0AIAJBgCI7AS4gAyADEIiAgIAAQoCAgIBwg0IEhCACQS5qQQIQ24CAgABChICAgBAQjYCAgAAhACAAIAAQiICAgABCgICAgHCDQgSEIAJBEBDbgICAACEADAELIAJBgMIAOwEuIAMgAxCIgICAAEKAgICAcINCBIQgAkEuakECENuAgIAAQoSAgIAQEI2AgIAAIQAgACAAEIiAgIAAQoCAgIBwg0IEhCACQRAQ24CAgAAhACAAIAAQiICAgABCgICAgHCDQgSEIAJBEGpBEBDbgICAACEACyACQTBqJICAgIAAIAALXgIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAiAAEN6AgIAAAkAgASkDACACKQMAWiABKQMIIgAgAikDCCIDWSAAIANRGw0AQoOAgIAwELiAgIAAAAsgAkEQaiSAgICAAAuFAQIBfwF+I4CAgIAAQTBrIgIkgICAgAAgAiABNwMIIAIgADYCBCACQQE2AgAgAkEQaiACEKyAgIAAAkAgAikDECIBUA0AIAJBJGoQxICAgAAgAigCJEUNACACIAIoAiggAigCLBCqgICAAAsgAikDGCEDIAJBMGokgICAgAAgA0IAIAGnGwtpAQF/I4CAgIAAQSBrIgMkgICAgAAgAyABNwMIIAMgADYCBCADQQE2AgAgAyACEK+AgIAAIANBFGoQxICAgAACQCADKAIUQQFHDQAgAyADKAIYIAMoAhwQqoCAgAALIANBIGokgICAgAALagICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEECNgIAQQAhAQJAIAAQq4CAgAAiAkICEK2AgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQtiAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEGNgIAIAIgADYCBCACIAEQr4CAgAAgAkEUahDEgICAAAJAIAIoAhRBAUcNACACIAIoAhggAigCHBCqgICAAAsgAkEgaiSAgICAAAsIABDOgICAAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAENCAgIAAIAApAwAgACkDCBDpgICAACEBIABBEGokgICAgAAgAQsNACABQgIgAKdBAXEbCz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQ04CAgAAgACkDACAAKQMIEOmAgIAAIQEgAEEQaiSAgICAACABC30CAX8BfiOAgICAAEEQayIBJICAgIAAAkAgAEL/AYNCzQBSDQAgAUEEahDBgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQwoCAgAALEM+AgIAAIQIQ0oCAgAAgABDsgICAACACIAAQ7YCAgAAgAUEQaiSAgICAAEICDwsACw4AQQAgAEICEPKAgIAAC2ECAX8BfiOAgICAAEEQayICJICAgIAAQcmDwIAAQRUQ84CAgAAQ9ICAgAAhAyACIAA3AwggAiABNwMAIANB8IPAgABBAiACQQIQ9YCAgAAQjoCAgAAaIAJBEGokgICAgAAL3AICAX8CfiOAgICAAEEgayICJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQgRSDQAgAkEIahDBgICAAAJAIAIoAghBAUcNACACKAIMIAIoAhAQwoCAgAALEM+AgIAAIQMCQAJAIAFC/////w9WDQAgAkEIahDTgICAACACKQMQIQEgAikDCEGICBDRgICAACABIAAQ74CAgABFDQMQ8ICAgAAMAQsQ8YCAgAAgAUIgiKdJDQNBASAAQgAQ8oCAgABBARDUgICAAEIAIAFChICAgHCDIgEgARCAgICAABpBgITAgABBFhDzgICAABD0gICAACEEIAIgATcDGCACIAM3AxAgAiAANwMIIARBnITAgABBAyACQQhqQQMQ9YCAgAAQjoCAgAAaCyACQSBqJICAgIAAQgIPCwALQoOAgIDggAEQuICAgAAAC0KDgICA8IABELiAgIAAAAsNACAAIAEQnoCAgABQCxMAQQEQ1ICAgABCABCPgICAABoLMwECfhCggICAACEAAkAQoYCAgABCIIgiASAAQiCIIgBUDQAgAacgAKdrDwsQv4CAgAAACxUAIAAQ1ICAgAAgASACEIKAgIAAGgtFAgF/AX4jgICAgABBEGsiAiSAgICAACACIAAgARCpgYCAAAJAIAIoAgBBAUcNAAALIAIpAwghAyACQRBqJICAgIAAIAMLYwMBfwF+AX8jgICAgABBEGsiASSAgICAACABIAA3AwBCAiECQQEhAwJAA0AgA0UNASADQX9qIQMgACECDAALCyABIAI3AwggAUEIakEBEKeAgIAAIQAgAUEQaiSAgICAACAACy4AAkAgASADRg0AAAsgAK1CIIZCBIQgAq1CIIZCBIQgAa1CIIZCBIQQnICAgAALpwECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQwYCAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEMKAgIAACyAAENOAgIAAIAApAwghASAAKQMAQYgIENGAgIAAIAEQh4CAgAAaIAAQ1YCAgAACQCAAKAIADQAQyICAgAAACyAAKQMIIQIQ8ICAgAAgARDsgICAACACIAEQ7YCAgAAgAEEQaiSAgICAAEICC6ABAgF/An4jgICAgABBEGsiACSAgICAACAAEMGAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBDCgICAAAsQz4CAgAAhARDSgICAAEEAENSAgIAAQgIQj4CAgAAaQbSEwIAAQRMQ84CAgAAQ9ICAgAAhAiAAIAE3AwAgAkHIhMCAAEEBIABBARD1gICAABCOgICAABogAEEQaiSAgICAAEICCzEAAkAgAEL/AYNCBFINACABQv8Bg0IEUg0AIABCIIinIAFCIIinEMKAgIAAQgIPCwAL3gQBBX8jgICAgABB0ABrIgIkgICAgAAgAkEoaiAAEPqAgIAAAkAgAigCKEECRg0AIAJBCGpBCGogAkEoakEIaiIDKAIANgIAIAIgAikCKDcDCCACQShqIAEQ+oCAgAAgAigCKEECRg0AIAJBGGpBCGogAygCADYCACACIAIpAig3AxggAkEoahDBgICAAAJAIAIoAihBAUcNACACKAIsIAIoAjAQwoCAgAALEM2AgIAAAkACQAJAEMuAgIAADQAQ8YCAgAAiA0GA+4ADIANBgPuAA0kbIQQgAiACQRhqNgIsIAIgAkEIajYCKEEAIQMDQCADQQhGDQMCQCACQShqIANqKAIAIgUoAgBBAXFFDQAgBSgCCCIGIARLDQMgBSgCBCAGSw0DCyADQQRqIQMMAAsLQoOAgIDQ/wAQuICAgAAAC0KDgICAwP8AELiAgIAAAAsCQAJAIAIoAghBAUcNACACKAIMIAIoAhAQ+4CAgAAMAQtBARDMgICAAEICEI+AgIAAGgsCQAJAIAIoAhhBAUcNACACKAIcIAIoAiAQ/ICAgAAMAQtBAhDMgICAAEICEI+AgIAAGgsgAkEoakEIaiACQQhqQQhqKAIANgIAIAJBPGogAkEYakEIaigCADYCACACIAIpAwg3AyggAiACKQMYNwI0QfyEwIAAQQ8Q84CAgAAQ9ICAgAAhACACQShqEP2AgIAAIQEgAiACQTRqEP2AgIAANwNIIAIgATcDQCAAQaCFwIAAQQIgAkHAAGpBAhD1gICAABCOgICAABogAkHQAGokgICAgABCAg8LAAtoAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAFCAlENACACQQRqIAEQqoGAgAACQCACKAIERQ0AIABBAjYCAAwCCyAAIAIpAgg3AgQgAEEBNgIADAELIABBADYCAAsgAkEQaiSAgICAAAsOAEEBIAAgARCtgYCAAAsOAEECIAAgARCtgYCAAAtDAgF/AX4jgICAgABBEGsiASSAgICAACABIAAQ/4CAgAACQCABKAIAQQFHDQAACyABKQMIIQIgAUEQaiSAgICAACACC8IBAgJ/AX4jgICAgABBwABrIgAkgICAgAAgAEEIahDBgICAAAJAIAAoAghBAUcNACAAKAIMIAAoAhAQwoCAgAALIABBCGoQwYCAgAAgAEEUaiIBEMSAgIAAIABBMGogAEEIahD/gICAAAJAAkAgACgCMA0AIAApAzghAiAAQTBqIAEQ/4CAgAAgACgCMEEBRw0BCwALIAAgACkDODcDKCAAIAI3AyAgAEEgakECEKeAgIAAIQIgAEHAAGokgICAgAAgAgswAAJAIAEoAgBBAUcNACAAIAEoAgQgASgCCBCrgYCAAA8LIABCADcDACAAQgI3AwgLqgEBAX8jgICAgABBIGsiACSAgICAACAAQQxqEMGAgIAAAkAgACgCDEEBRw0AIAAoAhAgACgCFBDCgICAAAsQzYCAgAACQBDLgICAAEUNAEKDgICA4P8AELiAgIAAAAtBABDMgICAAEIBQgIQgoCAgAAaQbCFwIAAQRIQ84CAgAAQ9ICAgABBBEEAIABBGGpBABD1gICAABCOgICAABogAEEgaiSAgICAAEICCwkAEMuAgIAArQueAQIBfwF+I4CAgIAAQSBrIgAkgICAgAAgAEEQahDBgICAAAJAIAAoAhBBAUcNACAAKAIUIAAoAhgQwoCAgAALIABBEGoQg4GAgAACQAJAIAAoAhANACAAKQMYIQEgAEEQahCDgYCAACAAKAIQQQFHDQELAAsgACAAKQMYNwMIIAAgATcDACAAQQIQp4CAgAAhASAAQSBqJICAgIAAIAELDAAgAEIBEKOBgIAACwgAELWAgIAAC1EBAX8jgICAgABBEGsiASSAgICAAAJAIABC/wGDQgRRDQAACyABIABCIIinELmAgIAAIAEpAwAgASkDCBDpgICAACEAIAFBEGokgICAgAAgAAu6AgQBfwF+AX8BfiOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCBFINAAJAAkAgAUICUg0AQgAhAQwBCyACIAEQvoCAgAAgAigCAEEBRg0BIAIpAwghA0IBIQELEM2AgIAAIAIQwYCAgAACQCACKAIAQQFHDQAgAigCBCACKAIIEMKAgIAAC0EBIABCIIinIgQQxoCAgAAhBQJAAkAgAVANACAFIANCARCCgICAABogAhDEgICAACACKAIAQQFHDQEgBCACKAIEIAIoAggQx4CAgAAMAQsgBUIBEI+AgIAAGgtCjvKqvPDWqusAEPSAgIAAIQUgAiABIAMQ6YCAgAA3AwggAiAAQoSAgIBwgzcDACAFQciCwIAAQQIgAkECEPWAgIAAEI6AgIAAGiACQRBqJICAgIAAQgIPCwALhwECAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABC3gICAAAJAIAEpAwAiAEICUQ0AIAEpAwghAhDNgICAACABEMGAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBDCgICAAAsQtYCA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ARCsgICAAAJAIAEpAxAiAlANACABQSRqEMSAgIAAIAEoAiRBAUcNACABIAEoAiggASgCLBCqgICAAAsgASkDGCEDIAFBMGokgICAgAAgA0IAIAKnGwuLAQECfyOAgICAAEEQayIBJICAgIAAAkBBASAAp0H/AXEiAkEAR0EBdCACQQFGGyICQQJGDQAQzYCAgAAgARDBgICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQwoCAgAALIAFBAjYCACABEKuAgIAAIAKtQgIQgoCAgAAaIAFBEGokgICAgABCAg8LAAuVAwUBfwF+AX8BfgF/I4CAgIAAQdAAayIDJICAgIAAAkAgAEL/AYNCBFINACADQShqIAEQvoCAgAAgAygCKEEBRg0AIAMpAzAhASADQShqIAIQroCAgAAgAygCKEEBRg0AIABCIIghAiADKQMwIQQQzYCAgAAgA0EoahDBgICAAAJAIAMoAihBAUcNACADKAIsIAMoAjAQwoCAgAALIAKnIQUQhYCAgAAhAhC1gICAACEGIAMgBBCxgICAADcDICADIAE3AxggAyAAQoSAgIBwgzcDECADIAI3AwggAyACNwMAQQAhBwJAA0ACQCAHQShHDQBBACEHAkADQCAHQShGDQEgA0EoaiAHaiADIAdqKQMANwMAIAdBCGohBwwACwsgBkKO6q6YDiADQShqQQUQp4CAgAAQqICAgAACQBDlgICAAEUNACAFIAEQ44CAgABCAXwiAFANAyAFIAEgABDkgICAAAsgA0HQAGokgICAgABCAg8LIANBKGogB2pCAjcDACAHQQhqIQcMAAsLEL+AgIAAAAsACw8AEJCBgIAArUIghkIEhAsOABCYgYCAABCxgICAAAtzAgJ/AX4jgICAgABBIGsiACSAgICAACAAQRBqEMGAgIAAAkAgACgCEEEBRw0AIAAoAhQgACgCGBDCgICAAAsgAEEDNgIAIABBEGogABCygICAACAAKAIQIQEgACkDGCECIABBIGokgICAgAAgAkIAIAEbCw4AEJqBgIAAELGAgIAAC3MCAn8BfiOAgICAAEEgayIAJICAgIAAIABBEGoQwYCAgAACQCAAKAIQQQFHDQAgACgCFCAAKAIYEMKAgIAACyAAQQQ2AgAgAEEQaiAAELKAgIAAIAAoAhAhASAAKQMYIQIgAEEgaiSAgICAACACQgAgARsLIwACQCAAQv8Bg0IEUQ0AAAsgAEIgiKcQnIGAgAAQsYCAgAALqAECAX8CfiOAgICAAEEwayIBJICAgIAAIAFBEGoQwYCAgAACQCABKAIQQQFHDQAgASgCFCABKAIYEMKAgIAACyABQQU2AgAgASAANgIEIAFBEGogARCsgICAAAJAIAEpAxAiAlANACABQSRqEMSAgIAAIAEoAiRBAUcNACABIAEoAiggASgCLBCqgICAAAsgASkDGCEDIAFBMGokgICAgAAgA0IAIAKnGwsjAAJAIABC/wGDQgRRDQAACyAAQiCIpxCTgYCAABCxgICAAAuuAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAIABC/wGDQgRSDQAgAiABEL6AgIAAIAIoAgBBAUYNACACKQMIIQMgAhDBgICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQwoCAgAALQgAhAQJAEOWAgIAARQ0AIABCIIinIAMQ44CAgABCAXwiAVANAgsgARCxgICAACEAIAJBEGokgICAgAAgAA8LAAsQv4CAgAAAC5sBAgJ/AX4jgICAgABBIGsiASSAgICAACABIAAQoIGAgAACQCABKAIAQQFGDQAgASgCGCECIAEpAwghAyABEMGAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBDCgICAAAsgASACELmAgIAAQgAhAAJAIAEoAgBBAUcNACABKQMIIAMQ74CAgACtIQALIAFBIGokgICAgAAgAA8LAAviAQICfwJ+I4CAgIAAQTBrIgIkgICAgABBACEDAkADQCADQRhGDQEgAkEIaiADakICNwMAIANBCGohAwwACwtCASEEAkAgAUL/AYNCzABSDQAgAUGogcCAAEEDIAJBCGpBAxC8gICAACACQSBqIAIpAwgQroCAgAAgAigCIA0AIAIpAyghASACQSBqIAIpAxAQvoCAgAAgAigCIA0AIAIpAxgiBUL/AYNCBFINACACKQMoIQQgACABNwMQIAAgBDcDCCAAIAVCIIg+AhhCACEECyAAIAQ3AwAgAkEwaiSAgICAAAv4CAMCfwN+AX8jgICAgABB8ABrIgYkgICAgAACQAJAAkACQCAAQv8Bg0LNAFINACAGQRBqIAEQoIGAgAAgBigCEEEBRg0AIAYoAighByAGKQMgIQggBikDGCEBIAZBEGogAhC+gICAACAGKAIQQQFGDQAgA0L/AYNCyABSDQAgBEL/AYNCyABSDQAgBikDGCEJIAZBEGogBRCigYCAACAGKAIQQQFGDQAgBikDKCECIAYpAyAhBCAGQRBqEMGAgIAAAkAgBigCEEEBRw0AIAYoAhQgBigCGBDCgICAAAsQhYCAgAAhBRC1gICAACEKIAAQh4CAgAAaAkAgBCAChEIAUQ0AIAoQtoCAgAAgACAFIAQgAhClgICAAAsgBkEQaiAHELmAgIAAAkAgBigCEEEBRw0AIAYpAxggARDvgICAAEUNACAGQcgAaiAIEKOBgIAAIAYoAkhBAUYNASAGKQNQIQAgBiABNwMYIAYgADcDECAGIAetQiCGQgSENwMgQaiBwIAAQQMgBkEQakEDEPWAgIAAIQAgBiADNwNoIAYgCTcDYCAGIAU3A1ggBiAANwNQIAYgBTcDSEEAIQsDQAJAIAtBKEcNAEEAIQsCQANAIAtBKEYNASAGQRBqIAtqIAZByABqIAtqKQMANwMAIAtBCGohCwwACwsgCkKO7qa1jAUgBkEQakEFEKeAgIAAEKiAgIAAIAYgAjcDCCAGIAQ3AwAgByABEOOAgIAAIQAQ5YCAgABFDQQgAEIBfCIFUA0FIAggBVENBEKDgICAEBC4gICAAAALIAZBEGogC2pCAjcDACALQQhqIQsMAAsLQoOAgICg+gEQuICAgAAACwALAkAgCCAAWA0AIAcgASAIEOSAgIAACxCFgICAACEBEJiBgIAAIQggBxCcgYCAACEAIAhCAXwiCFANACAGQQM2AhAgBkEQaiAIELOAgIAAIABCAXwiCFANACAGQQU2AhAgBiAHNgIUIAZBEGogCBCvgICAACAGQcgAahDEgICAAAJAIAYoAkhBAUcNACAGQRBqIAYoAkwgBigCUBCqgICAAAsCQAJAAkAgAxDcgICAAEH/AXFBf2oOBAEAAgABCxC1gICAACEIQZyCwIAAQQwQ84CAgAAhAiAGIAM3A2ggBkIENwNgIAYgCTcDWCAGIAE3A1AgBiABNwNIQQAhCwNAAkAgC0EoRw0AQQAhCwJAA0AgC0EoRg0BIAZBEGogC2ogBkHIAGogC2opAwA3AwAgC0EIaiELDAALCyAIIAIgBkEQakEFEKeAgIAAEKiAgIAADAULIAZBEGogC2pCAjcDACALQQhqIQsMAAsLIAMgBhDigICAAAwCCyADIAYQ4oCAgAAgBxCTgYCAAEIBfCIDUA0AIAcgAxDmgICAAEIKQgAQ4YCAgAAhAyAGQRBqIAdBARCQgYCAABDagICAAEKMFBCLgICAABCSgICAACADIAEgBCACQgBCACABELSAgIAADAELEL+AgIAAAAsgBkHwAGokgICAgABCAgt9AgF/AX4CQAJAAkACQCABp0H/AXEiAkHFAEYNACACQQtHDQIgACABQj+HNwMYIAAgAUIIhzcDEAwBCyABEJaAgIAAIQMgARCXgICAACEBIAAgAzcDGCAAIAE3AxALQgAhAQwBCyAAQoOQgICAATcDCEIBIQELIAAgATcDAAs7AAJAAkAgAUL//////////wBWDQAgAUIIhkIGhCEBDAELIAEQk4CAgAAhAQsgAEIANwMAIAAgATcDCAuJAQECfyOAgICAAEEgayIDJICAgIAAIAMgABCggYCAAAJAIAMoAgBBAUYNACABQv8Bg0LIAFINACACQv8Bg0LNAFINACADEMGAgIAAAkAgAygCAEEBRw0AIAMoAgQgAygCCBDCgICAAAsQhYCAgAAgAhDvgICAACEEIANBIGokgICAgAAgBK0PCwALgAYDAX8DfgF/I4CAgIAAQeAAayIHJICAgIAAAkACQCAAQv8Bg0LNAFINACABQv8Bg0LNAFINACAHIAIQvoCAgAAgBygCAEEBRg0AIANC/wGDQgRSDQAgBEL/AYNCyABSDQAgBUL/AYNCyABSDQAgBykDCCEIIAcgBhCigYCAACAHKAIAQQFGDQAgBykDGCECIAcpAxAhBSAHEMGAgIAAAkAgBygCAEEBRw0AIAcoAgQgBygCCBDCgICAAAsgABCHgICAABoQhYCAgAAhBhC1gICAACEJQaiCwIAAQQ0Q84CAgAAhCiAHIAQ3A1ggByADQoSAgIBwgzcDUCAHIAg3A0ggByABNwNAIAcgBjcDOEEAIQsCQAJAA0ACQCALQShHDQBBACELAkADQCALQShGDQEgByALaiAHQThqIAtqKQMANwMAIAtBCGohCwwACwsgCSAKIAdBBRCngICAABCogICAAAJAIAVQIAJCAFMgAlAbDQAgCRC2gICAACAAIAYgBSACEKWAgIAACwJAAkAgBBDcgICAACILQf8BcUF+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AJMCEAAKAAAAdHRsX2NvbmZpZ3NfZnJvemVuRnJvemVuSW5zdGFuY2VQZXJzaXN0ZW50AJueAQ5jb250cmFjdHNwZWN2MAAAAAQAAAAAAAAAAAAAAAxDb3VudGVyRXJyb3IAAAAEAAAAAAAAABBPQXBwSW52YWxpZE5vbmNlAAAAAQAAAAAAAAAPSW52YWxpZE1zZ1ZhbHVlAAAAAAIAAAAAAAAAEUluc3VmZmljaWVudFZhbHVlAAAAAAAAAwAAAAAAAAAOSW52YWxpZE1zZ1R5cGUAAAAAAAQAAAACAAAAAAAAAAAAAAAOQ291bnRlclN0b3JhZ2UAAAAAAAcAAAAAAAAAAAAAAANFSUQAAAAAAQAAAAAAAAAQTWF4UmVjZWl2ZWROb25jZQAAAAIAAAAEAAAD7gAAACAAAAAAAAAAAAAAAAxPcmRlcmVkTm9uY2UAAAAAAAAAAAAAAAVDb3VudAAAAAAAAAAAAAAAAAAADUNvbXBvc2VkQ291bnQAAAAAAAABAAAAAAAAAAxJbmJvdW5kQ291bnQAAAABAAAABAAAAAEAAAAAAAAADU91dGJvdW5kQ291bnQAAAAAAAABAAAABAAAAAAAAAAAAAAACmF1dGhvcml6ZXIAAAAAAAAAAAABAAAAEwAAAAAAAAA+UmV0dXJucyB0aGUgY3VycmVudCBvd25lciBhZGRyZXNzLCBvciBOb25lIGlmIG5vIG93bmVyIGlzIHNldC4AAAAAAAVvd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAAAWVJldHVybnMgdGhlIHBlbmRpbmcgb3duZXIgYWRkcmVzcyBmb3IgMi1zdGVwIHRyYW5zZmVyLCBvciBOb25lIGlmIG5vIHRyYW5zZmVyIGlzIHBlbmRpbmcuAAAAAAAADXBlbmRpbmdfb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAStUcmFuc2ZlcnMgb3duZXJzaGlwIGltbWVkaWF0ZWx5IHRvIGEgbmV3IGFkZHJlc3MuCgpVc2Ugd2l0aCBjYXV0aW9uIC0gaWYgeW91IHRyYW5zZmVyIHRvIGEgd3JvbmcgYWRkcmVzcywgb3duZXJzaGlwIGlzIGxvc3QgZm9yZXZlci4KQ29uc2lkZXIgdXNpbmcgYHByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyYCBpbnN0ZWFkLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcwAAAAASdHJhbnNmZXJfb3duZXJzaGlwAAAAAAABAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAJcUHJvcG9zZXMgYW4gb3duZXJzaGlwIHRyYW5zZmVyIHRvIGEgbmV3IGFkZHJlc3MuCgpUaGUgbmV3IG93bmVyIG11c3QgY2FsbCBgYWNjZXB0X293bmVyc2hpcCgpYCB3aXRoaW4gYHR0bGAgbGVkZ2Vycwp0byBjb21wbGV0ZSB0aGUgdHJhbnNmZXIuIFRoZSBwZW5kaW5nIHRyYW5zZmVyIHdpbGwgYXV0b21hdGljYWxseSBleHBpcmUgYWZ0ZXIuCgojIEFyZ3VtZW50cwotIGBuZXdfb3duZXJgIC0gVGhlIHByb3Bvc2VkIG5ldyBvd25lcgotIGB0dGxgIC0gTnVtYmVyIG9mIGxlZGdlcnMgdGhlIG5ldyBvd25lciBoYXMgdG8gYWNjZXB0LgpVc2UgYDBgIHRvIGNhbmNlbCBhIHBlbmRpbmcgdHJhbnNmZXIgKG5ld19vd25lciBtdXN0IG1hdGNoIHBlbmRpbmcpLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIHdoZW4gY2FuY2VsbGluZyBhbmQgbm8gcGVuZGluZyB0cmFuc2ZlciBleGlzdHMKLSBgSW52YWxpZFR0bGAgaWYgdHRsIGV4Y2VlZHMgbWF4IFRUTAotIGBJbnZhbGlkUGVuZGluZ093bmVyYCB3aGVuIGNhbmNlbGxpbmcgd2l0aCB3cm9uZyBuZXdfb3duZXIgYWRkcmVzcwAAABpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgAAAAAAAgAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAAAAALlBY2NlcHRzIGEgcGVuZGluZyAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyLgoKTXVzdCBiZSBjYWxsZWQgYnkgdGhlIHBlbmRpbmcgb3duZXIgYmVmb3JlIHRoZSBUVEwgZXhwaXJlcy4KCiMgUGFuaWNzCi0gYE5vUGVuZGluZ1RyYW5zZmVyYCBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIHRyYW5zZmVyIChvciBpdCBleHBpcmVkKQAAAAAAABBhY2NlcHRfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAApFBlcm1hbmVudGx5IHJlbm91bmNlcyBvd25lcnNoaXAuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzIChjYW5jZWwgaXQgZmlyc3QpAAAAEnJlbm91bmNlX293bmVyc2hpcAAAAAAAAAAAAAAAAAAAAAAApUV4dGVuZHMgdGhlIGluc3RhbmNlIFRUTC4KCiMgQXJndW1lbnRzCgoqIGB0aHJlc2hvbGRgIC0gVGhlIHRocmVzaG9sZCB0byBleHRlbmQgdGhlIFRUTCAoaWYgY3VycmVudCBUVEwgaXMgYmVsb3cgdGhpcywgZXh0ZW5kKS4KKiBgZXh0ZW5kX3RvYCAtIFRoZSBUVEwgdG8gZXh0ZW5kIHRvLgAAAAAAABNleHRlbmRfaW5zdGFuY2VfdHRsAAAAAAIAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAACWV4dGVuZF90bwAAAAAAAAQAAAAAAAAAAAAAAY9TZXRzIFRUTCBjb25maWdzIGZvciBpbnN0YW5jZSBhbmQgcGVyc2lzdGVudCBzdG9yYWdlLgoKLSBgTm9uZWAgdmFsdWVzIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBjb25maWcgKGRpc2FibGVzIGF1dG8tZXh0ZW5zaW9uIGZvciB0aGF0IHR5cGUpCi0gVmFsaWRhdGVzIHRoYXQgYHRocmVzaG9sZCA8PSBleHRlbmRfdG8gPD0gTUFYX1RUTGAKCiMgQXJndW1lbnRzCi0gYGluc3RhbmNlYCAtIFRUTCBjb25maWcgZm9yIGluc3RhbmNlIHN0b3JhZ2UKLSBgcGVyc2lzdGVudGAgLSBUVEwgY29uZmlnIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UKCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0Zyb3plbmAgaWYgY29uZmlncyBhcmUgZnJvemVuCi0gYEludmFsaWRUdGxDb25maWdgIGlmIHZhbGlkYXRpb24gZmFpbHMAAAAAD3NldF90dGxfY29uZmlncwAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAABIUmV0dXJucyB0aGUgY3VycmVudCBUVEwgY29uZmlncyBhcyAoaW5zdGFuY2VfY29uZmlnLCBwZXJzaXN0ZW50X2NvbmZpZykuAAAAC3R0bF9jb25maWdzAAAAAAAAAAABAAAD7QAAAAIAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAA4VBlcm1hbmVudGx5IGZyZWV6ZXMgVFRMIGNvbmZpZ3MsIHByZXZlbnRpbmcgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zLgoKVGhpcyBpcyBpcnJldmVyc2libGUgYW5kIHByb3ZpZGVzIGltbXV0YWJpbGl0eSBndWFyYW50ZWVzIHRvIHVzZXJzLgpFbWl0cyBgVHRsQ29uZmlnc0Zyb3plbmAgZXZlbnQuCgojIFBhbmljcwotIGBUdGxDb25maWdBbHJlYWR5RnJvemVuYCBpZiBhbHJlYWR5IGZyb3plbgAAAAAAABJmcmVlemVfdHRsX2NvbmZpZ3MAAAAAAAAAAAAAAAAAAAAAACdSZXR1cm5zIHdoZXRoZXIgVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAFWlzX3R0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAABAAAAAQAAAAAAAACuUmV0cmlldmVzIHRoZSBPQXBwIHZlcnNpb24gaW5mb3JtYXRpb24uCgojIFJldHVybnMKQSB0dXBsZSBjb250YWluaW5nOgotIGBzZW5kZXJfdmVyc2lvbmA6IFRoZSB2ZXJzaW9uIG9mIHRoZSBPQXBwU2VuZGVyCi0gYHJlY2VpdmVyX3ZlcnNpb25gOiBUaGUgdmVyc2lvbiBvZiB0aGUgT0FwcFJlY2VpdmVyAAAAAAAMb2FwcF92ZXJzaW9uAAAAAAAAAAEAAAPtAAAAAgAAAAYAAAAGAAAAAAAAAGxSZXRyaWV2ZXMgdGhlIExheWVyWmVybyBlbmRwb2ludCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgT0FwcC4KCiMgUmV0dXJucwpUaGUgTGF5ZXJaZXJvIGVuZHBvaW50IGFkZHJlc3MAAAAIZW5kcG9pbnQAAAAAAAAAAQAAABMAAAAAAAAAwVJldHJpZXZlcyB0aGUgcGVlciAoT0FwcCkgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVzcG9uZGluZyBlbmRwb2ludC4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKCiMgUmV0dXJucwpUaGUgcGVlciBhZGRyZXNzIChPQXBwIGluc3RhbmNlKSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQAAAAAAAAEcGVlcgAAAAEAAAAAAAAAA2VpZAAAAAAEAAAAAQAAA+gAAAPuAAAAIAAAAAAAAADlU2V0cyBvciByZW1vdmVzIHRoZSBwZWVyIGFkZHJlc3MgKE9BcHAgaW5zdGFuY2UpIGZvciBhIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECiogYHBlZXJgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHBlZXIgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGVuZHBvaW50LCBvciBOb25lIHRvIHJlbW92ZSB0aGUgcGVlcgAAAAAAAAhzZXRfcGVlcgAAAAIAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAARwZWVyAAAD6AAAA+4AAAAgAAAAAAAAAAAAAACOU2V0cyB0aGUgZGVsZWdhdGUgYWRkcmVzcyBmb3IgdGhlIE9BcHAgQ29yZS4KCiMgQXJndW1lbnRzCiogYGRlbGVnYXRlYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBkZWxlZ2F0ZSB0byBiZSBzZXQsIG9yIE5vbmUgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0ZQAAAAAADHNldF9kZWxlZ2F0ZQAAAAEAAAAAAAAACGRlbGVnYXRlAAAD6AAAABMAAAAAAAAAAAAAANlSZXRyaWV2ZXMgdGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZS4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgbXNnX3R5cGVgIC0gVGhlIE9BcHAgbWVzc2FnZSB0eXBlCgojIFJldHVybnMKVGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIHRoZSBnaXZlbiBlbmRwb2ludCBhbmQgbWVzc2FnZSB0eXBlAAAAAAAAEGVuZm9yY2VkX29wdGlvbnMAAAACAAAAAAAAAANlaWQAAAAABAAAAAAAAAAIbXNnX3R5cGUAAAAEAAAAAQAAAA4AAAAAAAACm1NldHMgdGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIHNwZWNpZmljIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUgY29tYmluYXRpb25zLgoKT25seSB0aGUgYGF1dGhvcml6ZXJgIG9mIHRoZSBPQXBwIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uClByb3ZpZGVzIGEgd2F5IGZvciB0aGUgT0FwcCB0byBlbmZvcmNlIHRoaW5ncyBsaWtlIHBheWluZyBmb3IgUHJlQ3JpbWUsIEFORC9PUiBtaW5pbXVtIGRzdCBselJlY2VpdmUgZ2FzIGFtb3VudHMgZXRjLgpUaGVzZSBlbmZvcmNlZCBvcHRpb25zIGNhbiB2YXJ5IGFzIHRoZSBwb3RlbnRpYWwgb3B0aW9ucy9leGVjdXRpb24gb24gdGhlIHJlbW90ZSBtYXkgZGlmZmVyIGFzIHBlciB0aGUgbXNnX3R5cGUuCmUuZy4gQW1vdW50IG9mIGx6UmVjZWl2ZSgpIGdhcyBuZWNlc3NhcnkgdG8gZGVsaXZlciBhIGx6Q29tcG9zZSgpIG1lc3NhZ2UgYWRkcyBvdmVyaGVhZCB5b3UgZG9uJ3Qgd2FudCB0byBwYXkKaWYgeW91IGFyZSBvbmx5IG1ha2luZyBhIHN0YW5kYXJkIExheWVyWmVybyBtZXNzYWdlIGllLiBselJlY2VpdmUoKSBXSVRIT1VUIHNlbmRDb21wb3NlKCkuCgojIEFyZ3VtZW50cwoqIGBvcHRpb25zYCAtIEEgdmVjdG9yIG9mIEVuZm9yY2VkT3B0aW9uUGFyYW0gc3RydWN0dXJlcyBzcGVjaWZ5aW5nIGVuZm9yY2VkIG9wdGlvbnMAAAAAFHNldF9lbmZvcmNlZF9vcHRpb25zAAAAAQAAAAAAAAAHb3B0aW9ucwAAAAPqAAAH0AAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAAAAAAAAAACekNvbWJpbmVzIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZS4KCklmIHRoZXJlIGlzIGFuIGVuZm9yY2VkIGx6UmVjZWl2ZSBvcHRpb246Ci0ge2dhc19saW1pdDogMjAwaywgdmFsdWU6IDEgWExNfSBBTkQgYSBjYWxsZXIgc3VwcGxpZXMgYSBselJlY2VpdmUgb3B0aW9uOiB7Z2FzX2xpbWl0OiAxMDBrLCB2YWx1ZTogMC41IFhMTX0KLSBUaGUgcmVzdWx0aW5nIG9wdGlvbnMgd2lsbCBiZSB7Z2FzX2xpbWl0OiAzMDBrLCB2YWx1ZTogMS41IFhMTX0gd2hlbiB0aGUgbWVzc2FnZSBpcyBleGVjdXRlZCBvbiB0aGUgcmVtb3RlIGx6X3JlY2VpdmUoKSBmdW5jdGlvbi4KVGhlIHByZXNlbmNlIG9mIGR1cGxpY2F0ZWQgb3B0aW9ucyBpcyBoYW5kbGVkIG9mZi1jaGFpbiBpbiB0aGUgdmVyaWZpZXIvZXhlY3V0b3IuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECiogYG1zZ190eXBlYCAtIFRoZSBPQXBwIG1lc3NhZ2UgdHlwZQoqIGBleHRyYV9vcHRpb25zYCAtIEFkZGl0aW9uYWwgb3B0aW9ucyBwYXNzZWQgYnkgdGhlIGNhbGxlcgoKIyBSZXR1cm5zClRoZSBjb21iaW5hdGlvbiBvZiBjYWxsZXIgc3BlY2lmaWVkIG9wdGlvbnMgQU5EIGVuZm9yY2VkIG9wdGlvbnMAAAAAAA9jb21iaW5lX29wdGlvbnMAAAAAAwAAAAAAAAADZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAAAAAANZXh0cmFfb3B0aW9ucwAAAAAAAA4AAAABAAAADgAAAAAAAAAAAAAADV9fY29uc3RydWN0b3IAAAAAAAADAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAACGVuZHBvaW50AAAAEwAAAAAAAAAIZGVsZWdhdGUAAAATAAAAAAAAAAAAAAAAAAAABXF1b3RlAAAAAAAABAAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAAB29wdGlvbnMAAAAADgAAAAAAAAAKcGF5X2luX3pybwAAAAAAAQAAAAEAAAfQAAAADE1lc3NhZ2luZ0ZlZQAAAAAAAAAAAAAACWluY3JlbWVudAAAAAAAAAUAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAAB29wdGlvbnMAAAAADgAAAAAAAAADZmVlAAAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAAAAAAAAAAAAAAAAAEXNldF9vcmRlcmVkX25vbmNlAAAAAAAAAQAAAAAAAAANb3JkZXJlZF9ub25jZQAAAAAAAAEAAAAAAAAAAAAAAAAAAAASc2tpcF9pbmJvdW5kX25vbmNlAAAAAAADAAAAAAAAAAdzcmNfZWlkAAAAAAQAAAAAAAAABnNlbmRlcgAAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAAAAAAAAAAAANlaWQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAFY291bnQAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAA5jb21wb3NlZF9jb3VudAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAANaW5ib3VuZF9jb3VudAAAAAAAAAEAAAAAAAAAA2VpZAAAAAAEAAAAAQAAAAYAAAAAAAAAAAAAAA5vdXRib3VuZF9jb3VudAAAAAAAAQAAAAAAAAADZWlkAAAAAAQAAAABAAAABgAAAAAAAAAAAAAACm5leHRfbm9uY2UAAAAAAAIAAAAAAAAAB3NyY19laWQAAAAABAAAAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAAAEAAAAGAAAAAAAAALdDaGVja3MgaWYgYSBtZXNzYWdpbmcgcGF0aCBjYW4gYmUgaW5pdGlhbGl6ZWQgZm9yIHRoZSBnaXZlbiBvcmlnaW4uCgojIEFyZ3VtZW50cwoqIGBvcmlnaW5gIC0gVGhlIG9yaWdpbiBvZiB0aGUgbWVzc2FnZQoKIyBSZXR1cm5zClRydWUgaWYgdGhlIHBhdGggY2FuIGJlIGluaXRpYWxpemVkLCBmYWxzZSBvdGhlcndpc2UAAAAAFWFsbG93X2luaXRpYWxpemVfcGF0aAAAAAAAAAEAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAEAAAABAAAAAAAAAyNFbnRyeSBwb2ludCBmb3IgcmVjZWl2aW5nIG1lc3NhZ2VzIG9yIHBhY2tldHMgZnJvbSB0aGUgTGF5ZXJaZXJvIGVuZHBvaW50LgoKVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgYGNsZWFyX3BheWxvYWRfYW5kX3RyYW5zZmVyYCB0byB2YWxpZGF0ZSB0aGUgbWVzc2FnZQphbmQgY2xlYXIgaXQgZnJvbSB0aGUgZW5kcG9pbnQsIHRoZW4gZGVsZWdhdGVzIHRvIGBfX2x6X3JlY2VpdmVgIGZvciBhcHBsaWNhdGlvbiBsb2dpYy4KCiMgQXJndW1lbnRzCiogYGV4ZWN1dG9yYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBleGVjdXRvciBmb3IgdGhlIHJlY2VpdmVkIG1lc3NhZ2UKKiBgb3JpZ2luYCAtIFRoZSBvcmlnaW4gaW5mb3JtYXRpb24gY29udGFpbmluZyB0aGUgc291cmNlIGVuZHBvaW50IGFuZCBzZW5kZXIgYWRkcmVzczoKLSBgc3JjX2VpZGA6IFRoZSBzb3VyY2UgY2hhaW4gZW5kcG9pbnQgSUQKLSBgc2VuZGVyYDogVGhlIHNlbmRlciBhZGRyZXNzIG9uIHRoZSBzb3VyY2UgY2hhaW4KLSBgbm9uY2VgOiBUaGUgbm9uY2Ugb2YgdGhlIG1lc3NhZ2UKKiBgZ3VpZGAgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZWNlaXZlZCBMYXllclplcm8gbWVzc2FnZQoqIGBtZXNzYWdlYCAtIFRoZSBwYXlsb2FkIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlCiogYGV4dHJhX2RhdGFgIC0gQWRkaXRpb25hbCBhcmJpdHJhcnkgZGF0YSBwcm92aWRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBleGVjdXRvcgoqIGB2YWx1ZWAgLSBUaGUgbmF0aXZlIHRva2VuIHZhbHVlIHNlbnQgd2l0aCB0aGUgbWVzc2FnZQAAAAAKbHpfcmVjZWl2ZQAAAAAABgAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAABGd1aWQAAAPuAAAAIAAAAAAAAAAHbWVzc2FnZQAAAAAOAAAAAAAAAApleHRyYV9kYXRhAAAAAAAOAAAAAAAAAAV2YWx1ZQAAAAAAAAsAAAAAAAAAAAAAAexJbmRpY2F0ZXMgd2hldGhlciBhbiBhZGRyZXNzIGlzIGFuIGFwcHJvdmVkIGNvbXBvc2VNc2cgc2VuZGVyIHRvIHRoZSBFbmRwb2ludC4KCkFwcGxpY2F0aW9ucyBjYW4gb3B0aW9uYWxseSBjaG9vc2UgdG8gaW1wbGVtZW50IHNlcGFyYXRlIGNvbXBvc2VNc2cgc2VuZGVycyB0aGF0IGFyZSBOT1QgdGhlIGJyaWRnaW5nIGxheWVyLgpUaGUgZGVmYXVsdCBzZW5kZXIgSVMgdGhlIE9BcHBSZWNlaXZlciBpbXBsZW1lbnRlci4KCiMgQXJndW1lbnRzCiogYG9yaWdpbmAgLSBUaGUgb3JpZ2luIGluZm9ybWF0aW9uIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBlbmRwb2ludCBhbmQgc2VuZGVyIGFkZHJlc3MKKiBgbWVzc2FnZWAgLSBUaGUgbHpSZWNlaXZlIHBheWxvYWQKKiBgc2VuZGVyYCAtIFRoZSBzZW5kZXIgYWRkcmVzcyB0byBjaGVjawoKIyBSZXR1cm5zClRydWUgaWYgdGhlIHNlbmRlciBpcyBhIHZhbGlkIGNvbXBvc2VNc2cgc2VuZGVyLCBmYWxzZSBvdGhlcndpc2UAAAAVaXNfY29tcG9zZV9tc2dfc2Vu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AAAAAAANSW52YWxpZEV4cGlyeQAAAAAAAAkAAAAAAAAADEludmFsaWRJbmRleAAAAAoAAAAAAAAADEludmFsaWROb25jZQAAAAsAAAAAAAAAEkludmFsaWRQYXlsb2FkSGFzaAAAAAAADAAAAAAAAAAVSW52YWxpZFJlY2VpdmVMaWJyYXJ5AAAAAAAADQAAAAAAAAART25seU5vbkRlZmF1bHRMaWIAAAAAAAAOAAAAAAAAAA5Pbmx5UmVjZWl2ZUxpYgAAAAAADwAAAAAAAAART25seVJlZ2lzdGVyZWRMaWIAAAAAAAAQAAAAAAAAAAtPbmx5U2VuZExpYgAAAAARAAAAAAAAABRQYXRoTm90SW5pdGlhbGl6YWJsZQAAABIAAAAAAAAAEVBhdGhOb3RWZXJpZmlhYmxlAAAAAAAAEwAAAAAAAAATUGF5bG9hZEhhc2hOb3RGb3VuZAAAAAAUAAAAAAAAAAlTYW1lVmFsdWUAAAAAAAAVAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAAWAAAAAAAAAA5VbnN1cHBvcnRlZEVpZAAAAAAAFwAAAAAAAAAKWmVyb1pyb0ZlZQAAAAAAGAAAAAAAAAAOWnJvVW5hdmFpbGFibGUAAAAAABkAAAABAAAALVBhcmFtZXRlcnMgZm9yIHNlbmRpbmcgYSBjcm9zcy1jaGFpbiBtZXNzYWdlLgAAAAAAAAAAAAAPTWVzc2FnaW5nUGFyYW1zAAAAAAUAAAArRGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAHZHN0X2VpZAAAAAAEAAAAHFRoZSBtZXNzYWdlIHBheWxvYWQgdG8gc2VuZC4AAAAHbWVzc2FnZQAAAAAOAAAAIUVuY29kZWQgZXhlY3V0b3IgYW5kIERWTiBvcHRpb25zLgAAAAAAAAdvcHRpb25zAAAAAA4AAAA5V2hldGhlciB0byBwYXkgZmVlcyBpbiBaUk8gdG9rZW4gaW5zdGVhZCBvZiBuYXRpdmUgdG9rZW4uAAAAAAAACnBheV9pbl96cm8AAAAAAAEAAAA1UmVjZWl2ZXIgYWRkcmVzcyBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4gKDMyIGJ5dGVzKS4AAAAAAAAIcmVjZWl2ZXIAAAPuAAAAIAAAAAEAAABNU291cmNlIG1lc3NhZ2UgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgd2hlcmUgYSBjcm9zcy1jaGFpbiBtZXNzYWdlIGNhbWUgZnJvbS4AAAAAAAAAAAAABk9yaWdpbgAAAAAAAwAAABdOb25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAAFbm9uY2UAAAAAAAAGAAAALlNlbmRlciBhZGRyZXNzIG9uIHRoZSBzb3VyY2UgY2hhaW4gKDMyIGJ5dGVzKS4AAAAAAAZzZW5kZXIAAAAAA+4AAAAgAAAAJlNvdXJjZSBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAAHc3JjX2VpZAAAAAAEAAAAAQAAAChGZWUgc3RydWN0dXJlIGZvciBjcm9zcy1jaGFpbiBtZXNzYWdpbmcuAAAAAAAAAAxNZXNzYWdpbmdGZWUAAAACAAAAH0ZlZSBwYWlkIGluIG5hdGl2ZSB0b2tlbiAoWExNKS4AAAAACm5hdGl2ZV9mZWUAAAAAAAsAAAAoRmVlIHBhaWQgaW4gWlJPIHRva2VuIChMYXllclplcm8gdG9rZW4pLgAAAAd6cm9fZmVlAAAAAAsAAAABAAAAQlJlY2VpcHQgcmV0dXJuZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNlbmRpbmcgYSBjcm9zcy1jaGFpbiBtZXNzYWdlLgAAAAAAAAAAABBNZXNzYWdpbmdSZWNlaXB0AAAAAwAAAClUaGUgZmVlcyBjaGFyZ2VkIGZvciBzZW5kaW5nIHRoZSBtZXNzYWdlLgAAAAAAAANmZWUAAAAH0AAAAAxNZXNzYWdpbmdGZWUAAAArR2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBtZXNzYWdlLgAAAAAEZ3VpZAAAA+4AAAAgAAAAJFRoZSBvdXRib3VuZCBub25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAVub25jZQAAAAAAAAYAAAACAAAAOFR5cGUgb2YgbWVzc2FnZSBsaWJyYXJ5IGluZGljYXRpbmcgc3VwcG9ydGVkIG9wZXJhdGlvbnMuAAAAAAAAAA5NZXNzYWdlTGliVHlwZQAAAAAAAwAAAAAAAAAfU3VwcG9ydHMgb25seSBzZW5kaW5nIG1lc3NhZ2VzLgAAAAAEU2VuZAAAAAAAAAAhU3VwcG9ydHMgb25seSByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAAB1JlY2VpdmUAAAAAAAAAAC1TdXBwb3J0cyBib3RoIHNlbmRpbmcgYW5kIHJlY2VpdmluZyBtZXNzYWdlcy4AAAAAAAAOU2VuZEFuZFJlY2VpdmUAAAAAAAEAAAC3VmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgYSBtZXNzYWdlIGxpYnJhcnkuCgpOb3RlOiBgbWlub3JgIGFuZCBgZW5kcG9pbnRfdmVyc2lvbmAgdXNlIGB1MzJgIGluc3RlYWQgb2YgYHU4YCBiZWNhdXNlIFN0ZWxsYXIgZG9lcyBub3QKc3VwcG9ydCBgdThgIHR5cGVzIGluIGNvbnRyYWN0IGludGVyZmFjZSBmdW5jdGlvbnMuAAAAAAAAAAARTWVzc2FnZUxpYlZlcnNpb24AAAAAAAADAAAAM0VuZHBvaW50IHZlcnNpb24gKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAQZW5kcG9pbnRfdmVyc2lvbgAAAAQAAAAVTWFqb3IgdmVyc2lvbiBudW1iZXIuAAAAAAAABW1ham9yAAAAAAAABgAAADdNaW5vciB2ZXJzaW9uIG51bWJlciAoc2hvdWxkIG5vdCBleGNlZWQgdTg6Ok1BWCA9IDI1NSkuAAAAAAVtaW5vcgAAAAAAAAQAAAABAAAANlRpbWVvdXQgY29uZmlndXJhdGlvbiBmb3IgcmVjZWl2ZSBsaWJyYXJ5IHRyYW5zaXRpb25zLgAAAAAAAAAAAAdUaW1lb3V0AAAAAAIAAAAoVW5peCB0aW1lc3RhbXAgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLgAAAAZleHBpcnkAAAAAAAYAAAApVGhlIG5ldyBsaWJyYXJ5IGFkZHJlc3MgdG8gdHJhbnNpdGlvbiB0by4AAAAAAAADbGliAAAAABMAAAABAAAANVBhcmFtZXRlcnMgZm9yIHNldHRpbmcgbWVzc2FnZSBsaWJyYXJ5IGNvbmZpZ3VyYXRpb24uAAAAAAAAAAAAAA5TZXRDb25maWdQYXJhbQAAAAAAAwAAAB9YRFItZW5jb2RlZCBjb25maWd1cmF0aW9uIGRhdGEuAAAAAAZjb25maWcAAAAAAA4AAAAwVGhlIHR5cGUgb2YgY29uZmlndXJhdGlvbiAoZS5nLiwgZXhlY3V0b3IsIFVMTikuAAAAC2NvbmZpZ190eXBlAAAAAAQAAAAnVGhlIGVuZHBvaW50IElEIHRoaXMgY29uZmlnIGFwcGxpZXMgdG8uAAAAAANlaWQAAAAABAAAAAEAAAAxUmVzb2x2ZWQgbGlicmFyeSBpbmZvcm1hdGlvbiB3aXRoIGRlZmF1bHQgc3RhdHVzLgAAAAAAAAAAAAAPUmVzb2x2ZWRMaWJyYXJ5AAAAAAIAAABEV2hldGhlciB0aGlzIGlzIHRoZSBkZWZhdWx0IGxpYnJhcnkgKHRydWUpIG9yIE9BcHAtc3BlY2lmaWMgKGZhbHNlKS4AAAAKaXNfZGVmYXVsdAAAAAAAAQAAAB1UaGUgcmVzb2x2ZWQgbGlicmFyeSBhZGRyZXNzLgAAAAAAAANsaWIAAAAAEwAAAAEAAABIT3V0Ym91bmQgcGFja2V0IGNvbnRhaW5pbmcgYWxsIGluZm9ybWF0aW9uIGZvciBjcm9zcy1jaGFpbiB0cmFuc21pc3Npb24uAAAAAAAAAA5PdXRib3VuZFBhY2tldAAAAAAABwAAABhEZXN0aW5hdGlvbiBlbmRwb2ludCBJRC4AAAAHZHN0X2VpZAAAAAAEAAAALEdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG1lc3NhZ2UuAAAABGd1aWQAAAPuAAAAIAAAABRUaGUgbWVzc2FnZSBwYXlsb2FkLgAAAAdtZXNzYWdlAAAAAA4AAAAgT3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAMVJlY2VpdmVyIGFkZHJlc3Mgb24gZGVzdGluYXRpb24gY2hhaW4gKDMyIGJ5dGVzKS4AAAAAAAAIcmVjZWl2ZXIAAAPuAAAAIAAAAB9TZW5kZXIgYWRkcmVzcyBvbiBzb3VyY2UgY2hhaW4uAAAAAAZzZW5kZXIAAAAAABMAAAATU291cmNlIGVuZHBvaW50IElELgAAAAAHc3JjX2VpZAAAAAAEAAAAAQAAACtBIGZlZSByZWNpcGllbnQgd2l0aCB0aGUgYW1vdW50IHRvIGJlIHBhaWQuAAAAAAAAAAAMRmVlUmVjaXBpZW50AAAAAgAAABVBbW91bnQgb2YgZmVlIHRvIHBheS4AAAAAAAAGYW1vdW50AAAAAAALAAAAH1RoZSBhZGRyZXNzIHRvIHNlbmQgdGhlIGZlZSB0by4AAAAAAnRvAAAAAAATAAAAAQAAADxSZXN1bHQgb2Ygc2VuZCBvcGVyYXRpb24gY29udGFpbmluZyBmZWVzIGFuZCBlbmNvZGVkIHBhY2tldC4AAAAAAAAADUZlZXNBbmRQYWNrZXQAAAAAAAADAAAAKlRoZSBlbmNvZGVkIHBhY2tldCByZWFkeSBmb3IgdHJhbnNtaXNzaW9uLgAAAAAADmVuY29kZWRfcGFja2V0AAAAAAAOAAAAP0xpc3Qgb2YgbmF0aXZlIHRva2VuIGZlZSByZWNpcGllbnRzIChleGVjdXRvciwgRFZOcywgdHJlYXN1cnkpLgAAAAAVbmF0aXZlX2ZlZV9yZWNpcGllbnRzAAAAAAAD6gAAB9AAAAAMRmVlUmVjaXBpZW50AAAALExpc3Qgb2YgWlJPIHRva2VuIGZlZSByZWNpcGllbnRzICh0cmVhc3VyeSkuAAAAEnpyb19mZWVfcmVjaXBpZW50cwAAAAAD6gAAB9AAAAAMRmVlUmVjaXBpZW50AAAABAAAABRPQXBwRXJyb3I6IDIwMDAtMjA5OQAAAAAAAAAJT0FwcEVycm9yAAAAAAAABAAAAAAAAAAOSW52YWxpZE9wdGlvbnMAAAAAB9AAAAAAAAAABk5vUGVlcgAAAAAH0QAAAAAAAAAIT25seVBlZXIAAAfSAAAAAAAAABNacm9Ub2tlblVuYXZhaWxhYmxlAAAAB9MAAAACAAAAAAAAAAAAAAAPT0FwcENvcmVTdG9yYWdlAAAAAAIAAAAAAAAAAAAAAAhFbmRwb2ludAAAAAEAAAAAAAAABFBlZXIAAAABAAAABAAAAAUAAAAAAAAAAAAAAAdQZWVyU2V0AAAAAAEAAAAIcGVlcl9zZXQAAAACAAAAAAAAAANlaWQAAAAABAAAAAAAAAAAAAAABHBlZXIAAAPoAAAD7gAAACAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAMAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAAB29wdGlvbnMAAAAADgAAAAIAAAAAAAAAAAAAABdPQXBwT3B0aW9uc1R5cGUzU3RvcmFnZQAAAAABAAAAAQAAAAAAAAAPRW5mb3JjZWRPcHRpb25zAAAAAAIAAAAEAAAABAAAAAUAAAAAAAAAAAAAABFFbmZvcmNlZE9wdGlvblNldAAAAAAAAAEAAAATZW5mb3JjZWRfb3B0aW9uX3NldAAAAAABAAAAAAAAABZlbmZvcmNlZF9vcHRpb25fcGFyYW1zAAAAAAPqAAAH0AAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAAAAAACAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAYAAAAAAAAACkludmFsaWRUdGwAAAAABAcAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECAAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAkAAAAAAAAAC093bmVyTm90U2V0AAAABAoAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAECwAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAADAAAAAAAAABRJbnZhbGlkTWlncmF0aW9uRGF0YQAABBoAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGwAAAAAAAAAOVXBncmFkZXNGcm96ZW4AAAAABBwAAAAEAAAAGE11bHRpc2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlzaWdFcnJvcgAAAAAAAAgAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCUAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQmAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCcAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQoAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCkAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQqAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAEKwAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aXNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyByZW5vdW5jZWQuAAAAAAAAAAAAEk93bmVyc2hpcFJlbm91bmNlZAAAAAAAAQAAABNvd25lcnNoaXBfcmVub3VuY2VkAAAAAAEAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA5Pd25hYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVyAAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQAAAAFAAAAJ0V2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgc2V0LgAAAAAAAAAADVR0bENvbmZpZ3NTZXQAAAAAAAABAAAAD3R0bF9jb25maWdzX3NldAAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAABBUdGxDb25maWdTdG9yYWdlAAAAAwAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAISW5zdGFuY2UAAAAAAAAAAAAAAApQZXJzaXN0ZW50AAAAAAACAAAAAAAAAAAAAAASVXBncmFkZWFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAZAAAAAABvDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjUuMC4xIzk0MTQ0ODA3OWVjY2Y5NTYyN2QyZmZlYTEzYmEyNjhlMzA1YTkwNzcAAFMOY29udHJhY3RtZXRhdjAAAAAAAAAABmNsaXZlcgAAAAAALzI1LjAuMCNhNjQ5MjVlOTM5MWMzZDNiM2VmOGU1M2RjNjBjMjNkYjllNmE4MmU0AA==";
13
12
  /**
14
13
  * Pre-computed WASM hash (SHA-256)
15
14
  * Use this when the WASM is already uploaded on-chain
16
15
  */
17
- export declare const WASM_HASH = "85427aebe5a3f0a70bb9c3c4b5ea70ffd885c17e9fec536cfa04b4d48230b605";
16
+ export declare const WASM_HASH = "21be5b9ff062d6e92fce084fdb0a3b5b2281f4f79b292eb1e533528e9a394aac";
18
17
  /**
19
18
  * Get the WASM bytecode as a Buffer
20
19
  * Use this to upload the WASM to the network
@@ -448,6 +447,12 @@ export declare const UpgradeableError: {
448
447
  1050: {
449
448
  message: string;
450
449
  };
450
+ 1051: {
451
+ message: string;
452
+ };
453
+ 1052: {
454
+ message: string;
455
+ };
451
456
  };
452
457
  /**
453
458
  * MultisigError: 1060-1069
@@ -516,6 +521,9 @@ export type TtlConfigStorage = {
516
521
  values: void;
517
522
  };
518
523
  export type UpgradeableStorage = {
524
+ tag: "Frozen";
525
+ values: void;
526
+ } | {
519
527
  tag: "Migrating";
520
528
  values: void;
521
529
  };
@@ -538,14 +546,10 @@ export interface Client {
538
546
  simulate?: boolean;
539
547
  }) => Promise<AssembledTransaction<string>>;
540
548
  /**
541
- * Construct and simulate a quote transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
549
+ * Construct and simulate a owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
550
+ * Returns the current owner address, or None if no owner is set.
542
551
  */
543
- quote: ({ dst_eid, msg_type, options, pay_in_zro }: {
544
- dst_eid: u32;
545
- msg_type: u32;
546
- options: Buffer;
547
- pay_in_zro: boolean;
548
- }, txnOptions?: {
552
+ owner: (txnOptions?: {
549
553
  /**
550
554
  * The fee to pay for the transaction. Default: BASE_FEE
551
555
  */
@@ -558,17 +562,12 @@ export interface Client {
558
562
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
559
563
  */
560
564
  simulate?: boolean;
561
- }) => Promise<AssembledTransaction<MessagingFee>>;
565
+ }) => Promise<AssembledTransaction<Option<string>>>;
562
566
  /**
563
- * Construct and simulate a increment transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
567
+ * Construct and simulate a pending_owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
568
+ * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
564
569
  */
565
- increment: ({ caller, dst_eid, msg_type, options, fee }: {
566
- caller: string;
567
- dst_eid: u32;
568
- msg_type: u32;
569
- options: Buffer;
570
- fee: MessagingFee;
571
- }, txnOptions?: {
570
+ pending_owner: (txnOptions?: {
572
571
  /**
573
572
  * The fee to pay for the transaction. Default: BASE_FEE
574
573
  */
@@ -581,12 +580,20 @@ export interface Client {
581
580
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
582
581
  */
583
582
  simulate?: boolean;
584
- }) => Promise<AssembledTransaction<null>>;
583
+ }) => Promise<AssembledTransaction<Option<string>>>;
585
584
  /**
586
- * Construct and simulate a set_ordered_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
585
+ * Construct and simulate a transfer_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
586
+ * Transfers ownership immediately to a new address.
587
+ *
588
+ * Use with caution - if you transfer to a wrong address, ownership is lost forever.
589
+ * Consider using `propose_ownership_transfer` instead.
590
+ *
591
+ * # Panics
592
+ * - `OwnerNotSet` if no owner is currently set
593
+ * - `TransferInProgress` if a 2-step transfer is in progress
587
594
  */
588
- set_ordered_nonce: ({ ordered_nonce }: {
589
- ordered_nonce: boolean;
595
+ transfer_ownership: ({ new_owner }: {
596
+ new_owner: string;
590
597
  }, txnOptions?: {
591
598
  /**
592
599
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -602,12 +609,26 @@ export interface Client {
602
609
  simulate?: boolean;
603
610
  }) => Promise<AssembledTransaction<null>>;
604
611
  /**
605
- * Construct and simulate a skip_inbound_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
612
+ * Construct and simulate a propose_ownership_transfer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
613
+ * Proposes an ownership transfer to a new address.
614
+ *
615
+ * The new owner must call `accept_ownership()` within `ttl` ledgers
616
+ * to complete the transfer. The pending transfer will automatically expire after.
617
+ *
618
+ * # Arguments
619
+ * - `new_owner` - The proposed new owner
620
+ * - `ttl` - Number of ledgers the new owner has to accept.
621
+ * Use `0` to cancel a pending transfer (new_owner must match pending).
622
+ *
623
+ * # Panics
624
+ * - `OwnerNotSet` if no owner is currently set
625
+ * - `NoPendingTransfer` when cancelling and no pending transfer exists
626
+ * - `InvalidTtl` if ttl exceeds max TTL
627
+ * - `InvalidPendingOwner` when cancelling with wrong new_owner address
606
628
  */
607
- skip_inbound_nonce: ({ src_eid, sender, nonce }: {
608
- src_eid: u32;
609
- sender: Buffer;
610
- nonce: u64;
629
+ propose_ownership_transfer: ({ new_owner, ttl }: {
630
+ new_owner: string;
631
+ ttl: u32;
611
632
  }, txnOptions?: {
612
633
  /**
613
634
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -623,9 +644,15 @@ export interface Client {
623
644
  simulate?: boolean;
624
645
  }) => Promise<AssembledTransaction<null>>;
625
646
  /**
626
- * Construct and simulate a eid transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
647
+ * Construct and simulate a accept_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
648
+ * Accepts a pending 2-step ownership transfer.
649
+ *
650
+ * Must be called by the pending owner before the TTL expires.
651
+ *
652
+ * # Panics
653
+ * - `NoPendingTransfer` if there is no pending transfer (or it expired)
627
654
  */
628
- eid: (txnOptions?: {
655
+ accept_ownership: (txnOptions?: {
629
656
  /**
630
657
  * The fee to pay for the transaction. Default: BASE_FEE
631
658
  */
@@ -638,11 +665,16 @@ export interface Client {
638
665
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
639
666
  */
640
667
  simulate?: boolean;
641
- }) => Promise<AssembledTransaction<u32>>;
668
+ }) => Promise<AssembledTransaction<null>>;
642
669
  /**
643
- * Construct and simulate a count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
670
+ * Construct and simulate a renounce_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
671
+ * Permanently renounces ownership.
672
+ *
673
+ * # Panics
674
+ * - `OwnerNotSet` if no owner is currently set
675
+ * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
644
676
  */
645
- count: (txnOptions?: {
677
+ renounce_ownership: (txnOptions?: {
646
678
  /**
647
679
  * The fee to pay for the transaction. Default: BASE_FEE
648
680
  */
@@ -655,11 +687,20 @@ export interface Client {
655
687
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
656
688
  */
657
689
  simulate?: boolean;
658
- }) => Promise<AssembledTransaction<u64>>;
690
+ }) => Promise<AssembledTransaction<null>>;
659
691
  /**
660
- * Construct and simulate a composed_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
692
+ * Construct and simulate a extend_instance_ttl transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
693
+ * Extends the instance TTL.
694
+ *
695
+ * # Arguments
696
+ *
697
+ * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
698
+ * * `extend_to` - The TTL to extend to.
661
699
  */
662
- composed_count: (txnOptions?: {
700
+ extend_instance_ttl: ({ threshold, extend_to }: {
701
+ threshold: u32;
702
+ extend_to: u32;
703
+ }, txnOptions?: {
663
704
  /**
664
705
  * The fee to pay for the transaction. Default: BASE_FEE
665
706
  */
@@ -672,12 +713,25 @@ export interface Client {
672
713
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
673
714
  */
674
715
  simulate?: boolean;
675
- }) => Promise<AssembledTransaction<u64>>;
716
+ }) => Promise<AssembledTransaction<null>>;
676
717
  /**
677
- * Construct and simulate a inbound_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
718
+ * Construct and simulate a set_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
719
+ * Sets TTL configs for instance and persistent storage.
720
+ *
721
+ * - `None` values remove the corresponding config (disables auto-extension for that type)
722
+ * - Validates that `threshold <= extend_to <= MAX_TTL`
723
+ *
724
+ * # Arguments
725
+ * - `instance` - TTL config for instance storage
726
+ * - `persistent` - TTL config for persistent storage
727
+ *
728
+ * # Panics
729
+ * - `TtlConfigFrozen` if configs are frozen
730
+ * - `InvalidTtlConfig` if validation fails
678
731
  */
679
- inbound_count: ({ eid }: {
680
- eid: u32;
732
+ set_ttl_configs: ({ instance, persistent }: {
733
+ instance: Option<TtlConfig>;
734
+ persistent: Option<TtlConfig>;
681
735
  }, txnOptions?: {
682
736
  /**
683
737
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -691,13 +745,12 @@ export interface Client {
691
745
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
692
746
  */
693
747
  simulate?: boolean;
694
- }) => Promise<AssembledTransaction<u64>>;
748
+ }) => Promise<AssembledTransaction<null>>;
695
749
  /**
696
- * Construct and simulate a outbound_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
750
+ * Construct and simulate a ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
751
+ * Returns the current TTL configs as (instance_config, persistent_config).
697
752
  */
698
- outbound_count: ({ eid }: {
699
- eid: u32;
700
- }, txnOptions?: {
753
+ ttl_configs: (txnOptions?: {
701
754
  /**
702
755
  * The fee to pay for the transaction. Default: BASE_FEE
703
756
  */
@@ -710,14 +763,18 @@ export interface Client {
710
763
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
711
764
  */
712
765
  simulate?: boolean;
713
- }) => Promise<AssembledTransaction<u64>>;
766
+ }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
714
767
  /**
715
- * Construct and simulate a next_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
768
+ * Construct and simulate a freeze_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
769
+ * Permanently freezes TTL configs, preventing any future modifications.
770
+ *
771
+ * This is irreversible and provides immutability guarantees to users.
772
+ * Emits `TtlConfigsFrozen` event.
773
+ *
774
+ * # Panics
775
+ * - `TtlConfigAlreadyFrozen` if already frozen
716
776
  */
717
- next_nonce: ({ src_eid, sender }: {
718
- src_eid: u32;
719
- sender: Buffer;
720
- }, txnOptions?: {
777
+ freeze_ttl_configs: (txnOptions?: {
721
778
  /**
722
779
  * The fee to pay for the transaction. Default: BASE_FEE
723
780
  */
@@ -730,20 +787,12 @@ export interface Client {
730
787
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
731
788
  */
732
789
  simulate?: boolean;
733
- }) => Promise<AssembledTransaction<u64>>;
790
+ }) => Promise<AssembledTransaction<null>>;
734
791
  /**
735
- * Construct and simulate a allow_initialize_path transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
736
- * Checks if a messaging path can be initialized for the given origin.
737
- *
738
- * # Arguments
739
- * * `origin` - The origin of the message
740
- *
741
- * # Returns
742
- * True if the path can be initialized, false otherwise
792
+ * Construct and simulate a is_ttl_configs_frozen transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
793
+ * Returns whether TTL configs are frozen.
743
794
  */
744
- allow_initialize_path: ({ origin }: {
745
- origin: Origin;
746
- }, txnOptions?: {
795
+ is_ttl_configs_frozen: (txnOptions?: {
747
796
  /**
748
797
  * The fee to pay for the transaction. Default: BASE_FEE
749
798
  */
@@ -758,31 +807,15 @@ export interface Client {
758
807
  simulate?: boolean;
759
808
  }) => Promise<AssembledTransaction<boolean>>;
760
809
  /**
761
- * Construct and simulate a lz_receive transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
762
- * Entry point for receiving messages or packets from the LayerZero endpoint.
763
- *
764
- * The default implementation calls `clear_payload_and_transfer` to validate the message
765
- * and clear it from the endpoint, then delegates to `__lz_receive` for application logic.
810
+ * Construct and simulate a oapp_version transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
811
+ * Retrieves the OApp version information.
766
812
  *
767
- * # Arguments
768
- * * `executor` - The address of the executor for the received message
769
- * * `origin` - The origin information containing the source endpoint and sender address:
770
- * - `src_eid`: The source chain endpoint ID
771
- * - `sender`: The sender address on the source chain
772
- * - `nonce`: The nonce of the message
773
- * * `guid` - The unique identifier for the received LayerZero message
774
- * * `message` - The payload of the received message
775
- * * `extra_data` - Additional arbitrary data provided by the corresponding executor
776
- * * `value` - The native token value sent with the message
813
+ * # Returns
814
+ * A tuple containing:
815
+ * - `sender_version`: The version of the OAppSender
816
+ * - `receiver_version`: The version of the OAppReceiver
777
817
  */
778
- lz_receive: ({ executor, origin, guid, message, extra_data, value }: {
779
- executor: string;
780
- origin: Origin;
781
- guid: Buffer;
782
- message: Buffer;
783
- extra_data: Buffer;
784
- value: i128;
785
- }, txnOptions?: {
818
+ oapp_version: (txnOptions?: {
786
819
  /**
787
820
  * The fee to pay for the transaction. Default: BASE_FEE
788
821
  */
@@ -795,27 +828,15 @@ export interface Client {
795
828
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
796
829
  */
797
830
  simulate?: boolean;
798
- }) => Promise<AssembledTransaction<null>>;
831
+ }) => Promise<AssembledTransaction<readonly [u64, u64]>>;
799
832
  /**
800
- * Construct and simulate a is_compose_msg_sender transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
801
- * Indicates whether an address is an approved composeMsg sender to the Endpoint.
802
- *
803
- * Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.
804
- * The default sender IS the OAppReceiver implementer.
805
- *
806
- * # Arguments
807
- * * `origin` - The origin information containing the source endpoint and sender address
808
- * * `message` - The lzReceive payload
809
- * * `sender` - The sender address to check
833
+ * Construct and simulate a endpoint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
834
+ * Retrieves the LayerZero endpoint address associated with the OApp.
810
835
  *
811
836
  * # Returns
812
- * True if the sender is a valid composeMsg sender, false otherwise
837
+ * The LayerZero endpoint address
813
838
  */
814
- is_compose_msg_sender: ({ origin, message, sender }: {
815
- origin: Origin;
816
- message: Buffer;
817
- sender: string;
818
- }, txnOptions?: {
839
+ endpoint: (txnOptions?: {
819
840
  /**
820
841
  * The fee to pay for the transaction. Default: BASE_FEE
821
842
  */
@@ -828,18 +849,19 @@ export interface Client {
828
849
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
829
850
  */
830
851
  simulate?: boolean;
831
- }) => Promise<AssembledTransaction<boolean>>;
852
+ }) => Promise<AssembledTransaction<string>>;
832
853
  /**
833
- * Construct and simulate a lz_compose transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
854
+ * Construct and simulate a peer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
855
+ * Retrieves the peer (OApp) associated with a corresponding endpoint.
856
+ *
857
+ * # Arguments
858
+ * * `eid` - The endpoint ID
859
+ *
860
+ * # Returns
861
+ * The peer address (OApp instance) associated with the corresponding endpoint
834
862
  */
835
- lz_compose: ({ executor, from, guid, index, message, extra_data, value }: {
836
- executor: string;
837
- from: string;
838
- guid: Buffer;
839
- index: u32;
840
- message: Buffer;
841
- extra_data: Buffer;
842
- value: i128;
863
+ peer: ({ eid }: {
864
+ eid: u32;
843
865
  }, txnOptions?: {
844
866
  /**
845
867
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -853,21 +875,18 @@ export interface Client {
853
875
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
854
876
  */
855
877
  simulate?: boolean;
856
- }) => Promise<AssembledTransaction<null>>;
878
+ }) => Promise<AssembledTransaction<Option<Buffer>>>;
857
879
  /**
858
- * Construct and simulate a enforced_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
859
- * Retrieves the enforced options for a given endpoint and message type.
880
+ * Construct and simulate a set_peer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
881
+ * Sets or removes the peer address (OApp instance) for a corresponding endpoint.
860
882
  *
861
883
  * # Arguments
862
884
  * * `eid` - The endpoint ID
863
- * * `msg_type` - The OApp message type
864
- *
865
- * # Returns
866
- * The enforced options for the given endpoint and message type
885
+ * * `peer` - The address of the peer to be associated with the corresponding endpoint, or None to remove the peer
867
886
  */
868
- enforced_options: ({ eid, msg_type }: {
887
+ set_peer: ({ eid, peer }: {
869
888
  eid: u32;
870
- msg_type: u32;
889
+ peer: Option<Buffer>;
871
890
  }, txnOptions?: {
872
891
  /**
873
892
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -881,22 +900,16 @@ export interface Client {
881
900
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
882
901
  */
883
902
  simulate?: boolean;
884
- }) => Promise<AssembledTransaction<Buffer>>;
903
+ }) => Promise<AssembledTransaction<null>>;
885
904
  /**
886
- * Construct and simulate a set_enforced_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
887
- * Sets the enforced options for specific endpoint and message type combinations.
888
- *
889
- * Only the `authorizer` of the OApp can call this function.
890
- * Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.
891
- * These enforced options can vary as the potential options/execution on the remote may differ as per the msg_type.
892
- * e.g. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you don't want to pay
893
- * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().
905
+ * Construct and simulate a set_delegate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
906
+ * Sets the delegate address for the OApp Core.
894
907
  *
895
908
  * # Arguments
896
- * * `options` - A vector of EnforcedOptionParam structures specifying enforced options
909
+ * * `delegate` - The address of the delegate to be set, or None to remove the delegate
897
910
  */
898
- set_enforced_options: ({ options }: {
899
- options: Array<EnforcedOptionParam>;
911
+ set_delegate: ({ delegate }: {
912
+ delegate: Option<string>;
900
913
  }, txnOptions?: {
901
914
  /**
902
915
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -912,26 +925,19 @@ export interface Client {
912
925
  simulate?: boolean;
913
926
  }) => Promise<AssembledTransaction<null>>;
914
927
  /**
915
- * Construct and simulate a combine_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
916
- * Combines options for a given endpoint and message type.
917
- *
918
- * If there is an enforced lzReceive option:
919
- * - {gas_limit: 200k, value: 1 XLM} AND a caller supplies a lzReceive option: {gas_limit: 100k, value: 0.5 XLM}
920
- * - The resulting options will be {gas_limit: 300k, value: 1.5 XLM} when the message is executed on the remote lz_receive() function.
921
- * The presence of duplicated options is handled off-chain in the verifier/executor.
928
+ * Construct and simulate a enforced_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
929
+ * Retrieves the enforced options for a given endpoint and message type.
922
930
  *
923
931
  * # Arguments
924
932
  * * `eid` - The endpoint ID
925
933
  * * `msg_type` - The OApp message type
926
- * * `extra_options` - Additional options passed by the caller
927
934
  *
928
935
  * # Returns
929
- * The combination of caller specified options AND enforced options
936
+ * The enforced options for the given endpoint and message type
930
937
  */
931
- combine_options: ({ eid, msg_type, extra_options }: {
938
+ enforced_options: ({ eid, msg_type }: {
932
939
  eid: u32;
933
940
  msg_type: u32;
934
- extra_options: Buffer;
935
941
  }, txnOptions?: {
936
942
  /**
937
943
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -947,15 +953,21 @@ export interface Client {
947
953
  simulate?: boolean;
948
954
  }) => Promise<AssembledTransaction<Buffer>>;
949
955
  /**
950
- * Construct and simulate a oapp_version transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
951
- * Retrieves the OApp version information.
956
+ * Construct and simulate a set_enforced_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
957
+ * Sets the enforced options for specific endpoint and message type combinations.
952
958
  *
953
- * # Returns
954
- * A tuple containing:
955
- * - `sender_version`: The version of the OAppSender
956
- * - `receiver_version`: The version of the OAppReceiver
959
+ * Only the `authorizer` of the OApp can call this function.
960
+ * Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.
961
+ * These enforced options can vary as the potential options/execution on the remote may differ as per the msg_type.
962
+ * e.g. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you don't want to pay
963
+ * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().
964
+ *
965
+ * # Arguments
966
+ * * `options` - A vector of EnforcedOptionParam structures specifying enforced options
957
967
  */
958
- oapp_version: (txnOptions?: {
968
+ set_enforced_options: ({ options }: {
969
+ options: Array<EnforcedOptionParam>;
970
+ }, txnOptions?: {
959
971
  /**
960
972
  * The fee to pay for the transaction. Default: BASE_FEE
961
973
  */
@@ -968,15 +980,29 @@ export interface Client {
968
980
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
969
981
  */
970
982
  simulate?: boolean;
971
- }) => Promise<AssembledTransaction<readonly [u64, u64]>>;
983
+ }) => Promise<AssembledTransaction<null>>;
972
984
  /**
973
- * Construct and simulate a endpoint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
974
- * Retrieves the LayerZero endpoint address associated with the OApp.
985
+ * Construct and simulate a combine_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
986
+ * Combines options for a given endpoint and message type.
987
+ *
988
+ * If there is an enforced lzReceive option:
989
+ * - {gas_limit: 200k, value: 1 XLM} AND a caller supplies a lzReceive option: {gas_limit: 100k, value: 0.5 XLM}
990
+ * - The resulting options will be {gas_limit: 300k, value: 1.5 XLM} when the message is executed on the remote lz_receive() function.
991
+ * The presence of duplicated options is handled off-chain in the verifier/executor.
992
+ *
993
+ * # Arguments
994
+ * * `eid` - The endpoint ID
995
+ * * `msg_type` - The OApp message type
996
+ * * `extra_options` - Additional options passed by the caller
975
997
  *
976
998
  * # Returns
977
- * The LayerZero endpoint address
999
+ * The combination of caller specified options AND enforced options
978
1000
  */
979
- endpoint: (txnOptions?: {
1001
+ combine_options: ({ eid, msg_type, extra_options }: {
1002
+ eid: u32;
1003
+ msg_type: u32;
1004
+ extra_options: Buffer;
1005
+ }, txnOptions?: {
980
1006
  /**
981
1007
  * The fee to pay for the transaction. Default: BASE_FEE
982
1008
  */
@@ -989,19 +1015,15 @@ export interface Client {
989
1015
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
990
1016
  */
991
1017
  simulate?: boolean;
992
- }) => Promise<AssembledTransaction<string>>;
1018
+ }) => Promise<AssembledTransaction<Buffer>>;
993
1019
  /**
994
- * Construct and simulate a peer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
995
- * Retrieves the peer (OApp) associated with a corresponding endpoint.
996
- *
997
- * # Arguments
998
- * * `eid` - The endpoint ID
999
- *
1000
- * # Returns
1001
- * The peer address (OApp instance) associated with the corresponding endpoint
1020
+ * Construct and simulate a quote transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1002
1021
  */
1003
- peer: ({ eid }: {
1004
- eid: u32;
1022
+ quote: ({ dst_eid, msg_type, options, pay_in_zro }: {
1023
+ dst_eid: u32;
1024
+ msg_type: u32;
1025
+ options: Buffer;
1026
+ pay_in_zro: boolean;
1005
1027
  }, txnOptions?: {
1006
1028
  /**
1007
1029
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1015,18 +1037,16 @@ export interface Client {
1015
1037
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1016
1038
  */
1017
1039
  simulate?: boolean;
1018
- }) => Promise<AssembledTransaction<Option<Buffer>>>;
1040
+ }) => Promise<AssembledTransaction<MessagingFee>>;
1019
1041
  /**
1020
- * Construct and simulate a set_peer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1021
- * Sets or removes the peer address (OApp instance) for a corresponding endpoint.
1022
- *
1023
- * # Arguments
1024
- * * `eid` - The endpoint ID
1025
- * * `peer` - The address of the peer to be associated with the corresponding endpoint, or None to remove the peer
1042
+ * Construct and simulate a increment transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1026
1043
  */
1027
- set_peer: ({ eid, peer }: {
1028
- eid: u32;
1029
- peer: Option<Buffer>;
1044
+ increment: ({ caller, dst_eid, msg_type, options, fee }: {
1045
+ caller: string;
1046
+ dst_eid: u32;
1047
+ msg_type: u32;
1048
+ options: Buffer;
1049
+ fee: MessagingFee;
1030
1050
  }, txnOptions?: {
1031
1051
  /**
1032
1052
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1042,14 +1062,10 @@ export interface Client {
1042
1062
  simulate?: boolean;
1043
1063
  }) => Promise<AssembledTransaction<null>>;
1044
1064
  /**
1045
- * Construct and simulate a set_delegate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1046
- * Sets the delegate address for the OApp Core.
1047
- *
1048
- * # Arguments
1049
- * * `delegate` - The address of the delegate to be set, or None to remove the delegate
1065
+ * Construct and simulate a set_ordered_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1050
1066
  */
1051
- set_delegate: ({ delegate }: {
1052
- delegate: Option<string>;
1067
+ set_ordered_nonce: ({ ordered_nonce }: {
1068
+ ordered_nonce: boolean;
1053
1069
  }, txnOptions?: {
1054
1070
  /**
1055
1071
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1065,23 +1081,12 @@ export interface Client {
1065
1081
  simulate?: boolean;
1066
1082
  }) => Promise<AssembledTransaction<null>>;
1067
1083
  /**
1068
- * Construct and simulate a set_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1069
- * Sets TTL configs for instance and persistent storage.
1070
- *
1071
- * - `None` values remove the corresponding config (disables auto-extension for that type)
1072
- * - Validates that `threshold <= extend_to <= MAX_TTL`
1073
- *
1074
- * # Arguments
1075
- * - `instance` - TTL config for instance storage
1076
- * - `persistent` - TTL config for persistent storage
1077
- *
1078
- * # Panics
1079
- * - `TtlConfigFrozen` if configs are frozen
1080
- * - `InvalidTtlConfig` if validation fails
1084
+ * Construct and simulate a skip_inbound_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1081
1085
  */
1082
- set_ttl_configs: ({ instance, persistent }: {
1083
- instance: Option<TtlConfig>;
1084
- persistent: Option<TtlConfig>;
1086
+ skip_inbound_nonce: ({ src_eid, sender, nonce }: {
1087
+ src_eid: u32;
1088
+ sender: Buffer;
1089
+ nonce: u64;
1085
1090
  }, txnOptions?: {
1086
1091
  /**
1087
1092
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1097,10 +1102,9 @@ export interface Client {
1097
1102
  simulate?: boolean;
1098
1103
  }) => Promise<AssembledTransaction<null>>;
1099
1104
  /**
1100
- * Construct and simulate a ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1101
- * Returns the current TTL configs as (instance_config, persistent_config).
1105
+ * Construct and simulate a eid transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1102
1106
  */
1103
- ttl_configs: (txnOptions?: {
1107
+ eid: (txnOptions?: {
1104
1108
  /**
1105
1109
  * The fee to pay for the transaction. Default: BASE_FEE
1106
1110
  */
@@ -1113,18 +1117,11 @@ export interface Client {
1113
1117
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1114
1118
  */
1115
1119
  simulate?: boolean;
1116
- }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
1120
+ }) => Promise<AssembledTransaction<u32>>;
1117
1121
  /**
1118
- * Construct and simulate a freeze_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1119
- * Permanently freezes TTL configs, preventing any future modifications.
1120
- *
1121
- * This is irreversible and provides immutability guarantees to users.
1122
- * Emits `TtlConfigsFrozen` event.
1123
- *
1124
- * # Panics
1125
- * - `TtlConfigAlreadyFrozen` if already frozen
1122
+ * Construct and simulate a count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1126
1123
  */
1127
- freeze_ttl_configs: (txnOptions?: {
1124
+ count: (txnOptions?: {
1128
1125
  /**
1129
1126
  * The fee to pay for the transaction. Default: BASE_FEE
1130
1127
  */
@@ -1137,12 +1134,11 @@ export interface Client {
1137
1134
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1138
1135
  */
1139
1136
  simulate?: boolean;
1140
- }) => Promise<AssembledTransaction<null>>;
1137
+ }) => Promise<AssembledTransaction<u64>>;
1141
1138
  /**
1142
- * Construct and simulate a is_ttl_configs_frozen transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1143
- * Returns whether TTL configs are frozen.
1139
+ * Construct and simulate a composed_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1144
1140
  */
1145
- is_ttl_configs_frozen: (txnOptions?: {
1141
+ composed_count: (txnOptions?: {
1146
1142
  /**
1147
1143
  * The fee to pay for the transaction. Default: BASE_FEE
1148
1144
  */
@@ -1155,19 +1151,12 @@ export interface Client {
1155
1151
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1156
1152
  */
1157
1153
  simulate?: boolean;
1158
- }) => Promise<AssembledTransaction<boolean>>;
1154
+ }) => Promise<AssembledTransaction<u64>>;
1159
1155
  /**
1160
- * Construct and simulate a extend_instance_ttl transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1161
- * Extends the instance TTL.
1162
- *
1163
- * # Arguments
1164
- *
1165
- * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
1166
- * * `extend_to` - The TTL to extend to.
1156
+ * Construct and simulate a inbound_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1167
1157
  */
1168
- extend_instance_ttl: ({ threshold, extend_to }: {
1169
- threshold: u32;
1170
- extend_to: u32;
1158
+ inbound_count: ({ eid }: {
1159
+ eid: u32;
1171
1160
  }, txnOptions?: {
1172
1161
  /**
1173
1162
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1181,12 +1170,13 @@ export interface Client {
1181
1170
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1182
1171
  */
1183
1172
  simulate?: boolean;
1184
- }) => Promise<AssembledTransaction<null>>;
1173
+ }) => Promise<AssembledTransaction<u64>>;
1185
1174
  /**
1186
- * Construct and simulate a owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1187
- * Returns the current owner address, or None if no owner is set.
1175
+ * Construct and simulate a outbound_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1188
1176
  */
1189
- owner: (txnOptions?: {
1177
+ outbound_count: ({ eid }: {
1178
+ eid: u32;
1179
+ }, txnOptions?: {
1190
1180
  /**
1191
1181
  * The fee to pay for the transaction. Default: BASE_FEE
1192
1182
  */
@@ -1199,12 +1189,14 @@ export interface Client {
1199
1189
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1200
1190
  */
1201
1191
  simulate?: boolean;
1202
- }) => Promise<AssembledTransaction<Option<string>>>;
1192
+ }) => Promise<AssembledTransaction<u64>>;
1203
1193
  /**
1204
- * Construct and simulate a pending_owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1205
- * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
1194
+ * Construct and simulate a next_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1206
1195
  */
1207
- pending_owner: (txnOptions?: {
1196
+ next_nonce: ({ src_eid, sender }: {
1197
+ src_eid: u32;
1198
+ sender: Buffer;
1199
+ }, txnOptions?: {
1208
1200
  /**
1209
1201
  * The fee to pay for the transaction. Default: BASE_FEE
1210
1202
  */
@@ -1217,20 +1209,19 @@ export interface Client {
1217
1209
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1218
1210
  */
1219
1211
  simulate?: boolean;
1220
- }) => Promise<AssembledTransaction<Option<string>>>;
1212
+ }) => Promise<AssembledTransaction<u64>>;
1221
1213
  /**
1222
- * Construct and simulate a transfer_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1223
- * Transfers ownership immediately to a new address.
1214
+ * Construct and simulate a allow_initialize_path transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1215
+ * Checks if a messaging path can be initialized for the given origin.
1224
1216
  *
1225
- * Use with caution - if you transfer to a wrong address, ownership is lost forever.
1226
- * Consider using `propose_ownership_transfer` instead.
1217
+ * # Arguments
1218
+ * * `origin` - The origin of the message
1227
1219
  *
1228
- * # Panics
1229
- * - `OwnerNotSet` if no owner is currently set
1230
- * - `TransferInProgress` if a 2-step transfer is in progress
1220
+ * # Returns
1221
+ * True if the path can be initialized, false otherwise
1231
1222
  */
1232
- transfer_ownership: ({ new_owner }: {
1233
- new_owner: string;
1223
+ allow_initialize_path: ({ origin }: {
1224
+ origin: Origin;
1234
1225
  }, txnOptions?: {
1235
1226
  /**
1236
1227
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1244,28 +1235,32 @@ export interface Client {
1244
1235
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1245
1236
  */
1246
1237
  simulate?: boolean;
1247
- }) => Promise<AssembledTransaction<null>>;
1238
+ }) => Promise<AssembledTransaction<boolean>>;
1248
1239
  /**
1249
- * Construct and simulate a propose_ownership_transfer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1250
- * Proposes an ownership transfer to a new address.
1240
+ * Construct and simulate a lz_receive transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1241
+ * Entry point for receiving messages or packets from the LayerZero endpoint.
1251
1242
  *
1252
- * The new owner must call `accept_ownership()` within `ttl` ledgers
1253
- * to complete the transfer. The pending transfer will automatically expire after.
1243
+ * The default implementation calls `clear_payload_and_transfer` to validate the message
1244
+ * and clear it from the endpoint, then delegates to `__lz_receive` for application logic.
1254
1245
  *
1255
1246
  * # Arguments
1256
- * - `new_owner` - The proposed new owner
1257
- * - `ttl` - Number of ledgers the new owner has to accept.
1258
- * Use `0` to cancel a pending transfer (new_owner must match pending).
1259
- *
1260
- * # Panics
1261
- * - `OwnerNotSet` if no owner is currently set
1262
- * - `NoPendingTransfer` when cancelling and no pending transfer exists
1263
- * - `InvalidTtl` if ttl exceeds max TTL
1264
- * - `InvalidPendingOwner` when cancelling with wrong new_owner address
1247
+ * * `executor` - The address of the executor for the received message
1248
+ * * `origin` - The origin information containing the source endpoint and sender address:
1249
+ * - `src_eid`: The source chain endpoint ID
1250
+ * - `sender`: The sender address on the source chain
1251
+ * - `nonce`: The nonce of the message
1252
+ * * `guid` - The unique identifier for the received LayerZero message
1253
+ * * `message` - The payload of the received message
1254
+ * * `extra_data` - Additional arbitrary data provided by the corresponding executor
1255
+ * * `value` - The native token value sent with the message
1265
1256
  */
1266
- propose_ownership_transfer: ({ new_owner, ttl }: {
1267
- new_owner: string;
1268
- ttl: u32;
1257
+ lz_receive: ({ executor, origin, guid, message, extra_data, value }: {
1258
+ executor: string;
1259
+ origin: Origin;
1260
+ guid: Buffer;
1261
+ message: Buffer;
1262
+ extra_data: Buffer;
1263
+ value: i128;
1269
1264
  }, txnOptions?: {
1270
1265
  /**
1271
1266
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1281,15 +1276,25 @@ export interface Client {
1281
1276
  simulate?: boolean;
1282
1277
  }) => Promise<AssembledTransaction<null>>;
1283
1278
  /**
1284
- * Construct and simulate a accept_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1285
- * Accepts a pending 2-step ownership transfer.
1279
+ * Construct and simulate a is_compose_msg_sender transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1280
+ * Indicates whether an address is an approved composeMsg sender to the Endpoint.
1286
1281
  *
1287
- * Must be called by the pending owner before the TTL expires.
1282
+ * Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.
1283
+ * The default sender IS the OAppReceiver implementer.
1288
1284
  *
1289
- * # Panics
1290
- * - `NoPendingTransfer` if there is no pending transfer (or it expired)
1285
+ * # Arguments
1286
+ * * `origin` - The origin information containing the source endpoint and sender address
1287
+ * * `message` - The lzReceive payload
1288
+ * * `sender` - The sender address to check
1289
+ *
1290
+ * # Returns
1291
+ * True if the sender is a valid composeMsg sender, false otherwise
1291
1292
  */
1292
- accept_ownership: (txnOptions?: {
1293
+ is_compose_msg_sender: ({ origin, message, sender }: {
1294
+ origin: Origin;
1295
+ message: Buffer;
1296
+ sender: string;
1297
+ }, txnOptions?: {
1293
1298
  /**
1294
1299
  * The fee to pay for the transaction. Default: BASE_FEE
1295
1300
  */
@@ -1302,16 +1307,19 @@ export interface Client {
1302
1307
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1303
1308
  */
1304
1309
  simulate?: boolean;
1305
- }) => Promise<AssembledTransaction<null>>;
1310
+ }) => Promise<AssembledTransaction<boolean>>;
1306
1311
  /**
1307
- * Construct and simulate a renounce_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1308
- * Permanently renounces ownership.
1309
- *
1310
- * # Panics
1311
- * - `OwnerNotSet` if no owner is currently set
1312
- * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
1312
+ * Construct and simulate a lz_compose transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1313
1313
  */
1314
- renounce_ownership: (txnOptions?: {
1314
+ lz_compose: ({ executor, from, guid, index, message, extra_data, value }: {
1315
+ executor: string;
1316
+ from: string;
1317
+ guid: Buffer;
1318
+ index: u32;
1319
+ message: Buffer;
1320
+ extra_data: Buffer;
1321
+ value: i128;
1322
+ }, txnOptions?: {
1315
1323
  /**
1316
1324
  * The fee to pay for the transaction. Default: BASE_FEE
1317
1325
  */
@@ -1347,6 +1355,25 @@ export declare class Client extends ContractClient {
1347
1355
  constructor(options: ContractClientOptions);
1348
1356
  readonly fromJSON: {
1349
1357
  authorizer: (json: string) => AssembledTransaction<string>;
1358
+ owner: (json: string) => AssembledTransaction<Option<string>>;
1359
+ pending_owner: (json: string) => AssembledTransaction<Option<string>>;
1360
+ transfer_ownership: (json: string) => AssembledTransaction<null>;
1361
+ propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
1362
+ accept_ownership: (json: string) => AssembledTransaction<null>;
1363
+ renounce_ownership: (json: string) => AssembledTransaction<null>;
1364
+ extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1365
+ set_ttl_configs: (json: string) => AssembledTransaction<null>;
1366
+ ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
1367
+ freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
1368
+ is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
1369
+ oapp_version: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
1370
+ endpoint: (json: string) => AssembledTransaction<string>;
1371
+ peer: (json: string) => AssembledTransaction<Option<Buffer<ArrayBufferLike>>>;
1372
+ set_peer: (json: string) => AssembledTransaction<null>;
1373
+ set_delegate: (json: string) => AssembledTransaction<null>;
1374
+ enforced_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
1375
+ set_enforced_options: (json: string) => AssembledTransaction<null>;
1376
+ combine_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
1350
1377
  quote: (json: string) => AssembledTransaction<MessagingFee>;
1351
1378
  increment: (json: string) => AssembledTransaction<null>;
1352
1379
  set_ordered_nonce: (json: string) => AssembledTransaction<null>;
@@ -1361,24 +1388,5 @@ export declare class Client extends ContractClient {
1361
1388
  lz_receive: (json: string) => AssembledTransaction<null>;
1362
1389
  is_compose_msg_sender: (json: string) => AssembledTransaction<boolean>;
1363
1390
  lz_compose: (json: string) => AssembledTransaction<null>;
1364
- enforced_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
1365
- set_enforced_options: (json: string) => AssembledTransaction<null>;
1366
- combine_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
1367
- oapp_version: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
1368
- endpoint: (json: string) => AssembledTransaction<string>;
1369
- peer: (json: string) => AssembledTransaction<Option<Buffer<ArrayBufferLike>>>;
1370
- set_peer: (json: string) => AssembledTransaction<null>;
1371
- set_delegate: (json: string) => AssembledTransaction<null>;
1372
- set_ttl_configs: (json: string) => AssembledTransaction<null>;
1373
- ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
1374
- freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
1375
- is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
1376
- extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1377
- owner: (json: string) => AssembledTransaction<Option<string>>;
1378
- pending_owner: (json: string) => AssembledTransaction<Option<string>>;
1379
- transfer_ownership: (json: string) => AssembledTransaction<null>;
1380
- propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
1381
- accept_ownership: (json: string) => AssembledTransaction<null>;
1382
- renounce_ownership: (json: string) => AssembledTransaction<null>;
1383
1391
  };
1384
1392
  }