From ce5219daf449f5f6c5af7b219c41b7957063c44b Mon Sep 17 00:00:00 2001 From: Apoorv Sadana <95699312+apoorvsadana@users.noreply.github.com> Date: Mon, 4 Nov 2024 17:24:47 +0530 Subject: [PATCH] Fix l1 bridge upgrade (#172) * commiting a working version of makefile * new files * committing update eth contract code * artifacts * upgrade ETH bridge script * updated snos and add cairo lang as gitmodule * working w/ submodules * purge scrip * ignore all for submodules * add verifier to env * rename purge script * fixes * Fix : kzg stateupdate and y_0 point eval (#166) * feat : refactored blob calc logic * feat : updated y_0 point logic * fix : tests * fix : tests * fix : gh runners * fix : gh runners * fix : linter fix and env.tests fix * makefile commit hash changes * fix : test * feat : updated ethereum settlement client funcs * feat : refactor changes * snos build fix * chore : refactor test cases * chore : refactor * chore : refactor * fix : lint * fix : db functions * Makefile fixes (#168) * fixes * fix pid kill * fix verifier add * Makefile fixes (#170) * fixes * fix pid kill * fix verifier add * review fixes * fix clippy * e2e test fix * upgrade l1 bridge * makefile changes * changelog * prettier * readme for artifacts * commit file * change sleep time * fix readme * add points in readme * prettier --------- Co-authored-by: Arun Jangra --- .prettierignore | 7 + CHANGELOG.md | 1 + Makefile | 12 +- scripts/artifacts/README.md | 17 + scripts/artifacts/eth/eic_eth_bridge.json | 326 ++ scripts/artifacts/eth/new_eth_bridge.json | 2676 +++++++++++++++++ .../{ => starknet}/bridge_proxy_legacy.json | 0 .../{ => starknet}/eic_eth_bridge.casm.json | 0 .../{ => starknet}/eic_eth_bridge.sierra.json | 0 .../{ => starknet}/eic_eth_token.casm.json | 0 .../{ => starknet}/eic_eth_token.sierra.json | 0 .../{ => starknet}/new_eth_bridge.casm.json | 0 .../{ => starknet}/new_eth_bridge.sierra.json | 0 .../{ => starknet}/new_eth_token.casm.json | 0 .../{ => starknet}/new_eth_token.sierra.json | 0 scripts/init_state.js | 175 +- 16 files changed, 3196 insertions(+), 18 deletions(-) create mode 100644 scripts/artifacts/README.md create mode 100644 scripts/artifacts/eth/eic_eth_bridge.json create mode 100644 scripts/artifacts/eth/new_eth_bridge.json rename scripts/artifacts/{ => starknet}/bridge_proxy_legacy.json (100%) rename scripts/artifacts/{ => starknet}/eic_eth_bridge.casm.json (100%) rename scripts/artifacts/{ => starknet}/eic_eth_bridge.sierra.json (100%) rename scripts/artifacts/{ => starknet}/eic_eth_token.casm.json (100%) rename scripts/artifacts/{ => starknet}/eic_eth_token.sierra.json (100%) rename scripts/artifacts/{ => starknet}/new_eth_bridge.casm.json (100%) rename scripts/artifacts/{ => starknet}/new_eth_bridge.sierra.json (100%) rename scripts/artifacts/{ => starknet}/new_eth_token.casm.json (100%) rename scripts/artifacts/{ => starknet}/new_eth_token.sierra.json (100%) diff --git a/.prettierignore b/.prettierignore index 46d7d371..1243185b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,9 @@ target/ dashboards +cairo-lang/ +madara/ +madara-bootstrapper/ +pathfinder/ +orchestrator_venv/ +build/ +node_modules/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 254be981..58daffcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## Added +- upgrade ETH L1 bridge for withdrawals to work - added makefile and submodules - Endpoints for triggering processing and verification jobs - Add multiple queues for processing and verification based on job type diff --git a/Makefile b/Makefile index 951edc02..7927ad5a 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ MADARA_DATA_PATH := $(shell pwd)/build/madara PATHFINDER_COMMIT := 138140e5fd967ede92806fd62de47c2e6b65712a PATHFINDER_DATA_PATH := $(shell pwd)/build/pathfinder PATHFINDER_PATH := $(shell pwd)/pathfinder -ETHEREUM_WSS_RPC_URL := wss://eth-sepolia.g.alchemy.com/v2/ +ETHEREUM_WSS_RPC_URL := wss://eth-sepolia.g.alchemy.com/v2/${ETHEREUM_API_KEY} # Environment file ENV_FILE := $(shell pwd)/.makefile.json @@ -67,6 +67,9 @@ setup: @echo "Starting ETH Bridge setup..." @make eth-bridge + # we need to sleep for a little as it's possible the block hasn't been sealed yet + @sleep 10 + @echo "Terminating previous Madara instance..." $(call kill_pid,madara) @@ -96,10 +99,6 @@ setup: fi @echo "Starknet OS built" - @echo "Starting orchestrator" - @make orchestrator - @echo "Setup completed." - @make cleanup @@ -133,7 +132,7 @@ core-contract: cd $(BOOTSTRAPPER_PATH) && \ rm -f $(BOOTSTRAP_OUTPUT_PATH) && \ git checkout $(BOOTSTRAPPER_COMMIT) && \ - RUST_LOG=debug cargo run --release -- --mode core --operator-address $(OPERATOR_ADDRESS) --output-file $(BOOTSTRAP_OUTPUT_PATH) --verifier-address $(VERIFIER_ADDRESS) && \ + RUST_LOG=debug cargo run --release -- --mode core --operator-address $(OPERATOR_ADDRESS) --output-file $(BOOTSTRAP_OUTPUT_PATH) --verifier-address $(VERIFIER_ADDRESS) --config-hash-version "StarknetOsConfig2" && \ cat $(BOOTSTRAP_OUTPUT_PATH) && \ $(call save_json,"CORE_CONTRACT_ADDRESS",$$(jq -r .starknet_contract_address $(BOOTSTRAP_OUTPUT_PATH))) && \ $(call save_json,"CORE_CONTRACT_IMPLEMENTATION_ADDRESS",$$(jq -r .starknet_contract_implementation_address $(BOOTSTRAP_OUTPUT_PATH))) @@ -149,7 +148,6 @@ eth-bridge: git checkout $(BOOTSTRAPPER_COMMIT) && \ export CORE_CONTRACT_ADDRESS=$$(jq -r '.CORE_CONTRACT_ADDRESS' $(ENV_FILE)) && \ export CORE_CONTRACT_IMPLEMENTATION_ADDRESS=$$(jq -r '.CORE_CONTRACT_IMPLEMENTATION_ADDRESS' $(ENV_FILE)) && \ - echo "TODO: set core contract address" && \ RUST_LOG=debug cargo run --release -- --mode eth-bridge --core-contract-address $$CORE_CONTRACT_ADDRESS --core-contract-implementation-address $$CORE_CONTRACT_IMPLEMENTATION_ADDRESS --output-file $(BOOTSTRAP_OUTPUT_PATH) && \ $(call save_json,"L1_BRIDGE_ADDRESS","$$(jq -r .eth_bridge_setup_outputs.l1_bridge_address $(BOOTSTRAP_OUTPUT_PATH))") && \ $(call save_json,"L2_ETH_TOKEN_ADDRESS","$$(jq -r .eth_bridge_setup_outputs.l2_eth_proxy_address $(BOOTSTRAP_OUTPUT_PATH))") && \ diff --git a/scripts/artifacts/README.md b/scripts/artifacts/README.md new file mode 100644 index 00000000..cf5e16d9 --- /dev/null +++ b/scripts/artifacts/README.md @@ -0,0 +1,17 @@ +Link to artifact sources + +Ethereum + +1. /eth/eic_eth_bridge.json - +2. /eth/new_eth_bridge.json - + +Starknet + +1. /starknet/bridge_proxy_legacy.json - +2. /starknet/eic_eth_bridge.sierra.json - from SN Sepolia +3. /starknet/eic_eth_token.sierra.json - from SN Sepolia +4. /starknet/new_eth_bridge.sierra.json - from SN Sepolia +5. /starknet/new_eth_token.sierra.json - from SN Sepolia + +TODO: move this code to the bootstrapper + build contracts from source +in the repo itself diff --git a/scripts/artifacts/eth/eic_eth_bridge.json b/scripts/artifacts/eth/eic_eth_bridge.json new file mode 100644 index 00000000..738ceff2 --- /dev/null +++ b/scripts/artifacts/eth/eic_eth_bridge.json @@ -0,0 +1,326 @@ +{ + "abi": [ + { + "type": "function", + "name": "initialize", + "inputs": [{ "name": "data", "type": "bytes", "internalType": "bytes" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "LegacyBridgeUpgraded", + "inputs": [ + { + "name": "bridge", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "LogExternalInitialize", + "inputs": [ + { + "name": "data", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "newAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleGranted", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } + ], + "bytecode": { + "object": "0x6080604052348015600f57600080fd5b50610a618061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063439fab9114610030575b600080fd5b61004361003e3660046107d8565b610045565b005b6040811461009a5760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f494e49545f444154415f4c454e4754485f3634000000000060448201526064015b60405180910390fd5b6000806100a983850185610868565b90925090506001600160a01b038216156100c357816100c5565b335b91506001600160a01b038116156100dc57806100de565b815b90506100ea82826102ac565b60006100f46103b4565b90506000811161013a5760405162461bcd60e51b81526020600482015260116024820152704e4f545f4c45474143595f42524944474560781b6044820152606401610091565b60006101446103dc565b905080600003610152575060015b600061015c6103ff565b90506001600160a01b03811661017a57506245544861017a81610422565b6001600160a01b03811660009081527fc59c20aaa96597268f595db30ec21108a505370e3266ed3a6515637f16b8b68960205260408120805490919060ff1660038111156101ca576101ca61089b565b146102175760405162461bcd60e51b815260206004820152601760248201527f4252494447455f414c52454144595f55504752414445440000000000000000006044820152606401610091565b805460ff19166002178155600381018390556102336005610447565b7fcd1400d214c673d845a60be61e4392df27be94360484e7da79f75c022255061588886040516102649291906108b1565b60405180910390a16040516001600160a01b0383169030907fbf180a3441bfd90aebeace0882b08f0588f99a9b86e1480516fcc0464c6fad3290600090a35050505050505050565b6102b4610469565b15610322576102d16000805160206109108339815191528361048a565b61031d5760405162461bcd60e51b815260206004820152601960248201527f524f4c45535f414c52454144595f494e495449414c495a4544000000000000006044820152606401610091565b61032b565b61032b826104c2565b6103336105f7565b156103ab576103506000805160206109308339815191528261048a565b6103a75760405162461bcd60e51b815260206004820152602260248201527f53454355524954595f524f4c45535f414c52454144595f494e495449414c495a604482015261115160f21b6064820152608401610091565b5050565b6103a781610611565b60006103d76040518060600160405280602181526020016109e260219139610679565b905090565b60006103d760405180606001604052806027815260200161097060279139610679565b60006103d7604051806060016040528060298152602001610a0360299139610679565b610444604051806060016040528060298152602001610a0360299139826106ad565b50565b6104446040518060600160405280602b81526020016109b7602b9139826106ad565b6000806104836000805160206109108339815191526106e0565b1415905090565b6000918252600080516020610950833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6104da60008051602061091083398151915282610702565b6105117ed2ead78c620e94b02d0a996e99298c59ddccfa1d8a0149080ac3a20de06068600080516020610997833981519152610778565b610537600080516020610997833981519152600080516020610910833981519152610778565b61054f60008051602061091083398151915280610778565b6105877f023edb77f7c8cc9e38e8afe78954f703aeeda7fffe014eeb6e56ea84e62f6da7600080516020610997833981519152610778565b6105bf7f0128d63adbf6b09002c26caf55c47e2f26635807e3ef1b027218aa74c8d61a3e600080516020610997833981519152610778565b6104447f0251e864ca2a080f55bce5da2452e8cfcafdbc951a3e7fff5023d558452ec228600080516020610910833981519152610778565b6000806104836000805160206109308339815191526106e0565b61062960008051602061093083398151915280610778565b6106617f037693ba312785932d430dccf0f56ffedd0aa7c0f8b6da2cc4530c2717689b96600080516020610930833981519152610778565b61044460008051602061093083398151915282610702565b6000808260405160200161068d91906108e0565b60408051601f198184030181529190528051602090910120549392505050565b6000826040516020016106c091906108e0565b604051602081830303815290604052805190602001209050818155505050565b6000908152600080516020610950833981519152602052604090206001015490565b61070c828261048a565b6103a7576000828152600080516020610950833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610783836106e0565b60008481526000805160206109508339815191526020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600080602083850312156107eb57600080fd5b823567ffffffffffffffff81111561080257600080fd5b8301601f8101851361081357600080fd5b803567ffffffffffffffff81111561082a57600080fd5b85602082840101111561083c57600080fd5b6020919091019590945092505050565b80356001600160a01b038116811461086357600080fd5b919050565b6000806040838503121561087b57600080fd5b6108848361084c565b91506108926020840161084c565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000825160005b8181101561090157602081860181015185830152016108e7565b50600092019182525091905056fe03711c9d994faf6055172091cb841fd4831aa743e6f3315163b06a122c841846026bd110619d11cfdfc28e281df893bc24828e89177318e9dbd860cdaedeb6b353e43b954ba190a7e49386f1f78b01dcd9f628db23f432fa029a7dfd6d98e8fb535441524b4e45545f544f4b454e5f4252494447455f4d41585f544f54414c5f42414c414e434503e615638e0b79444a70f8c695bf8f2a47033bf1cf95691ec3130f64939cee9957495448445241574c5f4c494d49545f57495448445241575f4c494d49545f5043545f534c4f545f544147535441524b4e45545f544f4b454e5f4252494447455f4d41585f4445504f534954535441524b4e45545f45524332305f544f4b454e5f4252494447455f544f4b454e5f41444452455353a26469706673582212204c6a2ba476bc0b3a9f41800528b44cdb4e386085d92f19bc0fbfcf2b6b9b590c64736f6c634300081b0033", + "sourceMap": "505:3034:11:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063439fab9114610030575b600080fd5b61004361003e3660046107d8565b610045565b005b6040811461009a5760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f494e49545f444154415f4c454e4754485f3634000000000060448201526064015b60405180910390fd5b6000806100a983850185610868565b90925090506001600160a01b038216156100c357816100c5565b335b91506001600160a01b038116156100dc57806100de565b815b90506100ea82826102ac565b60006100f46103b4565b90506000811161013a5760405162461bcd60e51b81526020600482015260116024820152704e4f545f4c45474143595f42524944474560781b6044820152606401610091565b60006101446103dc565b905080600003610152575060015b600061015c6103ff565b90506001600160a01b03811661017a57506245544861017a81610422565b6001600160a01b03811660009081527fc59c20aaa96597268f595db30ec21108a505370e3266ed3a6515637f16b8b68960205260408120805490919060ff1660038111156101ca576101ca61089b565b146102175760405162461bcd60e51b815260206004820152601760248201527f4252494447455f414c52454144595f55504752414445440000000000000000006044820152606401610091565b805460ff19166002178155600381018390556102336005610447565b7fcd1400d214c673d845a60be61e4392df27be94360484e7da79f75c022255061588886040516102649291906108b1565b60405180910390a16040516001600160a01b0383169030907fbf180a3441bfd90aebeace0882b08f0588f99a9b86e1480516fcc0464c6fad3290600090a35050505050505050565b6102b4610469565b15610322576102d16000805160206109108339815191528361048a565b61031d5760405162461bcd60e51b815260206004820152601960248201527f524f4c45535f414c52454144595f494e495449414c495a4544000000000000006044820152606401610091565b61032b565b61032b826104c2565b6103336105f7565b156103ab576103506000805160206109308339815191528261048a565b6103a75760405162461bcd60e51b815260206004820152602260248201527f53454355524954595f524f4c45535f414c52454144595f494e495449414c495a604482015261115160f21b6064820152608401610091565b5050565b6103a781610611565b60006103d76040518060600160405280602181526020016109e260219139610679565b905090565b60006103d760405180606001604052806027815260200161097060279139610679565b60006103d7604051806060016040528060298152602001610a0360299139610679565b610444604051806060016040528060298152602001610a0360299139826106ad565b50565b6104446040518060600160405280602b81526020016109b7602b9139826106ad565b6000806104836000805160206109108339815191526106e0565b1415905090565b6000918252600080516020610950833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6104da60008051602061091083398151915282610702565b6105117ed2ead78c620e94b02d0a996e99298c59ddccfa1d8a0149080ac3a20de06068600080516020610997833981519152610778565b610537600080516020610997833981519152600080516020610910833981519152610778565b61054f60008051602061091083398151915280610778565b6105877f023edb77f7c8cc9e38e8afe78954f703aeeda7fffe014eeb6e56ea84e62f6da7600080516020610997833981519152610778565b6105bf7f0128d63adbf6b09002c26caf55c47e2f26635807e3ef1b027218aa74c8d61a3e600080516020610997833981519152610778565b6104447f0251e864ca2a080f55bce5da2452e8cfcafdbc951a3e7fff5023d558452ec228600080516020610910833981519152610778565b6000806104836000805160206109308339815191526106e0565b61062960008051602061093083398151915280610778565b6106617f037693ba312785932d430dccf0f56ffedd0aa7c0f8b6da2cc4530c2717689b96600080516020610930833981519152610778565b61044460008051602061093083398151915282610702565b6000808260405160200161068d91906108e0565b60408051601f198184030181529190528051602090910120549392505050565b6000826040516020016106c091906108e0565b604051602081830303815290604052805190602001209050818155505050565b6000908152600080516020610950833981519152602052604090206001015490565b61070c828261048a565b6103a7576000828152600080516020610950833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610783836106e0565b60008481526000805160206109508339815191526020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600080602083850312156107eb57600080fd5b823567ffffffffffffffff81111561080257600080fd5b8301601f8101851361081357600080fd5b803567ffffffffffffffff81111561082a57600080fd5b85602082840101111561083c57600080fd5b6020919091019590945092505050565b80356001600160a01b038116811461086357600080fd5b919050565b6000806040838503121561087b57600080fd5b6108848361084c565b91506108926020840161084c565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000825160005b8181101561090157602081860181015185830152016108e7565b50600092019182525091905056fe03711c9d994faf6055172091cb841fd4831aa743e6f3315163b06a122c841846026bd110619d11cfdfc28e281df893bc24828e89177318e9dbd860cdaedeb6b353e43b954ba190a7e49386f1f78b01dcd9f628db23f432fa029a7dfd6d98e8fb535441524b4e45545f544f4b454e5f4252494447455f4d41585f544f54414c5f42414c414e434503e615638e0b79444a70f8c695bf8f2a47033bf1cf95691ec3130f64939cee9957495448445241574c5f4c494d49545f57495448445241575f4c494d49545f5043545f534c4f545f544147535441524b4e45545f544f4b454e5f4252494447455f4d41585f4445504f534954535441524b4e45545f45524332305f544f4b454e5f4252494447455f544f4b454e5f41444452455353a26469706673582212204c6a2ba476bc0b3a9f41800528b44cdb4e386085d92f19bc0fbfcf2b6b9b590c64736f6c634300081b0033", + "sourceMap": "505:3034:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1451:2086;;;;;;:::i;:::-;;:::i;:::-;;;1551:2;1536:17;;1528:57;;;;-1:-1:-1;;;1528:57:11;;807:2:40;1528:57:11;;;789:21:40;846:2;826:18;;;819:30;885:29;865:18;;;858:57;932:18;;1528:57:11;;;;;;;;;1931:24;;1982:36;;;;1993:4;1982:36;:::i;:::-;1930:88;;-1:-1:-1;1930:88:11;-1:-1:-1;;;;;;2047:30:11;;;:62;;2093:16;2047:62;;;2080:10;2047:62;2028:81;-1:-1:-1;;;;;;2135:27:11;;;:62;;2184:13;2135:62;;;2165:16;2135:62;2119:78;;2207:52;2227:16;2245:13;2207:19;:52::i;:::-;2494:18;2515:15;:13;:15::i;:::-;2494:36;;2561:1;2548:10;:14;2540:44;;;;-1:-1:-1;;;2540:44:11;;1646:2:40;2540:44:11;;;1628:21:40;1685:2;1665:18;;;1658:30;-1:-1:-1;;;1704:18:40;;;1697:47;1761:18;;2540:44:11;1444:341:40;2540:44:11;2648:23;2674:20;:18;:20::i;:::-;2648:46;;2708:15;2727:1;2708:20;2704:70;;-1:-1:-1;2762:1:11;2704:70;2835:20;2858:17;:15;:17::i;:::-;2835:40;-1:-1:-1;;;;;;2889:26:11;;2885:109;;-1:-1:-1;943:8:8;2963:20:11;943:8:8;2963:15:11;:20::i;:::-;-1:-1:-1;;;;;3086:29:11;;3053:30;3086:29;;;1414:17:18;3086:29:11;;;;;3160:20;;3086:29;;3053:30;3160:20;;:43;;;;;;;;:::i;:::-;;3152:79;;;;-1:-1:-1;;;3152:79:11;;2124:2:40;3152:79:11;;;2106:21:40;2163:2;2143:18;;;2136:30;2202:25;2182:18;;;2175:53;2245:18;;3152:79:11;1922:347:40;3152:79:11;3242:41;;-1:-1:-1;;3242:41:11;3265:18;3242:41;;;3293:24;;;:42;;;3345:79;362:1:19;3345:35:11;:79::i;:::-;3439:27;3461:4;;3439:27;;;;;;;:::i;:::-;;;;;;;;3481:49;;-1:-1:-1;;;;;3481:49:11;;;3510:4;;3481:49;;;;;1518:2019;;;;;;1451:2086;;:::o;2681:1050:33:-;2782:28;:26;:28::i;:::-;2778:485;;;3062:60;-1:-1:-1;;;;;;;;;;;3102:19:33;3062:21;:60::i;:::-;3037:144;;;;-1:-1:-1;;;3037:144:33;;2869:2:40;3037:144:33;;;2851:21:40;2908:2;2888:18;;;2881:30;2947:27;2927:18;;;2920:55;2992:18;;3037:144:33;2667:349:40;3037:144:33;2778:485;;;3212:40;3232:19;3212;:40::i;:::-;3277:26;:24;:26::i;:::-;3273:452;;;3519:58;-1:-1:-1;;;;;;;;;;;3557:19:33;3519:21;:58::i;:::-;3494:151;;;;-1:-1:-1;;;3494:151:33;;3223:2:40;3494:151:33;;;3205:21:40;3262:2;3242:18;;;3235:30;3301:34;3281:18;;;3274:62;-1:-1:-1;;;3352:18:40;;;3345:32;3394:19;;3494:151:33;3021:398:40;3494:151:33;2681:1050;;:::o;3273:452::-;3676:38;3694:19;3676:17;:38::i;1182:123:11:-;1230:7;1256:42;1282:15;;;;;;;;;;;;;;;;;1256:25;:42::i;:::-;1249:49;;1182:123;:::o;1311:134::-;1364:7;1390:48;1416:21;;;;;;;;;;;;;;;;;1390:25;:48::i;912:130::-;962:7;988:47;1017:17;;;;;;;;;;;;;;;;;988:28;:47::i;1048:128::-;1111:58;1140:17;;;;;;;;;;;;;;;;;1159:9;1111:28;:58::i;:::-;1048:128;:::o;706:126:19:-;769:56;795:22;;;;;;;;;;;;;;;;;819:5;769:25;:56::i;2221:152:33:-;2282:4;;2305:44;-1:-1:-1;;;;;;;;;;;2305:26:33;:44::i;:::-;:61;;2298:68;;2221:152;:::o;4481:132:30:-;4552:4;4575:14;;;-1:-1:-1;;;;;;;;;;;4575:14:30;;;;;;;;-1:-1:-1;;;;;4575:31:30;;;;;;;;;;;;;;;4481:132::o;4023:559:33:-;4099:63;-1:-1:-1;;;;;;;;;;;4142:19:33;4099:24;:63::i;:::-;4172:57;253:64;-1:-1:-1;;;;;;;;;;;4172:27:33;:57::i;:::-;4239:61;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;4239:27:33;:61::i;:::-;4310:63;-1:-1:-1;;;;;;;;;;;667:66:33;4310:27;:63::i;:::-;4383:53;861:66;-1:-1:-1;;;;;;;;;;;4383:27:33;:53::i;:::-;4446:56;1473:66;-1:-1:-1;;;;;;;;;;;4446:27:33;:56::i;:::-;4512:63;1683:66;-1:-1:-1;;;;;;;;;;;4512:27:33;:63::i;2379:148::-;2438:4;;2461:42;-1:-1:-1;;;;;;;;;;;2461:26:33;:42::i;3737:280::-;3811:59;-1:-1:-1;;;;;;;;;;;1067:66:33;3811:27;:59::i;:::-;3880;1273:66;-1:-1:-1;;;;;;;;;;;3880:27:33;:59::i;:::-;3949:61;-1:-1:-1;;;;;;;;;;;3990:19:33;3949:24;:61::i;2680:209:32:-;2745:14;2771:12;2813:4;2796:22;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2796:22:32;;;;;;;;;2786:33;;2796:22;2786:33;;;;2862:11;;2680:209;-1:-1:-1;;;2680:209:32:o;3486:195::-;3565:12;3607:4;3590:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;3580:33;;;;;;3565:48;;3659:5;3653:4;3646:19;3632:43;3486:195;;:::o;5911:116:30:-;5970:7;5996:14;;;-1:-1:-1;;;;;;;;;;;5996:14:30;;;;;:24;;;;5911:116::o;8830:227::-;8905:22;8913:4;8919:7;8905;:22::i;:::-;8900:151;;8943:14;;;;-1:-1:-1;;;;;;;;;;;8943:14:30;;;;;;;;-1:-1:-1;;;;;8943:31:30;;;;;;;;;;:38;;-1:-1:-1;;8943:38:30;8977:4;8943:38;;;9000:40;3290:10;;8943:14;;9000:40;;8943:14;9000:40;8830:227;;:::o;8433:241::-;8508:25;8536:18;8549:4;8536:12;:18::i;:::-;8564:14;;;;-1:-1:-1;;;;;;;;;;;8564:14:30;;;;;;:24;;:36;;;8615:52;8508:46;;-1:-1:-1;8591:9:30;;8508:46;;8564:14;;8615:52;;8564:14;8615:52;8498:176;8433:241;;:::o;14:586:40:-;84:6;92;145:2;133:9;124:7;120:23;116:32;113:52;;;161:1;158;151:12;113:52;201:9;188:23;234:18;226:6;223:30;220:50;;;266:1;263;256:12;220:50;289:22;;342:4;334:13;;330:27;-1:-1:-1;320:55:40;;371:1;368;361:12;320:55;411:2;398:16;437:18;429:6;426:30;423:50;;;469:1;466;459:12;423:50;514:7;509:2;500:6;496:2;492:15;488:24;485:37;482:57;;;535:1;532;525:12;482:57;566:2;558:11;;;;;588:6;;-1:-1:-1;14:586:40;-1:-1:-1;;;14:586:40:o;961:181::-;1037:20;;-1:-1:-1;;;;;1086:31:40;;1076:42;;1066:70;;1132:1;1129;1122:12;1066:70;961:181;;;:::o;1147:292::-;1231:6;1239;1292:2;1280:9;1271:7;1267:23;1263:32;1260:52;;;1308:1;1305;1298:12;1260:52;1331:37;1358:9;1331:37;:::i;:::-;1321:47;;1387:46;1429:2;1418:9;1414:18;1387:46;:::i;:::-;1377:56;;1147:292;;;;;:::o;1790:127::-;1851:10;1846:3;1842:20;1839:1;1832:31;1882:4;1879:1;1872:15;1906:4;1903:1;1896:15;2274:388;2431:2;2420:9;2413:21;2470:6;2465:2;2454:9;2450:18;2443:34;2527:6;2519;2514:2;2503:9;2499:18;2486:48;2583:1;2554:22;;;2578:2;2550:31;;;2543:42;;;;2646:2;2625:15;;;-1:-1:-1;;2621:29:40;2606:45;2602:54;;2274:388;-1:-1:-1;2274:388:40:o;3424:414::-;3555:3;3593:6;3587:13;3618:1;3628:129;3642:6;3639:1;3636:13;3628:129;;;3740:4;3724:14;;;3720:25;;3714:32;3701:11;;;3694:53;3657:12;3628:129;;;-1:-1:-1;3812:1:40;3776:16;;3801:13;;;-1:-1:-1;3776:16:40;3424:414;-1:-1:-1;3424:414:40:o", + "linkReferences": {} + }, + "methodIdentifiers": { "initialize(bytes)": "439fab91" }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LegacyBridgeUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LogExternalInitialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/solidity/StarkgateUpgradeAssistExternalInitializer.sol\":\"StarkgateUpgradeAssistExternalInitializer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/solidity/StarkgateConstants.sol\":{\"keccak256\":\"0x186842131c4c91bc58a6930491fa5619f76cd04d8ba43af9a5888ba21111d642\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://227e204f799af5d6bf452f173270b64c0be880a27d25f82afbddce3f9833e94c\",\"dweb:/ipfs/QmTk93uaih5Qx7KYDK6Fdh9qPeNiWMNkFFHmL98dKP29Qx\"]},\"src/solidity/StarkgateUpgradeAssistExternalInitializer.sol\":{\"keccak256\":\"0xf29f7633d0ee10baf300cacbeb043de628f864012e37e50c9ea93aa32b01cc1d\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://1537e49e180103f40b4b1e70a00eef1f9ea3b176cd86def507816931bececeab\",\"dweb:/ipfs/QmZk1ShhnCMTEvXoEFg6C2yS61xKJhnjGnrutMLeoHFdu5\"]},\"src/solidity/StarknetTokenStorage.sol\":{\"keccak256\":\"0xcdcd69d9ff44db4e7a564cb22d6d5ff571f85448785b6712b8edadfc698a1582\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://64f99efd55def7799ada9d6243d00c37007f9573a5ef1e627d830a94d7a33a52\",\"dweb:/ipfs/QmTYGH8AfSDCDnKm9DNuwZXeKTZH4jrtAondVqA8Nmv7AQ\"]},\"src/solidity/WithdrawalLimit.sol\":{\"keccak256\":\"0x873fabcb885ffbb2228b8cc742485718d0fc3d773bfa86334b2146418bc3bb56\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://677065f504fda831def60b0bd8b9d05676cb38f858f11230a482bfa2ca148ad6\",\"dweb:/ipfs/QmPGm9f7kjEX8W1VbZYtj3pXPZj6MgWFEfKY9jX4c8651h\"]},\"starkware/solidity/interfaces/ExternalInitializer.sol\":{\"keccak256\":\"0xb10798e8cb0abffceb72f324f8c197df05ea810c156507719ee86a75b6abd080\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://4e3e9bf0c2c3b9d496f7ba675ad94187dcd9a33f02df2f4627cda9b86b084b7e\",\"dweb:/ipfs/QmfTtuFNcgN7ty6ZaW4vUjzYngJSkGMYxomu6SNcY2d8s2\"]},\"starkware/solidity/interfaces/Identity.sol\":{\"keccak256\":\"0x18b8ab7a912a2fca2567ad2adc811d9ed9123d5b2a8bdda77741581c2f7c9a08\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://cf3cc21679c63e2e5481c0ceeba85a476ba10d11fd942e9f149ccbe4a1ee2888\",\"dweb:/ipfs/QmUdC8rH8JX6ZSJ6ddF77hJADRJCbjLjVee92E7ZmagxHh\"]},\"starkware/solidity/libraries/AccessControl.sol\":{\"keccak256\":\"0x3b5af42da4adb23a3c56d62968b2a0058650c3f19c4ec0323f8c3958a02f2d32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cb26cce13390c59767822b9b317505757ee2438b7a1481fb4ee0435cf98b074\",\"dweb:/ipfs/QmdULczhMowp2aCJSt7z4KQGrMjPzEZjGU4YyqEemwM22e\"]},\"starkware/solidity/libraries/NamedStorage.sol\":{\"keccak256\":\"0x73e777cd0ae5f60889e4784b788c345bc3a3edc6a7ec3eab636b3701f2a1f66e\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://979e827ca68e8b00e8598cd67d0de96f10b5cb03197870e1f9a871533ca84e4a\",\"dweb:/ipfs/QmPjoWoRTBRiVnNJ576hCuqr3UVoGomDmSdipFKoUZUpJi\"]},\"starkware/solidity/libraries/RolesLib.sol\":{\"keccak256\":\"0x2497bfb416c91633e1f373de9dbdbd85bd8cdb3d36a74df941ad392d8036a8c0\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://7fd51947b57ca6ecf0c4d433def5b8793213d5c281dea1b2145bb13e6be483bb\",\"dweb:/ipfs/QmXFCfdQJ9SsoMxbLXPMRkiC6jqmddnsn4T7KXs4fcdweL\"]},\"starkware/solidity/tokens/ERC20/IERC20.sol\":{\"keccak256\":\"0x04bae6eb13e8755ac10de0b0549806dadc167f4e22054f065478dda5bb5635f4\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://b097f7cffcdd93ab330be7751bfad246d0d47c63ae0e3a3215b031895c821a68\",\"dweb:/ipfs/QmVZRaTM2vopCZSskT2UMWLPkPQpiYYkRjgDNurrJAMuve\"]},\"starkware/starknet/solidity/IStarknetMessaging.sol\":{\"keccak256\":\"0x0b5ad38d2ffea6fdc5dc39d9340871f06c98c56c3faa276f92a542690b57cf64\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://9e28c6d7e599915e824ae100975b20174f5fa168904c81c0305facfd3f4f7651\",\"dweb:/ipfs/QmWiRdEkNDyKwigTiXkNbYpTkLj5WUEVo5TLgtfeeSEhmp\"]},\"starkware/starknet/solidity/IStarknetMessagingEvents.sol\":{\"keccak256\":\"0x2f455c3c28792bded72e19d0c1a21af7459b66d6071c3d996f6259c93f096424\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://95302fc273848d1c795344d6e6184c2def7866da81d563ae9ae9b3e9d8fcf7e7\",\"dweb:/ipfs/QmaHb55eq8Su9gEtqe3XbiyQkuf1Pk7CwKJkF9CXYbRrFN\"]},\"third_party/open_zeppelin/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]}},\"version\":1}", + "metadata": { + "compiler": { "version": "0.8.27+commit.40a35a09" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "bridge", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "LegacyBridgeUpgraded", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "LogExternalInitialize", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "RoleAdminChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "RoleGranted", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes", "name": "data", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "initialize" + } + ], + "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, + "userdoc": { "kind": "user", "methods": {}, "version": 1 } + }, + "settings": { + "remappings": [ + "ds-test/=lib/forge-std/lib/ds-test/src/", + "forge-std/=lib/forge-std/src/" + ], + "optimizer": { "enabled": true, "runs": 200 }, + "metadata": { "bytecodeHash": "ipfs" }, + "compilationTarget": { + "src/solidity/StarkgateUpgradeAssistExternalInitializer.sol": "StarkgateUpgradeAssistExternalInitializer" + }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "src/solidity/StarkgateConstants.sol": { + "keccak256": "0x186842131c4c91bc58a6930491fa5619f76cd04d8ba43af9a5888ba21111d642", + "urls": [ + "bzz-raw://227e204f799af5d6bf452f173270b64c0be880a27d25f82afbddce3f9833e94c", + "dweb:/ipfs/QmTk93uaih5Qx7KYDK6Fdh9qPeNiWMNkFFHmL98dKP29Qx" + ], + "license": "Apache-2.0." + }, + "src/solidity/StarkgateUpgradeAssistExternalInitializer.sol": { + "keccak256": "0xf29f7633d0ee10baf300cacbeb043de628f864012e37e50c9ea93aa32b01cc1d", + "urls": [ + "bzz-raw://1537e49e180103f40b4b1e70a00eef1f9ea3b176cd86def507816931bececeab", + "dweb:/ipfs/QmZk1ShhnCMTEvXoEFg6C2yS61xKJhnjGnrutMLeoHFdu5" + ], + "license": "Apache-2.0." + }, + "src/solidity/StarknetTokenStorage.sol": { + "keccak256": "0xcdcd69d9ff44db4e7a564cb22d6d5ff571f85448785b6712b8edadfc698a1582", + "urls": [ + "bzz-raw://64f99efd55def7799ada9d6243d00c37007f9573a5ef1e627d830a94d7a33a52", + "dweb:/ipfs/QmTYGH8AfSDCDnKm9DNuwZXeKTZH4jrtAondVqA8Nmv7AQ" + ], + "license": "Apache-2.0." + }, + "src/solidity/WithdrawalLimit.sol": { + "keccak256": "0x873fabcb885ffbb2228b8cc742485718d0fc3d773bfa86334b2146418bc3bb56", + "urls": [ + "bzz-raw://677065f504fda831def60b0bd8b9d05676cb38f858f11230a482bfa2ca148ad6", + "dweb:/ipfs/QmPGm9f7kjEX8W1VbZYtj3pXPZj6MgWFEfKY9jX4c8651h" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/interfaces/ExternalInitializer.sol": { + "keccak256": "0xb10798e8cb0abffceb72f324f8c197df05ea810c156507719ee86a75b6abd080", + "urls": [ + "bzz-raw://4e3e9bf0c2c3b9d496f7ba675ad94187dcd9a33f02df2f4627cda9b86b084b7e", + "dweb:/ipfs/QmfTtuFNcgN7ty6ZaW4vUjzYngJSkGMYxomu6SNcY2d8s2" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/interfaces/Identity.sol": { + "keccak256": "0x18b8ab7a912a2fca2567ad2adc811d9ed9123d5b2a8bdda77741581c2f7c9a08", + "urls": [ + "bzz-raw://cf3cc21679c63e2e5481c0ceeba85a476ba10d11fd942e9f149ccbe4a1ee2888", + "dweb:/ipfs/QmUdC8rH8JX6ZSJ6ddF77hJADRJCbjLjVee92E7ZmagxHh" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/libraries/AccessControl.sol": { + "keccak256": "0x3b5af42da4adb23a3c56d62968b2a0058650c3f19c4ec0323f8c3958a02f2d32", + "urls": [ + "bzz-raw://7cb26cce13390c59767822b9b317505757ee2438b7a1481fb4ee0435cf98b074", + "dweb:/ipfs/QmdULczhMowp2aCJSt7z4KQGrMjPzEZjGU4YyqEemwM22e" + ], + "license": "MIT" + }, + "starkware/solidity/libraries/NamedStorage.sol": { + "keccak256": "0x73e777cd0ae5f60889e4784b788c345bc3a3edc6a7ec3eab636b3701f2a1f66e", + "urls": [ + "bzz-raw://979e827ca68e8b00e8598cd67d0de96f10b5cb03197870e1f9a871533ca84e4a", + "dweb:/ipfs/QmPjoWoRTBRiVnNJ576hCuqr3UVoGomDmSdipFKoUZUpJi" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/libraries/RolesLib.sol": { + "keccak256": "0x2497bfb416c91633e1f373de9dbdbd85bd8cdb3d36a74df941ad392d8036a8c0", + "urls": [ + "bzz-raw://7fd51947b57ca6ecf0c4d433def5b8793213d5c281dea1b2145bb13e6be483bb", + "dweb:/ipfs/QmXFCfdQJ9SsoMxbLXPMRkiC6jqmddnsn4T7KXs4fcdweL" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/tokens/ERC20/IERC20.sol": { + "keccak256": "0x04bae6eb13e8755ac10de0b0549806dadc167f4e22054f065478dda5bb5635f4", + "urls": [ + "bzz-raw://b097f7cffcdd93ab330be7751bfad246d0d47c63ae0e3a3215b031895c821a68", + "dweb:/ipfs/QmVZRaTM2vopCZSskT2UMWLPkPQpiYYkRjgDNurrJAMuve" + ], + "license": "Apache-2.0." + }, + "starkware/starknet/solidity/IStarknetMessaging.sol": { + "keccak256": "0x0b5ad38d2ffea6fdc5dc39d9340871f06c98c56c3faa276f92a542690b57cf64", + "urls": [ + "bzz-raw://9e28c6d7e599915e824ae100975b20174f5fa168904c81c0305facfd3f4f7651", + "dweb:/ipfs/QmWiRdEkNDyKwigTiXkNbYpTkLj5WUEVo5TLgtfeeSEhmp" + ], + "license": "Apache-2.0." + }, + "starkware/starknet/solidity/IStarknetMessagingEvents.sol": { + "keccak256": "0x2f455c3c28792bded72e19d0c1a21af7459b66d6071c3d996f6259c93f096424", + "urls": [ + "bzz-raw://95302fc273848d1c795344d6e6184c2def7866da81d563ae9ae9b3e9d8fcf7e7", + "dweb:/ipfs/QmaHb55eq8Su9gEtqe3XbiyQkuf1Pk7CwKJkF9CXYbRrFN" + ], + "license": "Apache-2.0." + }, + "third_party/open_zeppelin/utils/Strings.sol": { + "keccak256": "0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3", + "urls": [ + "bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638", + "dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "id": 11 +} diff --git a/scripts/artifacts/eth/new_eth_bridge.json b/scripts/artifacts/eth/new_eth_bridge.json new file mode 100644 index 00000000..0e4f60eb --- /dev/null +++ b/scripts/artifacts/eth/new_eth_bridge.json @@ -0,0 +1,2676 @@ +{ + "abi": [ + { + "type": "function", + "name": "assignLegacyProxyGovernor", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "checkDeploymentStatus", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deactivate", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "depositCancelRequest", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" }, + { "name": "nonce", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "depositReclaim", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" }, + { "name": "nonce", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "depositWithMessage", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "uint256[]", "internalType": "uint256[]" } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "depositWithMessageCancelRequest", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "uint256[]", "internalType": "uint256[]" }, + { "name": "nonce", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "depositWithMessageReclaim", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "uint256[]", "internalType": "uint256[]" }, + { "name": "nonce", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "disableWithdrawalLimit", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "enableWithdrawalLimit", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "enrollToken", + "inputs": [{ "name": "", "type": "address", "internalType": "address" }], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "estimateDepositFeeWei", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "estimateEnrollmentFeeWei", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "getMaxTotalBalance", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRemainingIntradayAllowance", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStatus", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum StarknetTokenStorage.TokenStatus" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "identify", + "inputs": [], + "outputs": [{ "name": "", "type": "string", "internalType": "string" }], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "initialize", + "inputs": [{ "name": "data", "type": "bytes", "internalType": "bytes" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isAppGovernor", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isAppRoleAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isFrozen", + "inputs": [], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isGovernanceAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isOperator", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isSecurityAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isSecurityAgent", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isServicingToken", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isTokenAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isUpgradeGovernor", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "legacyDepositCancelRequest", + "inputs": [ + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" }, + { "name": "nonce", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "legacyDepositReclaim", + "inputs": [ + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "l2Recipient", "type": "uint256", "internalType": "uint256" }, + { "name": "nonce", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "maxDeposit", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "maxTotalBalance", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerAppGovernor", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerAppRoleAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerGovernanceAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerSecurityAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerSecurityAgent", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerTokenAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerUpgradeGovernor", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeLegacyProxyGovernor", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceRole", + "inputs": [ + { "name": "role", "type": "bytes32", "internalType": "bytes32" }, + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeAppGovernor", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeAppRoleAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeGovernanceAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeOperator", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeSecurityAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeSecurityAgent", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeTokenAdmin", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeUpgradeGovernor", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setL2TokenBridge", + "inputs": [ + { + "name": "l2TokenBridge_", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMaxTotalBalance", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { + "name": "maxTotalBalance_", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "recipient", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { "name": "amount", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" }, + { "name": "recipient", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "fee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DepositCancelRequest", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DepositReclaimed", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DepositWithMessage", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "message", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "fee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DepositWithMessageCancelRequest", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "message", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DepositWithMessageReclaimed", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "message", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "LogDeposit", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "fee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "LogDepositCancelRequest", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "LogDepositReclaimed", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "l2Recipient", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "LogNewGovernorAccepted", + "inputs": [ + { + "name": "acceptedGovernor", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "LogRemovedGovernor", + "inputs": [ + { + "name": "removedGovernor", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "newAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleGranted", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleRevoked", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SetL2TokenBridge", + "inputs": [ + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SetMaxTotalBalance", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TokenDeactivated", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TokenEnrollmentInitiated", + "inputs": [ + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "deploymentMsgHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Withdrawal", + "inputs": [ + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalLimitDisabled", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalLimitEnabled", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } + ], + "bytecode": { + "object": "0x60e06040524660011461001357600161001a565b64e8d4a510005b64ffffffffff1660805234801561003057600080fd5b503060a052600160c081905261004461004a565b506104dc565b336100558180610058565b50565b6100606101ab565b156100f6576001600160a01b03821660009081527fa5fdb349cc4ffac7e8ce7d3b075149d1bc847367d814e69a9beca89ef02db8b0602052604090205460ff166100f15760405162461bcd60e51b815260206004820152601960248201527f524f4c45535f414c52454144595f494e495449414c495a45440000000000000060448201526064015b60405180910390fd5b6100ff565b6100ff826101fd565b610107610332565b156101a2576001600160a01b03811660009081527f2c11a1f9c63817dbb9f0faa966615764d2db5d6e008269e948a99e0b52181c23602052604090205460ff1661019e5760405162461bcd60e51b815260206004820152602260248201527f53454355524954595f524f4c45535f414c52454144595f494e495449414c495a604482015261115160f21b60648201526084016100e8565b5050565b61019e81610381565b600080516020614f328339815191526000908152600080516020614f728339815191526020527fa5fdb349cc4ffac7e8ce7d3b075149d1bc847367d814e69a9beca89ef02db8b15481905b1415905090565b610215600080516020614f32833981519152826103e5565b61024c7ed2ead78c620e94b02d0a996e99298c59ddccfa1d8a0149080ac3a20de06068600080516020614f92833981519152610484565b610272600080516020614f92833981519152600080516020614f32833981519152610484565b61028a600080516020614f3283398151915280610484565b6102c27f023edb77f7c8cc9e38e8afe78954f703aeeda7fffe014eeb6e56ea84e62f6da7600080516020614f92833981519152610484565b6102fa7f0128d63adbf6b09002c26caf55c47e2f26635807e3ef1b027218aa74c8d61a3e600080516020614f92833981519152610484565b6100557f0251e864ca2a080f55bce5da2452e8cfcafdbc951a3e7fff5023d558452ec228600080516020614f32833981519152610484565b600080516020614f528339815191526000908152600080516020614f728339815191526020527f2c11a1f9c63817dbb9f0faa966615764d2db5d6e008269e948a99e0b52181c245481906101f6565b610399600080516020614f5283398151915280610484565b6103d17f037693ba312785932d430dccf0f56ffedd0aa7c0f8b6da2cc4530c2717689b96600080516020614f52833981519152610484565b610055600080516020614f52833981519152825b6000828152600080516020614f72833981519152602090815260408083206001600160a01b038516845290915290205460ff1661019e576000828152600080516020614f72833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000828152600080516020614f728339815191526020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60805160a05160c051614a2761050b6000396000610f5501526000611115015260006134300152614a276000f3fe6080604052600436106103805760003560e01c80636ffed68b116101d1578063cb1cccce11610102578063deec9c5a116100a0578063eeb728661161006f578063eeb7286614610a31578063f3fef3a314610a53578063fa0f73ba14610a73578063fad8b32a14610a9357600080fd5b8063deec9c5a146109be578063e2bbb158146109de578063ed9ef16a146109f1578063ee0e680714610a1157600080fd5b8063d08fb6cb116100dc578063d08fb6cb1461093e578063d12fc1821461095e578063d2b51eea1461097e578063d9fa70911461099e57600080fd5b8063cb1cccce146108de578063cdd1f70d146108fe578063cf50fd1c1461091e57600080fd5b8063a2bdde3d1161016f578063af8bc15e11610149578063af8bc15e14610876578063b5cd0c3c1461088b578063be58b18e146108ab578063c1f5eb3a146108be57600080fd5b8063a2bdde3d14610823578063a6d1d6c614610843578063ad8b92b41461086357600080fd5b80637fc2ab3e116101ab5780637fc2ab3e146107a35780638101b64c146107c35780638e5224ff146107e35780639463629a1461080357600080fd5b80636ffed68b14610743578063757bd9ab146107635780637d22dbc71461078357600080fd5b806336568abe116102b65780635a5d1bb91161025457806369328dec1161022357806369328dec146106c35780636c04d9d5146106e35780636d70f7ae146107035780636fc97cbf1461072357600080fd5b80635a5d1bb91461064e5780635a72af891461066e5780636083e59a1461068e57806362a14376146106a357600080fd5b8063439fab9111610290578063439fab91146105d9578063496ae54c146105f95780634baf43da146106195780634d8b92a51461063957600080fd5b806336568abe146105795780633682a450146105995780633ea053eb146105b957600080fd5b806319534075116103235780632e1a7d4d116102fd5780632e1a7d4d146104d25780632f951985146104f257806330ccebb51461051257806333eeb1471461056557600080fd5b8063195340751461046f57806323205c5214610492578063284b920e146104b257600080fd5b80630e770f231161035f5780630e770f23146103fc5780630efe6a8b1461041c57806314af98b31461042f578063178963831461044f57600080fd5b8062f714ce146103855780630b3a2d21146103a75780630c6f8664146103c7575b600080fd5b34801561039157600080fd5b506103a56103a0366004613e35565b610ab3565b005b3480156103b357600080fd5b506103a56103c2366004613e65565b610ac9565b3480156103d357600080fd5b506103e76103e2366004613e65565b610ae4565b60405190151581526020015b60405180910390f35b34801561040857600080fd5b506103a5610417366004613e65565b610b45565b6103a561042a366004613e82565b610b5d565b34801561043b57600080fd5b506103a561044a366004613e65565b610c19565b34801561045b57600080fd5b506103a561046a366004613e65565b610cc1565b34801561047b57600080fd5b50610484610cd9565b6040519081526020016103f3565b34801561049e57600080fd5b506103a56104ad366004613eb7565b610ceb565b3480156104be57600080fd5b506103a56104cd366004613e65565b610de1565b3480156104de57600080fd5b506103a56104ed366004613ef2565b610ee8565b3480156104fe57600080fd5b506103a561050d366004613e65565b610efa565b34801561051e57600080fd5b5061055861052d366004613e65565b6001600160a01b03166000908152600080516020614948833981519152602052604090205460ff1690565b6040516103f39190613f21565b34801561057157600080fd5b5060006103e7565b34801561058557600080fd5b506103a5610594366004613e35565b610f3b565b3480156105a557600080fd5b506103a56105b4366004613e65565b610fcd565b3480156105c557600080fd5b506103a56105d4366004613e65565b610fe5565b3480156105e557600080fd5b506103a56105f4366004613f49565b611112565b34801561060557600080fd5b50610484610614366004613e65565b6112c3565b34801561062557600080fd5b50610484610634366004613e65565b61130a565b34801561064557600080fd5b50610484611349565b34801561065a57600080fd5b506103e7610669366004613e65565b611353565b34801561067a57600080fd5b506103a5610689366004613e65565b61136d565b34801561069a57600080fd5b50600019610484565b3480156106af57600080fd5b506103a56106be366004613e65565b611412565b3480156106cf57600080fd5b506103a56106de366004613fbd565b61142a565b3480156106ef57600080fd5b506103e76106fe366004613e65565b611517565b34801561070f57600080fd5b506103e761071e366004613e65565b611531565b34801561072f57600080fd5b506103a561073e366004613e65565b61154b565b34801561074f57600080fd5b506103a561075e366004613fff565b611563565b34801561076f57600080fd5b506103e761077e366004613e65565b6116b5565b34801561078f57600080fd5b506103a561079e366004613fff565b6116cf565b3480156107af57600080fd5b506103a56107be366004613ef2565b611829565b3480156107cf57600080fd5b506103a56107de366004613e65565b61194e565b3480156107ef57600080fd5b506103e76107fe366004613e65565b61198f565b34801561080f57600080fd5b506103a561081e366004613e65565b6119a9565b34801561082f57600080fd5b506103e761083e366004613e65565b6119c1565b34801561084f57600080fd5b506103a561085e366004613eb7565b6119db565b6103a5610871366004613e65565b611abc565b34801561088257600080fd5b50610484611af2565b34801561089757600080fd5b506103a56108a6366004614077565b611afc565b6103a56108b93660046140e9565b611c33565b3480156108ca57600080fd5b506103a56108d9366004613e65565b611d46565b3480156108ea57600080fd5b506103e76108f9366004613e65565b611e42565b34801561090a57600080fd5b506103a5610919366004613e65565b611e5c565b34801561092a57600080fd5b506103a5610939366004614077565b611e74565b34801561094a57600080fd5b506103e7610959366004613e65565b611f90565b34801561096a57600080fd5b506103a5610979366004613e65565b611faa565b34801561098a57600080fd5b506103a5610999366004614153565b6121cf565b3480156109aa57600080fd5b506103a56109b9366004613e65565b6122d8565b3480156109ca57600080fd5b506103a56109d9366004613e65565b6122f0565b6103a56109ec36600461417f565b612308565b3480156109fd57600080fd5b506103a5610a0c366004613e65565b6123bb565b348015610a1d57600080fd5b506103a5610a2c366004613e65565b6123d3565b348015610a3d57600080fd5b50610a46612414565b6040516103f391906141c5565b348015610a5f57600080fd5b506103a5610a6e366004614153565b612434565b348015610a7f57600080fd5b506103a5610a8e366004613e65565b61243f565b348015610a9f57600080fd5b506103a5610aae366004613e65565b612457565b610ac5610abe61246f565b838361142a565b5050565b610ae16000805160206149b183398151915282612492565b50565b6001600160a01b0381166000908152600080516020614948833981519152602052604081205460ff166001816003811115610b2157610b21613f0b565b1480610b3e57506002816003811115610b3c57610b3c613f0b565b145b9392505050565b610ae160008051602061486e83398151915282612492565b82610b6781610ae4565b610bad5760405162461bcd60e51b81526020600482015260126024820152711513d2d15397d393d517d4d154959250d15160721b60448201526064015b60405180910390fd5b6040805160008082526020820190925290610bc886866124b3565b90506000610be8878787866000805160206149288339815191528761256c565b9050610c078787878660008051602061492883398151915286886126f5565b610c1087611faa565b50505050505050565b610c22336116b5565b610c645760405162461bcd60e51b815260206004820152601360248201527213d3931657d4d150d55492551657d051d15395606a1b6044820152606401610ba4565b6001600160a01b03811660008181526000805160206149488339815191526020526040808220600401805460ff191660011790555133917fe2deca319add01142d26def2de47e64bf1fdc70e6f90c13a1862a48bdaaa7cfd91a350565b610ae160008051602061488e83398151915282612492565b6000610ce661063461246f565b905090565b610cf361280a565b6001600160a01b0316636170ff1b610d0961282d565b600080516020614928833981519152610d23888888612850565b856040518563ffffffff1660e01b8152600401610d43949392919061424a565b6020604051808303816000875af1158015610d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d86919061427a565b50610d9284843361287b565b604080518481526020810183905283916001600160a01b0387169133917f50485fb0face2cfd73784044ab4191986b4a6713f01854414e2331a6bb41837d91015b60405180910390a450505050565b610df96000805160206147608339815191523361288e565b610e3d5760405162461bcd60e51b8152602060048201526015602482015274474f5645524e414e43455f41444d494e5f4f4e4c5960581b6044820152606401610ba4565b6001600160a01b03811660008181527f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e266020818152604092839020805460ff191660011790557f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e2780546001600160a01b03191690559151928352917fcfb473e6c03f9a29ddaf990e736fa3de5188a0bd85d684f5b6e164ebfbfff5d291015b60405180910390a15050565b610ae1610ef361246f565b823361142a565b80336001600160a01b03821603610f235760405162461bcd60e51b8152600401610ba490614293565b610ac560008051602061488e833981519152836128c6565b60008051602061476083398151915282148015610f7657507f0000000000000000000000000000000000000000000000000000000000000000155b15610fc35760405162461bcd60e51b815260206004820181905260248201527f43414e4e4f545f52454e4f554e43455f474f5645524e414e43455f41444d494e6044820152606401610ba4565b610ac582826128e2565b610ae160008051602061496883398151915282612492565b33610fee61295c565b6001600160a01b0316146110335760405162461bcd60e51b815260206004820152600c60248201526b27a7262cafa6a0a720a3a2a960a11b6044820152606401610ba4565b6001600160a01b0381166000908152600080516020614948833981519152602052604081205460ff16600381111561106d5761106d613f0b565b036110aa5760405162461bcd60e51b815260206004820152600d60248201526c2aa725a727aba72faa27a5a2a760991b6044820152606401610ba4565b6001600160a01b03811660008181526000805160206149488339815191526020908152604091829020805460ff1916600317905590519182527f86d6e4556eae726303caf49a75add7d92ac713e46db458dab0622aa263fb48e691015b60405180910390a150565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036111835760405162461bcd60e51b81526020600482015260166024820152751112549150d517d0d0531317d11254d0531313d5d15160521b6044820152606401610ba4565b60006111908160206142d9565b9050600061119f8260206142f0565b9050808310156111e75760405162461bcd60e51b81526020600482015260136024820152721253925517d110551057d513d3d7d4d3505313606a1b6044820152606401610ba4565b60006111f582848688614303565b8101906112029190613e65565b90503660006112138582888a614303565b915091503660006112268887818c614303565b90925090506001600160a01b038516156112505761124585838361297f565b505050505050505050565b611258612ac1565b156112a75780156112a25760405162461bcd60e51b8152602060048201526014602482015273554e45585045435445445f494e49545f4441544160601b6044820152606401610ba4565b611245565b6112b18282612adc565b6112bb8282612bf4565b611245612c23565b6001600160a01b0381166000908152600080516020614948833981519152602052604081206004015460ff166112fb57600019611304565b61130482612c2e565b92915050565b6001600160a01b03811660009081526000805160206149488339815191526020526040812060030154801561133f5780610b3e565b6000199392505050565b6000610ce6612c4f565b60006113046000805160206147c78339815191528361288e565b61137633611f90565b6113b85760405162461bcd60e51b815260206004820152601360248201527227a7262cafa9a2a1aaa924aa2cafa0a226a4a760691b6044820152606401610ba4565b6001600160a01b03811660008181526000805160206149488339815191526020526040808220600401805460ff191690555133917f109dee66091b7a145f557f52c55d7beccb6a29011fc705557e2975749474076b91a350565b610ae160008051602061478083398151915282612492565b6001600160a01b0381166114745760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610ba4565b61147f838383612c63565b6001600160a01b0383166000908152600080516020614948833981519152602052604090206004015460ff16156114ba576114ba8383612f80565b6114c583838361287b565b826001600160a01b0316816001600160a01b03167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63988460405161150a91815260200190565b60405180910390a3505050565b60006113046000805160206147e78339815191528361288e565b60006113046000805160206149688339815191528361288e565b610ae16000805160206147e783398151915282612492565b803361156d612ff0565b600083815260209190915260409020546001600160a01b0316146115c45760405162461bcd60e51b815260206004820152600e60248201526d27a7262cafa222a827a9a4aa27a960911b6044820152606401610ba4565b6115cc61280a565b6001600160a01b0316637a98660b6115e261282d565b7f02d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee561160d8888613013565b866040518563ffffffff1660e01b815260040161162d949392919061424a565b6020604051808303816000875af115801561164c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611670919061427a565b506040805185815260208101849052849133917fea57f52faafe318751f75acb6756cff3f66afc10201ef8f2d504e788985db3f591015b60405180910390a350505050565b600061130460008051602061486e8339815191528361288e565b80336116d9612ff0565b600083815260209190915260409020546001600160a01b0316146117305760405162461bcd60e51b815260206004820152600e60248201526d27a7262cafa222a827a9a4aa27a960911b6044820152606401610ba4565b61173861280a565b6001600160a01b0316636170ff1b61174e61282d565b7f02d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee56117798888613013565b866040518563ffffffff1660e01b8152600401611799949392919061424a565b6020604051808303816000875af11580156117b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117dc919061427a565b506117ef6117e861246f565b853361287b565b6040805185815260208101849052849133917fb0b548d5e12b6a60adac4d6dd7610f55134cea4fd145535edc303a48063e0cb491016116a7565b61183233611353565b6118725760405162461bcd60e51b815260206004820152601160248201527027a7262cafa0a8282fa3a7ab22a92727a960791b6044820152606401610ba4565b61187a612ac1565b6118c65760405162461bcd60e51b815260206004820152601860248201527f434f4e54524143545f4e4f545f494e495449414c495a454400000000000000006044820152606401610ba4565b6118cf816130bb565b6119155760405162461bcd60e51b81526020600482015260176024820152764c325f414444524553535f4f55545f4f465f52414e474560481b6044820152606401610ba4565b61191e816130de565b6040518181527f90fc3f39f8e4669d1bf5f9038707949f8af42a973f62988143be0fa7c3997f1890602001611107565b80336001600160a01b038216036119775760405162461bcd60e51b8152600401610ba490614293565b610ac5600080516020614780833981519152836128c6565b600061130460008051602061488e8339815191528361288e565b610ae160008051602061476083398151915282612492565b60006113046000805160206149b18339815191528361288e565b6119e361280a565b6001600160a01b0316637a98660b6119f961282d565b600080516020614928833981519152611a13888888612850565b856040518563ffffffff1660e01b8152600401611a33949392919061424a565b6020604051808303816000875af1158015611a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a76919061427a565b50604080518481526020810183905283916001600160a01b0387169133917f8f3da3ce93acd45e015b069c8f032d37be93dc9efcaaeda368aa9ca74f64c30a9101610dd3565b60405162461bcd60e51b815260206004820152600b60248201526a155394d5541413d495115160aa1b6044820152606401610ba4565b6000610ce6613100565b611b0461280a565b6001600160a01b0316636170ff1b611b1a61282d565b60008051602061484e833981519152611b6a8a8a8a60018b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061311392505050565b856040518563ffffffff1660e01b8152600401611b8a949392919061424a565b6020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd919061427a565b50611bd986863361287b565b83866001600160a01b0316336001600160a01b03167fa465a02eedf06ceffd1d99159ad98c5d8fa7f17b870eb22e0bfcec06398a8f7388878787604051611c23949392919061432d565b60405180910390a4505050505050565b84611c3d81610ae4565b611c7e5760405162461bcd60e51b81526020600482015260126024820152711513d2d15397d393d517d4d154959250d15160721b6044820152606401610ba4565b6000611c8a87876124b3565b90506000611cdf88888888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525060008051602061484e833981519152925089915061256c9050565b9050611d3388888888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525060008051602061484e83398151915292508891508990506126f5565b611d3c88611faa565b5050505050505050565b611d5e6000805160206147608339815191523361288e565b611da25760405162461bcd60e51b8152602060048201526015602482015274474f5645524e414e43455f41444d494e5f4f4e4c5960581b6044820152606401610ba4565b6001600160a01b03811660008181527f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e266020818152604092839020805460ff191690557f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e2780546001600160a01b03191690559151928352917fd75f94825e770b8b512be8e74759e252ad00e102e38f50cce2f7c6f868a295999101610edc565b60006113046000805160206147608339815191528361288e565b610ae16000805160206147c783398151915282612492565b611e7c61280a565b6001600160a01b0316637a98660b611e9261282d565b60008051602061484e833981519152611ee28a8a8a60018b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061311392505050565b856040518563ffffffff1660e01b8152600401611f02949392919061424a565b6020604051808303816000875af1158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f45919061427a565b5083866001600160a01b0316336001600160a01b03167f889e470f207032611b2f68dbd2124e3139794f19a6b536c83892fd505760386088878787604051611c23949392919061432d565b60006113046000805160206147808339815191528361288e565b6001600160a01b03811660009081526000805160206149488339815191526020526040902054819060019060ff166003811115611fe957611fe9613f0b565b14611ff2575050565b6001600160a01b038216600090815260008051602061494883398151915260205260409020600181015461202461280a565b6001600160a01b03166377c7d7a9826040518263ffffffff1660e01b815260040161205191815260200190565b602060405180830381865afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612092919061427a565b6000036120a957815460ff191660021782556121c9565b81600201544211156121c9576001600160a01b038416600090815260008051602061494883398151915260205260408120805460ff19908116825560018201839055600282018390556003820183905560049091018054909116905561210d61295c565b6001600160a01b0316635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216e9190614373565b604051630caca05160e31b81526001600160a01b03878116600483015291925090821690636565028890602401600060405180830381600087803b1580156121b557600080fd5b505af1158015611245573d6000803e3d6000fd5b50505050565b6121d833611353565b6122185760405162461bcd60e51b815260206004820152601160248201527027a7262cafa0a8282fa3a7ab22a92727a960791b6044820152606401610ba4565b806000036122685760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f4d41585f544f54414c5f42414c414e4345000000000000006044820152606401610ba4565b816001600160a01b03167fb895637c7d86c9b7b5b747e72195206a3fc21d8df0e019edd2312454ffa733b1826040516122a391815260200190565b60405180910390a26001600160a01b039190911660009081526000805160206149488339815191526020526040902060030155565b610ae160008051602061486e833981519152826128c6565b610ae16000805160206147c7833981519152826128c6565b604080516000808252602082019092529061232161246f565b9050600061232f82866124b3565b9050600061234f838787876000805160206149288339815191528761256c565b905061236e8387878760008051602061492883398151915286886126f5565b6040805187815260208101839052908101839052859033907f5b5dbc6c64043a15d3fe6943a6e443a826b78755edc257b2ec890c022225dbcf9060600160405180910390a3505050505050565b610ae16000805160206147e7833981519152826128c6565b80336001600160a01b038216036123fc5760405162461bcd60e51b8152600401610ba490614293565b610ac5600080516020614760833981519152836128c6565b60606040518060600160405280602181526020016149d160219139905090565b610ac582823361142a565b610ae16000805160206149b1833981519152826128c6565b610ae1600080516020614968833981519152826128c6565b6000610ce660405180606001604052806029815260200161498860299139613358565b61249b8261338c565b6124a4816133ae565b6124ae83836133b8565b505050565b6000813410156124fa5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b6044820152606401610ba4565b60006125068334614390565b90506125118161342e565b61251d6245544861130a565b6125278247614390565b1115610b3e5760405162461bcd60e51b815260206004820152601460248201527313505617d09053105390d157d15610d15151115160621b6044820152606401610ba4565b600061257661282d565b6000036125b95760405162461bcd60e51b8152602060048201526011602482015270130c97d094925111d157d393d517d4d155607a1b6044820152606401610ba4565b600086116125f85760405162461bcd60e51b815260206004820152600c60248201526b16915493d7d1115413d4d25560a21b6044820152606401610ba4565b612601856130bb565b6126475760405162461bcd60e51b81526020600482015260176024820152764c325f414444524553535f4f55545f4f465f52414e474560481b6044820152606401610ba4565b60008051602061484e8339815191528314600061266261280a565b6001600160a01b0316633e3aa6c58561267961282d565b886126878e8e8e8a8f613113565b6040518563ffffffff1660e01b81526004016126a5939291906143a3565b604080518083038185885af11580156126c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126e791906143c2565b9a9950505050505050505050565b600080516020614928833981519152830361275f57604080518781526020810184905290810182905285906001600160a01b0389169033907f5f971bd00bf3ffbca8a6d72cdd4fd92cfd4f62636161921d1e5a64f0b64ccb6d9060600160405180910390a4610c10565b60008051602061484e83398151915283146127af5760405162461bcd60e51b815260206004820152601060248201526f2aa725a727aba72fa9a2a622a1aa27a960811b6044820152606401610ba4565b84876001600160a01b0316336001600160a01b03167f2203a49c69f1a46c1164f5e4a30643dd77b7c59c0ff9bc433256048365c247f1898887876040516127f994939291906143e6565b60405180910390a450505050505050565b6000610ce660405180606001604052806028815260200161473860289139613358565b6000610ce660405180606001604052806027815260200161482760279139613358565b6040805160008082526020820190925260609150612872858585600085613113565b95945050505050565b6124ae6001600160a01b038216836134e3565b6000918252600080516020614807833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6128cf8261338c565b6128d8816133ae565b6124ae8383613588565b6001600160a01b03811633146129525760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610ba4565b610ac58282613588565b6000610ce66040518060600160405280602681526020016148ae60269139613358565b6001600160a01b0383163b6129cb5760405162461bcd60e51b8152602060048201526012602482015271115250d7d393d517d057d0d3d395149050d560721b6044820152606401610ba4565b600080846001600160a01b031663439fab9160e01b85856040516024016129f3929190614412565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612a319190614441565b600060405180830381855af49150503d8060008114612a6c576040519150601f19603f3d011682016040523d82523d6000602084013e612a71565b606091505b5091509150818190612a965760405162461bcd60e51b8152600401610ba491906141c5565b508051819015612ab95760405162461bcd60e51b8152600401610ba491906141c5565b505050505050565b600080612acc61280a565b6001600160a01b03161415905090565b60408114612b205760405162461bcd60e51b8152602060048201526011602482015270494c4c4547414c5f444154415f53495a4560781b6044820152606401610ba4565b600080612b2f8385018561445d565b91509150612b46816001600160a01b03163b151590565b612b9d5760405162461bcd60e51b815260206004820152602260248201527f494e56414c49445f4d4553534147494e475f434f4e54524143545f4144445245604482015261535360f01b6064820152608401610ba4565b6001600160a01b0382163b6121c95760405162461bcd60e51b815260206004820181905260248201527f494e56414c49445f4d414e414745525f434f4e54524143545f414444524553536044820152606401610ba4565b600080612c038385018561445d565b91509150612c10816135fc565b612c198261361e565b6121c96005613640565b33610ae18180613662565b6000612c3982613766565b612c465761130482613795565b61130482613848565b6000610ce664012a05f200620186a06142d9565b612c6b61282d565b600003612cae5760405162461bcd60e51b8152602060048201526011602482015270130c97d094925111d157d393d517d4d155607a1b6044820152606401610ba4565b6001600160a01b03811660006001612cc860806002614572565b612cd29190614390565b60408051600580825260c082019092529186169250608086901c916000916020820160a080368337019050509050600081600081518110612d1557612d1561457e565b6020026020010181815250508381600181518110612d3557612d3561457e565b602002602001018181525050866001600160a01b031681600281518110612d5e57612d5e61457e565b6020026020010181815250508281600381518110612d7e57612d7e61457e565b6020026020010181815250508181600481518110612d9e57612d9e61457e565b602002602001018181525050612db261280a565b6001600160a01b0316632c9dd5c0612dc861282d565b836040518363ffffffff1660e01b8152600401612de6929190614594565b6020604051808303816000875af1925050508015612e21575060408051601f3d908101601f19168201909252612e1e9181019061427a565b60015b611d3c57612e2d6145ad565b806308c379a003612f745750612e41614604565b80612e4c5750612f76565b60408051600480825260a082019092529060208201608080368337019050509150600082600081518110612e8257612e8261457e565b6020026020010181815250508482600181518110612ea257612ea261457e565b6020026020010181815250508382600281518110612ec257612ec261457e565b6020026020010181815250508282600381518110612ee257612ee261457e565b602002602001018181525050612ef661280a565b6001600160a01b0316632c9dd5c0612f0c61282d565b846040518363ffffffff1660e01b8152600401612f2a929190614594565b6020604051808303816000875af1158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d919061427a565b5050610c10565b505b3d6000803e3d6000fd5b6000612f8b83612c2e565b905081811015612fdd5760405162461bcd60e51b815260206004820152601d60248201527f455843454544535f474c4f42414c5f57495448445241575f4c494d49540000006044820152606401610ba4565b6124ae83612feb8484614390565b613878565b6000610ce66040518060600160405280602981526020016148ff602991396138ab565b6040805160038082526080820190925260609160009190602082018480368337019050509050828160008151811061304d5761304d61457e565b6020908102919091010152600161306660806002614572565b6130709190614390565b8416816001815181106130855761308561457e565b602002602001018181525050608084901c816002815181106130a9576130a961457e565b60209081029190910101529392505050565b60008115801590611304575061130482600167080000000000001160c01b011190565b610ae160405180606001604052806027815260200161482760279139826138de565b6000610ce664012a05f200614e206142d9565b606060008361312357600561312f565b61312f600160056142f0565b9050600083518261314091906142f0565b67ffffffffffffffff811115613158576131586141f8565b604051908082528060200260200182016040528015613181578160200160208202803683370190505b509050876001600160a01b0316816000815181106131a1576131a161457e565b602002602001018181525050336001600160a01b0316816001815181106131ca576131ca61457e565b60200260200101818152505085816002815181106131ea576131ea61457e565b6020908102919091010152600161320360806002614572565b61320d9190614390565b8716816003815181106132225761322261457e565b602002602001018181525050608087901c816004815181106132465761324661457e565b602002602001018181525050841561334d57835181613266600185614390565b815181106132765761327661457e565b60200260200101818152505060005b845181101561334b576132be8582815181106132a3576132a361457e565b6020026020010151600167080000000000001160c01b011190565b6133015760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f4d4553534147455f4441544160601b6044820152606401610ba4565b8481815181106133135761331361457e565b602002602001015182848361332891906142f0565b815181106133385761333861457e565b6020908102919091010152600101613285565b505b979650505050505050565b6000808260405160200161336c9190614441565b60408051601f198184030181529190528051602090910120549392505050565b6000908152600080516020614807833981519152602052604090206001015490565b610ae1813361392c565b6133c2828261288e565b610ac5576000828152600080516020614807833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b7f00000000000000000000000000000000000000000000000000000000000000008110156134975760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4645455f56414c554560501b6044820152606401610ba4565b662386f26fc10000811115610ae15760405162461bcd60e51b815260206004820152601260248201527108c8a8abeac8298aa8abea89e9ebe90928e960731b6044820152606401610ba4565b806000036134ef575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461353c576040519150601f19603f3d011682016040523d82523d6000602084013e613541565b606091505b50509050806124ae5760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401610ba4565b613592828261288e565b15610ac5576000828152600080516020614807833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610ae16040518060600160405280602881526020016147386028913982613990565b610ae16040518060600160405280602681526020016148ae6026913982613990565b610ae16040518060600160405280602b81526020016148d4602b9139826139df565b61366a613a12565b156136d8576136876000805160206147608339815191528361288e565b6136d35760405162461bcd60e51b815260206004820152601960248201527f524f4c45535f414c52454144595f494e495449414c495a4544000000000000006044820152606401610ba4565b6136e1565b6136e182613a33565b6136e9613b21565b1561375d576137066000805160206147808339815191528261288e565b610ac55760405162461bcd60e51b815260206004820152602260248201527f53454355524954595f524f4c45535f414c52454144595f494e495449414c495a604482015261115160f21b6064820152608401610ba4565b610ac581613b3b565b6000613770613b91565b600061377b84613bb4565b815260200190815260200160002054600014159050919050565b60008062455447196001600160a01b038416016137b357504761381e565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156137f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381b919061427a565b90505b6000613828613c01565b9050606461383682846142d9565b6138409190614689565b949350505050565b60006001613854613b91565b600061385f85613bb4565b8152602001908152602001600020546113049190614390565b6138836001826142f0565b61388b613b91565b600061389685613bb4565b81526020810191909152604001600020555050565b600080826040516020016138bf9190614441565b60408051601f1981840301815291905280516020909101209392505050565b6138e782613358565b156139225760405162461bcd60e51b815260206004820152600b60248201526a1053149150511657d4d15560aa1b6044820152606401610ba4565b610ac582826139df565b613936828261288e565b610ac55761394e816001600160a01b03166014613c24565b613959836020613c24565b60405160200161396a9291906146ab565b60408051601f198184030181529082905262461bcd60e51b8252610ba4916004016141c5565b600061399b83613358565b6001600160a01b0316146139225760405162461bcd60e51b815260206004820152600b60248201526a1053149150511657d4d15560aa1b6044820152606401610ba4565b6000826040516020016139f29190614441565b604051602081830303815290604052805190602001209050818155505050565b600080613a2c60008051602061476083398151915261338c565b1415905090565b613a4b600080516020614760833981519152826133b8565b613a716000805160206147c783398151915260008051602061488e833981519152613dc0565b613a9760008051602061488e833981519152600080516020614760833981519152613dc0565b613aaf60008051602061476083398151915280613dc0565b613ad560008051602061496883398151915260008051602061488e833981519152613dc0565b613afb6000805160206149b183398151915260008051602061488e833981519152613dc0565b610ae16000805160206147e7833981519152600080516020614760833981519152613dc0565b600080613a2c60008051602061478083398151915261338c565b613b5360008051602061478083398151915280613dc0565b613b7960008051602061486e833981519152600080516020614780833981519152613dc0565b610ae1600080516020614780833981519152826133b8565b6000610ce66040518060600160405280602781526020016147a0602791396138ab565b600080613bc46201518042614689565b604080516001600160a01b038616602082015290810182905290915060600160405160208183030381529060405280519060200120915050919050565b6000610ce66040518060600160405280602b81526020016148d4602b9139613358565b60606000613c338360026142d9565b613c3e9060026142f0565b67ffffffffffffffff811115613c5657613c566141f8565b6040519080825280601f01601f191660200182016040528015613c80576020820181803683370190505b509050600360fc1b81600081518110613c9b57613c9b61457e565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613cca57613cca61457e565b60200101906001600160f81b031916908160001a9053506000613cee8460026142d9565b613cf99060016142f0565b90505b6001811115613d71576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613d2d57613d2d61457e565b1a60f81b828281518110613d4357613d4361457e565b60200101906001600160f81b031916908160001a90535060049490941c93613d6a81614720565b9050613cfc565b508315610b3e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ba4565b6000613dcb8361338c565b60008481526000805160206148078339815191526020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6001600160a01b0381168114610ae157600080fd5b60008060408385031215613e4857600080fd5b823591506020830135613e5a81613e20565b809150509250929050565b600060208284031215613e7757600080fd5b8135610b3e81613e20565b600080600060608486031215613e9757600080fd5b8335613ea281613e20565b95602085013595506040909401359392505050565b60008060008060808587031215613ecd57600080fd5b8435613ed881613e20565b966020860135965060408601359560600135945092505050565b600060208284031215613f0457600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160048310613f4357634e487b7160e01b600052602160045260246000fd5b91905290565b60008060208385031215613f5c57600080fd5b823567ffffffffffffffff811115613f7357600080fd5b8301601f81018513613f8457600080fd5b803567ffffffffffffffff811115613f9b57600080fd5b856020828401011115613fad57600080fd5b6020919091019590945092505050565b600080600060608486031215613fd257600080fd5b8335613fdd81613e20565b9250602084013591506040840135613ff481613e20565b809150509250925092565b60008060006060848603121561401457600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261403d57600080fd5b50813567ffffffffffffffff81111561405557600080fd5b6020830191508360208260051b850101111561407057600080fd5b9250929050565b60008060008060008060a0878903121561409057600080fd5b863561409b81613e20565b95506020870135945060408701359350606087013567ffffffffffffffff8111156140c557600080fd5b6140d189828a0161402b565b979a9699509497949695608090950135949350505050565b60008060008060006080868803121561410157600080fd5b853561410c81613e20565b94506020860135935060408601359250606086013567ffffffffffffffff81111561413657600080fd5b6141428882890161402b565b969995985093965092949392505050565b6000806040838503121561416657600080fd5b823561417181613e20565b946020939093013593505050565b6000806040838503121561419257600080fd5b50508035926020909101359150565b60005b838110156141bc5781810151838201526020016141a4565b50506000910152565b60208152600082518060208401526141e48160408501602087016141a1565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600081518084526020840193506020830160005b82811015614240578151865260209586019590910190600101614222565b5093949350505050565b848152836020820152608060408201526000614269608083018561420e565b905082606083015295945050505050565b60006020828403121561428c57600080fd5b5051919050565b60208082526016908201527521a0a72727aa2fa822a92327a926afa7a72fa9a2a62360511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611304576113046142c3565b80820180821115611304576113046142c3565b6000808585111561431357600080fd5b8386111561432057600080fd5b5050820193919092039150565b848152606060208201819052810183905260006001600160fb1b0384111561435457600080fd5b8360051b80866080850137604083019390935250016080019392505050565b60006020828403121561438557600080fd5b8151610b3e81613e20565b81810381811115611304576113046142c3565b838152826020820152606060408201526000612872606083018461420e565b600080604083850312156143d557600080fd5b505080516020909101519092909150565b8481526080602082015260006143ff608083018661420e565b6040830194909452506060015292915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600082516144538184602087016141a1565b9190910192915050565b6000806040838503121561447057600080fd5b823561447b81613e20565b91506020830135613e5a81613e20565b6001815b60018411156144c6578085048111156144aa576144aa6142c3565b60018416156144b857908102905b60019390931c92800261448f565b935093915050565b6000826144dd57506001611304565b816144ea57506000611304565b8160018114614500576002811461450a57614526565b6001915050611304565b60ff84111561451b5761451b6142c3565b50506001821b611304565b5060208310610133831016604e8410600b8410161715614549575081810a611304565b614556600019848461448b565b806000190482111561456a5761456a6142c3565b029392505050565b6000610b3e83836144ce565b634e487b7160e01b600052603260045260246000fd5b828152604060208201526000613840604083018461420e565b600060033d11156145c65760046000803e5060005160e01c5b90565b601f8201601f1916810167ffffffffffffffff811182821017156145fd57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d10156146125790565b6040513d600319016004823e80513d602482011167ffffffffffffffff8211171561463c57505090565b808201805167ffffffffffffffff811115614658575050505090565b3d8401600319018282016020011115614672575050505090565b614681602082850101856145c9565b509392505050565b6000826146a657634e487b7160e01b600052601260045260246000fd5b500490565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516146e38160178501602088016141a1565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516147148160288401602088016141a1565b01602801949350505050565b60008161472f5761472f6142c3565b50600019019056fe535441524b4e45545f544f4b454e5f4252494447455f4d4553534147494e475f434f4e545241435403711c9d994faf6055172091cb841fd4831aa743e6f3315163b06a122c841846026bd110619d11cfdfc28e281df893bc24828e89177318e9dbd860cdaedeb6b357495448445241574c5f4c494d49545f494e5452414441595f51554f54415f534c4f545f54414700d2ead78c620e94b02d0a996e99298c59ddccfa1d8a0149080ac3a20de060680251e864ca2a080f55bce5da2452e8cfcafdbc951a3e7fff5023d558452ec22853e43b954ba190a7e49386f1f78b01dcd9f628db23f432fa029a7dfd6d98e8fb535441524b4e45545f544f4b454e5f4252494447455f4c325f544f4b454e5f434f4e5452414354008bce41827dd5484d80312a2e43bc42a896e3fcf75bf84c2b49339168dfa00a037693ba312785932d430dccf0f56ffedd0aa7c0f8b6da2cc4530c2717689b9603e615638e0b79444a70f8c695bf8f2a47033bf1cf95691ec3130f64939cee99535441524b4e45545f544f4b454e5f4252494447455f4d414e414745525f534c4f545f54414757495448445241574c5f4c494d49545f57495448445241575f4c494d49545f5043545f534c4f545f544147535441524b4e45545f544f4b454e5f4252494447455f4445504f5349544f525f41444452455353455301b64b1b3b690b43b9b514fb81377518f4039cd3e4f4914d8a6bdf01d679fb19c59c20aaa96597268f595db30ec21108a505370e3266ed3a6515637f16b8b689023edb77f7c8cc9e38e8afe78954f703aeeda7fffe014eeb6e56ea84e62f6da7535441524b4e45545f45524332305f544f4b454e5f4252494447455f544f4b454e5f414444524553530128d63adbf6b09002c26caf55c47e2f26635807e3ef1b027218aa74c8d61a3e537461726b576172655f537461726b6e65744574684272696467655f322e305f34a264697066735822122056331780566488e3f63c37e27fc79f70f3feb5f3bb1ee6f027352d15a2ac888264736f6c634300081b003303711c9d994faf6055172091cb841fd4831aa743e6f3315163b06a122c841846026bd110619d11cfdfc28e281df893bc24828e89177318e9dbd860cdaedeb6b353e43b954ba190a7e49386f1f78b01dcd9f628db23f432fa029a7dfd6d98e8fb03e615638e0b79444a70f8c695bf8f2a47033bf1cf95691ec3130f64939cee99", + "sourceMap": "192:956:14:-:0;;;442:13:0;459:1;442:18;441:33;;473:1;441:33;;;464:6;441:33;413:61;;;;192:956:14;;;;;;;;;-1:-1:-1;479:4:25;463:21;;628:4:29;299:31:24;;;;340:21;:19;:21::i;:::-;258:110;192:956:14;;2533:142:33;3290:10:30;2632:36:33;3290:10:30;;2632::33;:36::i;:::-;2564:111;2533:142::o;2681:1050::-;2782:28;:26;:28::i;:::-;2778:485;;;-1:-1:-1;;;;;4575:31:30;;4552:4;4575:31;;;:14;;:31;:14;:31;;;;;3037:144:33;;;;-1:-1:-1;;;3037:144:33;;216:2:40;3037:144:33;;;198:21:40;255:2;235:18;;;228:30;294:27;274:18;;;267:55;339:18;;3037:144:33;;;;;;;;;2778:485;;;3212:40;3232:19;3212;:40::i;:::-;3277:26;:24;:26::i;:::-;3273:452;;;-1:-1:-1;;;;;4575:31:30;;4552:4;4575:31;;;:14;;:31;:14;:31;;;;;3494:151:33;;;;-1:-1:-1;;;3494:151:33;;570:2:40;3494:151:33;;;552:21:40;609:2;589:18;;;582:30;648:34;628:18;;;621:62;-1:-1:-1;;;699:18:40;;;692:32;741:19;;3494:151:33;368:398:40;3494:151:33;2681:1050;;:::o;3273:452::-;3676:38;3694:19;3676:17;:38::i;2221:152::-;-1:-1:-1;;;;;;;;;;;2282:4:33;5996:14:30;;;-1:-1:-1;;;;;;;;;;;5996:14:30;;:24;;2282:4:33;;2305:44;:61;;2298:68;;2221:152;:::o;4023:559::-;4099:63;-1:-1:-1;;;;;;;;;;;4142:19:33;4099:24;:63::i;:::-;4172:57;253:64;-1:-1:-1;;;;;;;;;;;4172:27:33;:57::i;:::-;4239:61;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;4239:27:33;:61::i;:::-;4310:63;-1:-1:-1;;;;;;;;;;;667:66:33;4310:27;:63::i;:::-;4383:53;861:66;-1:-1:-1;;;;;;;;;;;4383:27:33;:53::i;:::-;4446:56;1473:66;-1:-1:-1;;;;;;;;;;;4446:27:33;:56::i;:::-;4512:63;1683:66;-1:-1:-1;;;;;;;;;;;4512:27:33;:63::i;2379:148::-;-1:-1:-1;;;;;;;;;;;2438:4:33;5996:14:30;;;-1:-1:-1;;;;;;;;;;;5996:14:30;;:24;;2438:4:33;;2461:42;5911:116:30;3737:280:33;3811:59;-1:-1:-1;;;;;;;;;;;1067:66:33;3811:27;:59::i;:::-;3880;1273:66;-1:-1:-1;;;;;;;;;;;3880:27:33;:59::i;:::-;3949:61;-1:-1:-1;;;;;;;;;;;3990:19:33;8830:227:30;4552:4;4575:14;;;-1:-1:-1;;;;;;;;;;;4575:14:30;;;;;;;;-1:-1:-1;;;;;4575:31:30;;;;;;;;;;;;8900:151;;8943:14;;;;-1:-1:-1;;;;;;;;;;;8943:14:30;;;;;;;;-1:-1:-1;;;;;8943:31:30;;;;;;;;;;:38;;-1:-1:-1;;8943:38:30;8977:4;8943:38;;;9000:40;3290:10;;8943:14;;9000:40;;8943:14;9000:40;8830:227;;:::o;8433:241::-;8508:25;5996:14;;;-1:-1:-1;;;;;;;;;;;5996:14:30;;;;;;:24;;;;8564:36;;;;8615:52;;5996:24;;8564:36;;5996:24;;:14;;8615:52;;8508:25;8615:52;8498:176;8433:241;;:::o;368:398:40:-;192:956:14;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052600436106103805760003560e01c80636ffed68b116101d1578063cb1cccce11610102578063deec9c5a116100a0578063eeb728661161006f578063eeb7286614610a31578063f3fef3a314610a53578063fa0f73ba14610a73578063fad8b32a14610a9357600080fd5b8063deec9c5a146109be578063e2bbb158146109de578063ed9ef16a146109f1578063ee0e680714610a1157600080fd5b8063d08fb6cb116100dc578063d08fb6cb1461093e578063d12fc1821461095e578063d2b51eea1461097e578063d9fa70911461099e57600080fd5b8063cb1cccce146108de578063cdd1f70d146108fe578063cf50fd1c1461091e57600080fd5b8063a2bdde3d1161016f578063af8bc15e11610149578063af8bc15e14610876578063b5cd0c3c1461088b578063be58b18e146108ab578063c1f5eb3a146108be57600080fd5b8063a2bdde3d14610823578063a6d1d6c614610843578063ad8b92b41461086357600080fd5b80637fc2ab3e116101ab5780637fc2ab3e146107a35780638101b64c146107c35780638e5224ff146107e35780639463629a1461080357600080fd5b80636ffed68b14610743578063757bd9ab146107635780637d22dbc71461078357600080fd5b806336568abe116102b65780635a5d1bb91161025457806369328dec1161022357806369328dec146106c35780636c04d9d5146106e35780636d70f7ae146107035780636fc97cbf1461072357600080fd5b80635a5d1bb91461064e5780635a72af891461066e5780636083e59a1461068e57806362a14376146106a357600080fd5b8063439fab9111610290578063439fab91146105d9578063496ae54c146105f95780634baf43da146106195780634d8b92a51461063957600080fd5b806336568abe146105795780633682a450146105995780633ea053eb146105b957600080fd5b806319534075116103235780632e1a7d4d116102fd5780632e1a7d4d146104d25780632f951985146104f257806330ccebb51461051257806333eeb1471461056557600080fd5b8063195340751461046f57806323205c5214610492578063284b920e146104b257600080fd5b80630e770f231161035f5780630e770f23146103fc5780630efe6a8b1461041c57806314af98b31461042f578063178963831461044f57600080fd5b8062f714ce146103855780630b3a2d21146103a75780630c6f8664146103c7575b600080fd5b34801561039157600080fd5b506103a56103a0366004613e35565b610ab3565b005b3480156103b357600080fd5b506103a56103c2366004613e65565b610ac9565b3480156103d357600080fd5b506103e76103e2366004613e65565b610ae4565b60405190151581526020015b60405180910390f35b34801561040857600080fd5b506103a5610417366004613e65565b610b45565b6103a561042a366004613e82565b610b5d565b34801561043b57600080fd5b506103a561044a366004613e65565b610c19565b34801561045b57600080fd5b506103a561046a366004613e65565b610cc1565b34801561047b57600080fd5b50610484610cd9565b6040519081526020016103f3565b34801561049e57600080fd5b506103a56104ad366004613eb7565b610ceb565b3480156104be57600080fd5b506103a56104cd366004613e65565b610de1565b3480156104de57600080fd5b506103a56104ed366004613ef2565b610ee8565b3480156104fe57600080fd5b506103a561050d366004613e65565b610efa565b34801561051e57600080fd5b5061055861052d366004613e65565b6001600160a01b03166000908152600080516020614948833981519152602052604090205460ff1690565b6040516103f39190613f21565b34801561057157600080fd5b5060006103e7565b34801561058557600080fd5b506103a5610594366004613e35565b610f3b565b3480156105a557600080fd5b506103a56105b4366004613e65565b610fcd565b3480156105c557600080fd5b506103a56105d4366004613e65565b610fe5565b3480156105e557600080fd5b506103a56105f4366004613f49565b611112565b34801561060557600080fd5b50610484610614366004613e65565b6112c3565b34801561062557600080fd5b50610484610634366004613e65565b61130a565b34801561064557600080fd5b50610484611349565b34801561065a57600080fd5b506103e7610669366004613e65565b611353565b34801561067a57600080fd5b506103a5610689366004613e65565b61136d565b34801561069a57600080fd5b50600019610484565b3480156106af57600080fd5b506103a56106be366004613e65565b611412565b3480156106cf57600080fd5b506103a56106de366004613fbd565b61142a565b3480156106ef57600080fd5b506103e76106fe366004613e65565b611517565b34801561070f57600080fd5b506103e761071e366004613e65565b611531565b34801561072f57600080fd5b506103a561073e366004613e65565b61154b565b34801561074f57600080fd5b506103a561075e366004613fff565b611563565b34801561076f57600080fd5b506103e761077e366004613e65565b6116b5565b34801561078f57600080fd5b506103a561079e366004613fff565b6116cf565b3480156107af57600080fd5b506103a56107be366004613ef2565b611829565b3480156107cf57600080fd5b506103a56107de366004613e65565b61194e565b3480156107ef57600080fd5b506103e76107fe366004613e65565b61198f565b34801561080f57600080fd5b506103a561081e366004613e65565b6119a9565b34801561082f57600080fd5b506103e761083e366004613e65565b6119c1565b34801561084f57600080fd5b506103a561085e366004613eb7565b6119db565b6103a5610871366004613e65565b611abc565b34801561088257600080fd5b50610484611af2565b34801561089757600080fd5b506103a56108a6366004614077565b611afc565b6103a56108b93660046140e9565b611c33565b3480156108ca57600080fd5b506103a56108d9366004613e65565b611d46565b3480156108ea57600080fd5b506103e76108f9366004613e65565b611e42565b34801561090a57600080fd5b506103a5610919366004613e65565b611e5c565b34801561092a57600080fd5b506103a5610939366004614077565b611e74565b34801561094a57600080fd5b506103e7610959366004613e65565b611f90565b34801561096a57600080fd5b506103a5610979366004613e65565b611faa565b34801561098a57600080fd5b506103a5610999366004614153565b6121cf565b3480156109aa57600080fd5b506103a56109b9366004613e65565b6122d8565b3480156109ca57600080fd5b506103a56109d9366004613e65565b6122f0565b6103a56109ec36600461417f565b612308565b3480156109fd57600080fd5b506103a5610a0c366004613e65565b6123bb565b348015610a1d57600080fd5b506103a5610a2c366004613e65565b6123d3565b348015610a3d57600080fd5b50610a46612414565b6040516103f391906141c5565b348015610a5f57600080fd5b506103a5610a6e366004614153565b612434565b348015610a7f57600080fd5b506103a5610a8e366004613e65565b61243f565b348015610a9f57600080fd5b506103a5610aae366004613e65565b612457565b610ac5610abe61246f565b838361142a565b5050565b610ae16000805160206149b183398151915282612492565b50565b6001600160a01b0381166000908152600080516020614948833981519152602052604081205460ff166001816003811115610b2157610b21613f0b565b1480610b3e57506002816003811115610b3c57610b3c613f0b565b145b9392505050565b610ae160008051602061486e83398151915282612492565b82610b6781610ae4565b610bad5760405162461bcd60e51b81526020600482015260126024820152711513d2d15397d393d517d4d154959250d15160721b60448201526064015b60405180910390fd5b6040805160008082526020820190925290610bc886866124b3565b90506000610be8878787866000805160206149288339815191528761256c565b9050610c078787878660008051602061492883398151915286886126f5565b610c1087611faa565b50505050505050565b610c22336116b5565b610c645760405162461bcd60e51b815260206004820152601360248201527213d3931657d4d150d55492551657d051d15395606a1b6044820152606401610ba4565b6001600160a01b03811660008181526000805160206149488339815191526020526040808220600401805460ff191660011790555133917fe2deca319add01142d26def2de47e64bf1fdc70e6f90c13a1862a48bdaaa7cfd91a350565b610ae160008051602061488e83398151915282612492565b6000610ce661063461246f565b905090565b610cf361280a565b6001600160a01b0316636170ff1b610d0961282d565b600080516020614928833981519152610d23888888612850565b856040518563ffffffff1660e01b8152600401610d43949392919061424a565b6020604051808303816000875af1158015610d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d86919061427a565b50610d9284843361287b565b604080518481526020810183905283916001600160a01b0387169133917f50485fb0face2cfd73784044ab4191986b4a6713f01854414e2331a6bb41837d91015b60405180910390a450505050565b610df96000805160206147608339815191523361288e565b610e3d5760405162461bcd60e51b8152602060048201526015602482015274474f5645524e414e43455f41444d494e5f4f4e4c5960581b6044820152606401610ba4565b6001600160a01b03811660008181527f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e266020818152604092839020805460ff191660011790557f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e2780546001600160a01b03191690559151928352917fcfb473e6c03f9a29ddaf990e736fa3de5188a0bd85d684f5b6e164ebfbfff5d291015b60405180910390a15050565b610ae1610ef361246f565b823361142a565b80336001600160a01b03821603610f235760405162461bcd60e51b8152600401610ba490614293565b610ac560008051602061488e833981519152836128c6565b60008051602061476083398151915282148015610f7657507f0000000000000000000000000000000000000000000000000000000000000000155b15610fc35760405162461bcd60e51b815260206004820181905260248201527f43414e4e4f545f52454e4f554e43455f474f5645524e414e43455f41444d494e6044820152606401610ba4565b610ac582826128e2565b610ae160008051602061496883398151915282612492565b33610fee61295c565b6001600160a01b0316146110335760405162461bcd60e51b815260206004820152600c60248201526b27a7262cafa6a0a720a3a2a960a11b6044820152606401610ba4565b6001600160a01b0381166000908152600080516020614948833981519152602052604081205460ff16600381111561106d5761106d613f0b565b036110aa5760405162461bcd60e51b815260206004820152600d60248201526c2aa725a727aba72faa27a5a2a760991b6044820152606401610ba4565b6001600160a01b03811660008181526000805160206149488339815191526020908152604091829020805460ff1916600317905590519182527f86d6e4556eae726303caf49a75add7d92ac713e46db458dab0622aa263fb48e691015b60405180910390a150565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036111835760405162461bcd60e51b81526020600482015260166024820152751112549150d517d0d0531317d11254d0531313d5d15160521b6044820152606401610ba4565b60006111908160206142d9565b9050600061119f8260206142f0565b9050808310156111e75760405162461bcd60e51b81526020600482015260136024820152721253925517d110551057d513d3d7d4d3505313606a1b6044820152606401610ba4565b60006111f582848688614303565b8101906112029190613e65565b90503660006112138582888a614303565b915091503660006112268887818c614303565b90925090506001600160a01b038516156112505761124585838361297f565b505050505050505050565b611258612ac1565b156112a75780156112a25760405162461bcd60e51b8152602060048201526014602482015273554e45585045435445445f494e49545f4441544160601b6044820152606401610ba4565b611245565b6112b18282612adc565b6112bb8282612bf4565b611245612c23565b6001600160a01b0381166000908152600080516020614948833981519152602052604081206004015460ff166112fb57600019611304565b61130482612c2e565b92915050565b6001600160a01b03811660009081526000805160206149488339815191526020526040812060030154801561133f5780610b3e565b6000199392505050565b6000610ce6612c4f565b60006113046000805160206147c78339815191528361288e565b61137633611f90565b6113b85760405162461bcd60e51b815260206004820152601360248201527227a7262cafa9a2a1aaa924aa2cafa0a226a4a760691b6044820152606401610ba4565b6001600160a01b03811660008181526000805160206149488339815191526020526040808220600401805460ff191690555133917f109dee66091b7a145f557f52c55d7beccb6a29011fc705557e2975749474076b91a350565b610ae160008051602061478083398151915282612492565b6001600160a01b0381166114745760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610ba4565b61147f838383612c63565b6001600160a01b0383166000908152600080516020614948833981519152602052604090206004015460ff16156114ba576114ba8383612f80565b6114c583838361287b565b826001600160a01b0316816001600160a01b03167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63988460405161150a91815260200190565b60405180910390a3505050565b60006113046000805160206147e78339815191528361288e565b60006113046000805160206149688339815191528361288e565b610ae16000805160206147e783398151915282612492565b803361156d612ff0565b600083815260209190915260409020546001600160a01b0316146115c45760405162461bcd60e51b815260206004820152600e60248201526d27a7262cafa222a827a9a4aa27a960911b6044820152606401610ba4565b6115cc61280a565b6001600160a01b0316637a98660b6115e261282d565b7f02d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee561160d8888613013565b866040518563ffffffff1660e01b815260040161162d949392919061424a565b6020604051808303816000875af115801561164c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611670919061427a565b506040805185815260208101849052849133917fea57f52faafe318751f75acb6756cff3f66afc10201ef8f2d504e788985db3f591015b60405180910390a350505050565b600061130460008051602061486e8339815191528361288e565b80336116d9612ff0565b600083815260209190915260409020546001600160a01b0316146117305760405162461bcd60e51b815260206004820152600e60248201526d27a7262cafa222a827a9a4aa27a960911b6044820152606401610ba4565b61173861280a565b6001600160a01b0316636170ff1b61174e61282d565b7f02d757788a8d8d6f21d1cd40bce38a8222d70654214e96ff95d8086e684fbee56117798888613013565b866040518563ffffffff1660e01b8152600401611799949392919061424a565b6020604051808303816000875af11580156117b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117dc919061427a565b506117ef6117e861246f565b853361287b565b6040805185815260208101849052849133917fb0b548d5e12b6a60adac4d6dd7610f55134cea4fd145535edc303a48063e0cb491016116a7565b61183233611353565b6118725760405162461bcd60e51b815260206004820152601160248201527027a7262cafa0a8282fa3a7ab22a92727a960791b6044820152606401610ba4565b61187a612ac1565b6118c65760405162461bcd60e51b815260206004820152601860248201527f434f4e54524143545f4e4f545f494e495449414c495a454400000000000000006044820152606401610ba4565b6118cf816130bb565b6119155760405162461bcd60e51b81526020600482015260176024820152764c325f414444524553535f4f55545f4f465f52414e474560481b6044820152606401610ba4565b61191e816130de565b6040518181527f90fc3f39f8e4669d1bf5f9038707949f8af42a973f62988143be0fa7c3997f1890602001611107565b80336001600160a01b038216036119775760405162461bcd60e51b8152600401610ba490614293565b610ac5600080516020614780833981519152836128c6565b600061130460008051602061488e8339815191528361288e565b610ae160008051602061476083398151915282612492565b60006113046000805160206149b18339815191528361288e565b6119e361280a565b6001600160a01b0316637a98660b6119f961282d565b600080516020614928833981519152611a13888888612850565b856040518563ffffffff1660e01b8152600401611a33949392919061424a565b6020604051808303816000875af1158015611a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a76919061427a565b50604080518481526020810183905283916001600160a01b0387169133917f8f3da3ce93acd45e015b069c8f032d37be93dc9efcaaeda368aa9ca74f64c30a9101610dd3565b60405162461bcd60e51b815260206004820152600b60248201526a155394d5541413d495115160aa1b6044820152606401610ba4565b6000610ce6613100565b611b0461280a565b6001600160a01b0316636170ff1b611b1a61282d565b60008051602061484e833981519152611b6a8a8a8a60018b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061311392505050565b856040518563ffffffff1660e01b8152600401611b8a949392919061424a565b6020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd919061427a565b50611bd986863361287b565b83866001600160a01b0316336001600160a01b03167fa465a02eedf06ceffd1d99159ad98c5d8fa7f17b870eb22e0bfcec06398a8f7388878787604051611c23949392919061432d565b60405180910390a4505050505050565b84611c3d81610ae4565b611c7e5760405162461bcd60e51b81526020600482015260126024820152711513d2d15397d393d517d4d154959250d15160721b6044820152606401610ba4565b6000611c8a87876124b3565b90506000611cdf88888888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525060008051602061484e833981519152925089915061256c9050565b9050611d3388888888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525060008051602061484e83398151915292508891508990506126f5565b611d3c88611faa565b5050505050505050565b611d5e6000805160206147608339815191523361288e565b611da25760405162461bcd60e51b8152602060048201526015602482015274474f5645524e414e43455f41444d494e5f4f4e4c5960581b6044820152606401610ba4565b6001600160a01b03811660008181527f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e266020818152604092839020805460ff191690557f45f38e273862f8834bd2fe7a449988f63de55a7a5b685dea46ccedeb69cf0e2780546001600160a01b03191690559151928352917fd75f94825e770b8b512be8e74759e252ad00e102e38f50cce2f7c6f868a295999101610edc565b60006113046000805160206147608339815191528361288e565b610ae16000805160206147c783398151915282612492565b611e7c61280a565b6001600160a01b0316637a98660b611e9261282d565b60008051602061484e833981519152611ee28a8a8a60018b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061311392505050565b856040518563ffffffff1660e01b8152600401611f02949392919061424a565b6020604051808303816000875af1158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f45919061427a565b5083866001600160a01b0316336001600160a01b03167f889e470f207032611b2f68dbd2124e3139794f19a6b536c83892fd505760386088878787604051611c23949392919061432d565b60006113046000805160206147808339815191528361288e565b6001600160a01b03811660009081526000805160206149488339815191526020526040902054819060019060ff166003811115611fe957611fe9613f0b565b14611ff2575050565b6001600160a01b038216600090815260008051602061494883398151915260205260409020600181015461202461280a565b6001600160a01b03166377c7d7a9826040518263ffffffff1660e01b815260040161205191815260200190565b602060405180830381865afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612092919061427a565b6000036120a957815460ff191660021782556121c9565b81600201544211156121c9576001600160a01b038416600090815260008051602061494883398151915260205260408120805460ff19908116825560018201839055600282018390556003820183905560049091018054909116905561210d61295c565b6001600160a01b0316635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216e9190614373565b604051630caca05160e31b81526001600160a01b03878116600483015291925090821690636565028890602401600060405180830381600087803b1580156121b557600080fd5b505af1158015611245573d6000803e3d6000fd5b50505050565b6121d833611353565b6122185760405162461bcd60e51b815260206004820152601160248201527027a7262cafa0a8282fa3a7ab22a92727a960791b6044820152606401610ba4565b806000036122685760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f4d41585f544f54414c5f42414c414e4345000000000000006044820152606401610ba4565b816001600160a01b03167fb895637c7d86c9b7b5b747e72195206a3fc21d8df0e019edd2312454ffa733b1826040516122a391815260200190565b60405180910390a26001600160a01b039190911660009081526000805160206149488339815191526020526040902060030155565b610ae160008051602061486e833981519152826128c6565b610ae16000805160206147c7833981519152826128c6565b604080516000808252602082019092529061232161246f565b9050600061232f82866124b3565b9050600061234f838787876000805160206149288339815191528761256c565b905061236e8387878760008051602061492883398151915286886126f5565b6040805187815260208101839052908101839052859033907f5b5dbc6c64043a15d3fe6943a6e443a826b78755edc257b2ec890c022225dbcf9060600160405180910390a3505050505050565b610ae16000805160206147e7833981519152826128c6565b80336001600160a01b038216036123fc5760405162461bcd60e51b8152600401610ba490614293565b610ac5600080516020614760833981519152836128c6565b60606040518060600160405280602181526020016149d160219139905090565b610ac582823361142a565b610ae16000805160206149b1833981519152826128c6565b610ae1600080516020614968833981519152826128c6565b6000610ce660405180606001604052806029815260200161498860299139613358565b61249b8261338c565b6124a4816133ae565b6124ae83836133b8565b505050565b6000813410156124fa5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b6044820152606401610ba4565b60006125068334614390565b90506125118161342e565b61251d6245544861130a565b6125278247614390565b1115610b3e5760405162461bcd60e51b815260206004820152601460248201527313505617d09053105390d157d15610d15151115160621b6044820152606401610ba4565b600061257661282d565b6000036125b95760405162461bcd60e51b8152602060048201526011602482015270130c97d094925111d157d393d517d4d155607a1b6044820152606401610ba4565b600086116125f85760405162461bcd60e51b815260206004820152600c60248201526b16915493d7d1115413d4d25560a21b6044820152606401610ba4565b612601856130bb565b6126475760405162461bcd60e51b81526020600482015260176024820152764c325f414444524553535f4f55545f4f465f52414e474560481b6044820152606401610ba4565b60008051602061484e8339815191528314600061266261280a565b6001600160a01b0316633e3aa6c58561267961282d565b886126878e8e8e8a8f613113565b6040518563ffffffff1660e01b81526004016126a5939291906143a3565b604080518083038185885af11580156126c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126e791906143c2565b9a9950505050505050505050565b600080516020614928833981519152830361275f57604080518781526020810184905290810182905285906001600160a01b0389169033907f5f971bd00bf3ffbca8a6d72cdd4fd92cfd4f62636161921d1e5a64f0b64ccb6d9060600160405180910390a4610c10565b60008051602061484e83398151915283146127af5760405162461bcd60e51b815260206004820152601060248201526f2aa725a727aba72fa9a2a622a1aa27a960811b6044820152606401610ba4565b84876001600160a01b0316336001600160a01b03167f2203a49c69f1a46c1164f5e4a30643dd77b7c59c0ff9bc433256048365c247f1898887876040516127f994939291906143e6565b60405180910390a450505050505050565b6000610ce660405180606001604052806028815260200161473860289139613358565b6000610ce660405180606001604052806027815260200161482760279139613358565b6040805160008082526020820190925260609150612872858585600085613113565b95945050505050565b6124ae6001600160a01b038216836134e3565b6000918252600080516020614807833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6128cf8261338c565b6128d8816133ae565b6124ae8383613588565b6001600160a01b03811633146129525760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610ba4565b610ac58282613588565b6000610ce66040518060600160405280602681526020016148ae60269139613358565b6001600160a01b0383163b6129cb5760405162461bcd60e51b8152602060048201526012602482015271115250d7d393d517d057d0d3d395149050d560721b6044820152606401610ba4565b600080846001600160a01b031663439fab9160e01b85856040516024016129f3929190614412565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612a319190614441565b600060405180830381855af49150503d8060008114612a6c576040519150601f19603f3d011682016040523d82523d6000602084013e612a71565b606091505b5091509150818190612a965760405162461bcd60e51b8152600401610ba491906141c5565b508051819015612ab95760405162461bcd60e51b8152600401610ba491906141c5565b505050505050565b600080612acc61280a565b6001600160a01b03161415905090565b60408114612b205760405162461bcd60e51b8152602060048201526011602482015270494c4c4547414c5f444154415f53495a4560781b6044820152606401610ba4565b600080612b2f8385018561445d565b91509150612b46816001600160a01b03163b151590565b612b9d5760405162461bcd60e51b815260206004820152602260248201527f494e56414c49445f4d4553534147494e475f434f4e54524143545f4144445245604482015261535360f01b6064820152608401610ba4565b6001600160a01b0382163b6121c95760405162461bcd60e51b815260206004820181905260248201527f494e56414c49445f4d414e414745525f434f4e54524143545f414444524553536044820152606401610ba4565b600080612c038385018561445d565b91509150612c10816135fc565b612c198261361e565b6121c96005613640565b33610ae18180613662565b6000612c3982613766565b612c465761130482613795565b61130482613848565b6000610ce664012a05f200620186a06142d9565b612c6b61282d565b600003612cae5760405162461bcd60e51b8152602060048201526011602482015270130c97d094925111d157d393d517d4d155607a1b6044820152606401610ba4565b6001600160a01b03811660006001612cc860806002614572565b612cd29190614390565b60408051600580825260c082019092529186169250608086901c916000916020820160a080368337019050509050600081600081518110612d1557612d1561457e565b6020026020010181815250508381600181518110612d3557612d3561457e565b602002602001018181525050866001600160a01b031681600281518110612d5e57612d5e61457e565b6020026020010181815250508281600381518110612d7e57612d7e61457e565b6020026020010181815250508181600481518110612d9e57612d9e61457e565b602002602001018181525050612db261280a565b6001600160a01b0316632c9dd5c0612dc861282d565b836040518363ffffffff1660e01b8152600401612de6929190614594565b6020604051808303816000875af1925050508015612e21575060408051601f3d908101601f19168201909252612e1e9181019061427a565b60015b611d3c57612e2d6145ad565b806308c379a003612f745750612e41614604565b80612e4c5750612f76565b60408051600480825260a082019092529060208201608080368337019050509150600082600081518110612e8257612e8261457e565b6020026020010181815250508482600181518110612ea257612ea261457e565b6020026020010181815250508382600281518110612ec257612ec261457e565b6020026020010181815250508282600381518110612ee257612ee261457e565b602002602001018181525050612ef661280a565b6001600160a01b0316632c9dd5c0612f0c61282d565b846040518363ffffffff1660e01b8152600401612f2a929190614594565b6020604051808303816000875af1158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d919061427a565b5050610c10565b505b3d6000803e3d6000fd5b6000612f8b83612c2e565b905081811015612fdd5760405162461bcd60e51b815260206004820152601d60248201527f455843454544535f474c4f42414c5f57495448445241575f4c494d49540000006044820152606401610ba4565b6124ae83612feb8484614390565b613878565b6000610ce66040518060600160405280602981526020016148ff602991396138ab565b6040805160038082526080820190925260609160009190602082018480368337019050509050828160008151811061304d5761304d61457e565b6020908102919091010152600161306660806002614572565b6130709190614390565b8416816001815181106130855761308561457e565b602002602001018181525050608084901c816002815181106130a9576130a961457e565b60209081029190910101529392505050565b60008115801590611304575061130482600167080000000000001160c01b011190565b610ae160405180606001604052806027815260200161482760279139826138de565b6000610ce664012a05f200614e206142d9565b606060008361312357600561312f565b61312f600160056142f0565b9050600083518261314091906142f0565b67ffffffffffffffff811115613158576131586141f8565b604051908082528060200260200182016040528015613181578160200160208202803683370190505b509050876001600160a01b0316816000815181106131a1576131a161457e565b602002602001018181525050336001600160a01b0316816001815181106131ca576131ca61457e565b60200260200101818152505085816002815181106131ea576131ea61457e565b6020908102919091010152600161320360806002614572565b61320d9190614390565b8716816003815181106132225761322261457e565b602002602001018181525050608087901c816004815181106132465761324661457e565b602002602001018181525050841561334d57835181613266600185614390565b815181106132765761327661457e565b60200260200101818152505060005b845181101561334b576132be8582815181106132a3576132a361457e565b6020026020010151600167080000000000001160c01b011190565b6133015760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f4d4553534147455f4441544160601b6044820152606401610ba4565b8481815181106133135761331361457e565b602002602001015182848361332891906142f0565b815181106133385761333861457e565b6020908102919091010152600101613285565b505b979650505050505050565b6000808260405160200161336c9190614441565b60408051601f198184030181529190528051602090910120549392505050565b6000908152600080516020614807833981519152602052604090206001015490565b610ae1813361392c565b6133c2828261288e565b610ac5576000828152600080516020614807833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b7f00000000000000000000000000000000000000000000000000000000000000008110156134975760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4645455f56414c554560501b6044820152606401610ba4565b662386f26fc10000811115610ae15760405162461bcd60e51b815260206004820152601260248201527108c8a8abeac8298aa8abea89e9ebe90928e960731b6044820152606401610ba4565b806000036134ef575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461353c576040519150601f19603f3d011682016040523d82523d6000602084013e613541565b606091505b50509050806124ae5760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401610ba4565b613592828261288e565b15610ac5576000828152600080516020614807833981519152602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610ae16040518060600160405280602881526020016147386028913982613990565b610ae16040518060600160405280602681526020016148ae6026913982613990565b610ae16040518060600160405280602b81526020016148d4602b9139826139df565b61366a613a12565b156136d8576136876000805160206147608339815191528361288e565b6136d35760405162461bcd60e51b815260206004820152601960248201527f524f4c45535f414c52454144595f494e495449414c495a4544000000000000006044820152606401610ba4565b6136e1565b6136e182613a33565b6136e9613b21565b1561375d576137066000805160206147808339815191528261288e565b610ac55760405162461bcd60e51b815260206004820152602260248201527f53454355524954595f524f4c45535f414c52454144595f494e495449414c495a604482015261115160f21b6064820152608401610ba4565b610ac581613b3b565b6000613770613b91565b600061377b84613bb4565b815260200190815260200160002054600014159050919050565b60008062455447196001600160a01b038416016137b357504761381e565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156137f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381b919061427a565b90505b6000613828613c01565b9050606461383682846142d9565b6138409190614689565b949350505050565b60006001613854613b91565b600061385f85613bb4565b8152602001908152602001600020546113049190614390565b6138836001826142f0565b61388b613b91565b600061389685613bb4565b81526020810191909152604001600020555050565b600080826040516020016138bf9190614441565b60408051601f1981840301815291905280516020909101209392505050565b6138e782613358565b156139225760405162461bcd60e51b815260206004820152600b60248201526a1053149150511657d4d15560aa1b6044820152606401610ba4565b610ac582826139df565b613936828261288e565b610ac55761394e816001600160a01b03166014613c24565b613959836020613c24565b60405160200161396a9291906146ab565b60408051601f198184030181529082905262461bcd60e51b8252610ba4916004016141c5565b600061399b83613358565b6001600160a01b0316146139225760405162461bcd60e51b815260206004820152600b60248201526a1053149150511657d4d15560aa1b6044820152606401610ba4565b6000826040516020016139f29190614441565b604051602081830303815290604052805190602001209050818155505050565b600080613a2c60008051602061476083398151915261338c565b1415905090565b613a4b600080516020614760833981519152826133b8565b613a716000805160206147c783398151915260008051602061488e833981519152613dc0565b613a9760008051602061488e833981519152600080516020614760833981519152613dc0565b613aaf60008051602061476083398151915280613dc0565b613ad560008051602061496883398151915260008051602061488e833981519152613dc0565b613afb6000805160206149b183398151915260008051602061488e833981519152613dc0565b610ae16000805160206147e7833981519152600080516020614760833981519152613dc0565b600080613a2c60008051602061478083398151915261338c565b613b5360008051602061478083398151915280613dc0565b613b7960008051602061486e833981519152600080516020614780833981519152613dc0565b610ae1600080516020614780833981519152826133b8565b6000610ce66040518060600160405280602781526020016147a0602791396138ab565b600080613bc46201518042614689565b604080516001600160a01b038616602082015290810182905290915060600160405160208183030381529060405280519060200120915050919050565b6000610ce66040518060600160405280602b81526020016148d4602b9139613358565b60606000613c338360026142d9565b613c3e9060026142f0565b67ffffffffffffffff811115613c5657613c566141f8565b6040519080825280601f01601f191660200182016040528015613c80576020820181803683370190505b509050600360fc1b81600081518110613c9b57613c9b61457e565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613cca57613cca61457e565b60200101906001600160f81b031916908160001a9053506000613cee8460026142d9565b613cf99060016142f0565b90505b6001811115613d71576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613d2d57613d2d61457e565b1a60f81b828281518110613d4357613d4361457e565b60200101906001600160f81b031916908160001a90535060049490941c93613d6a81614720565b9050613cfc565b508315610b3e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ba4565b6000613dcb8361338c565b60008481526000805160206148078339815191526020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6001600160a01b0381168114610ae157600080fd5b60008060408385031215613e4857600080fd5b823591506020830135613e5a81613e20565b809150509250929050565b600060208284031215613e7757600080fd5b8135610b3e81613e20565b600080600060608486031215613e9757600080fd5b8335613ea281613e20565b95602085013595506040909401359392505050565b60008060008060808587031215613ecd57600080fd5b8435613ed881613e20565b966020860135965060408601359560600135945092505050565b600060208284031215613f0457600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160048310613f4357634e487b7160e01b600052602160045260246000fd5b91905290565b60008060208385031215613f5c57600080fd5b823567ffffffffffffffff811115613f7357600080fd5b8301601f81018513613f8457600080fd5b803567ffffffffffffffff811115613f9b57600080fd5b856020828401011115613fad57600080fd5b6020919091019590945092505050565b600080600060608486031215613fd257600080fd5b8335613fdd81613e20565b9250602084013591506040840135613ff481613e20565b809150509250925092565b60008060006060848603121561401457600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261403d57600080fd5b50813567ffffffffffffffff81111561405557600080fd5b6020830191508360208260051b850101111561407057600080fd5b9250929050565b60008060008060008060a0878903121561409057600080fd5b863561409b81613e20565b95506020870135945060408701359350606087013567ffffffffffffffff8111156140c557600080fd5b6140d189828a0161402b565b979a9699509497949695608090950135949350505050565b60008060008060006080868803121561410157600080fd5b853561410c81613e20565b94506020860135935060408601359250606086013567ffffffffffffffff81111561413657600080fd5b6141428882890161402b565b969995985093965092949392505050565b6000806040838503121561416657600080fd5b823561417181613e20565b946020939093013593505050565b6000806040838503121561419257600080fd5b50508035926020909101359150565b60005b838110156141bc5781810151838201526020016141a4565b50506000910152565b60208152600082518060208401526141e48160408501602087016141a1565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600081518084526020840193506020830160005b82811015614240578151865260209586019590910190600101614222565b5093949350505050565b848152836020820152608060408201526000614269608083018561420e565b905082606083015295945050505050565b60006020828403121561428c57600080fd5b5051919050565b60208082526016908201527521a0a72727aa2fa822a92327a926afa7a72fa9a2a62360511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611304576113046142c3565b80820180821115611304576113046142c3565b6000808585111561431357600080fd5b8386111561432057600080fd5b5050820193919092039150565b848152606060208201819052810183905260006001600160fb1b0384111561435457600080fd5b8360051b80866080850137604083019390935250016080019392505050565b60006020828403121561438557600080fd5b8151610b3e81613e20565b81810381811115611304576113046142c3565b838152826020820152606060408201526000612872606083018461420e565b600080604083850312156143d557600080fd5b505080516020909101519092909150565b8481526080602082015260006143ff608083018661420e565b6040830194909452506060015292915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600082516144538184602087016141a1565b9190910192915050565b6000806040838503121561447057600080fd5b823561447b81613e20565b91506020830135613e5a81613e20565b6001815b60018411156144c6578085048111156144aa576144aa6142c3565b60018416156144b857908102905b60019390931c92800261448f565b935093915050565b6000826144dd57506001611304565b816144ea57506000611304565b8160018114614500576002811461450a57614526565b6001915050611304565b60ff84111561451b5761451b6142c3565b50506001821b611304565b5060208310610133831016604e8410600b8410161715614549575081810a611304565b614556600019848461448b565b806000190482111561456a5761456a6142c3565b029392505050565b6000610b3e83836144ce565b634e487b7160e01b600052603260045260246000fd5b828152604060208201526000613840604083018461420e565b600060033d11156145c65760046000803e5060005160e01c5b90565b601f8201601f1916810167ffffffffffffffff811182821017156145fd57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d10156146125790565b6040513d600319016004823e80513d602482011167ffffffffffffffff8211171561463c57505090565b808201805167ffffffffffffffff811115614658575050505090565b3d8401600319018282016020011115614672575050505090565b614681602082850101856145c9565b509392505050565b6000826146a657634e487b7160e01b600052601260045260246000fd5b500490565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516146e38160178501602088016141a1565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516147148160288401602088016141a1565b01602801949350505050565b60008161472f5761472f6142c3565b50600019019056fe535441524b4e45545f544f4b454e5f4252494447455f4d4553534147494e475f434f4e545241435403711c9d994faf6055172091cb841fd4831aa743e6f3315163b06a122c841846026bd110619d11cfdfc28e281df893bc24828e89177318e9dbd860cdaedeb6b357495448445241574c5f4c494d49545f494e5452414441595f51554f54415f534c4f545f54414700d2ead78c620e94b02d0a996e99298c59ddccfa1d8a0149080ac3a20de060680251e864ca2a080f55bce5da2452e8cfcafdbc951a3e7fff5023d558452ec22853e43b954ba190a7e49386f1f78b01dcd9f628db23f432fa029a7dfd6d98e8fb535441524b4e45545f544f4b454e5f4252494447455f4c325f544f4b454e5f434f4e5452414354008bce41827dd5484d80312a2e43bc42a896e3fcf75bf84c2b49339168dfa00a037693ba312785932d430dccf0f56ffedd0aa7c0f8b6da2cc4530c2717689b9603e615638e0b79444a70f8c695bf8f2a47033bf1cf95691ec3130f64939cee99535441524b4e45545f544f4b454e5f4252494447455f4d414e414745525f534c4f545f54414757495448445241574c5f4c494d49545f57495448445241575f4c494d49545f5043545f534c4f545f544147535441524b4e45545f544f4b454e5f4252494447455f4445504f5349544f525f41444452455353455301b64b1b3b690b43b9b514fb81377518f4039cd3e4f4914d8a6bdf01d679fb19c59c20aaa96597268f595db30ec21108a505370e3266ed3a6515637f16b8b689023edb77f7c8cc9e38e8afe78954f703aeeda7fffe014eeb6e56ea84e62f6da7535441524b4e45545f45524332305f544f4b454e5f4252494447455f544f4b454e5f414444524553530128d63adbf6b09002c26caf55c47e2f26635807e3ef1b027218aa74c8d61a3e537461726b576172655f537461726b6e65744574684272696467655f322e305f34a264697066735822122056331780566488e3f63c37e27fc79f70f3feb5f3bb1ee6f027352d15a2ac888264736f6c634300081b0033", + "sourceMap": "192:956:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2715:122:6;;;;;;;;;;-1:-1:-1;2715:122:6;;;;;:::i;:::-;;:::i;:::-;;3283:116:24;;;;;;;;;;-1:-1:-1;3283:116:24;;;;;:::i;:::-;;:::i;7546:220:16:-;;;;;;;;;;-1:-1:-1;7546:220:16;;;;;:::i;:::-;;:::i;:::-;;;939:14:40;;932:22;914:41;;902:2;887:18;7546:220:16;;;;;;;;3155:122:24;;;;;;;;;;-1:-1:-1;3155:122:24;;;;;:::i;:::-;;:::i;10855:794:16:-;;;;;;:::i;:::-;;:::i;12613:198::-;;;;;;;;;;-1:-1:-1;12613:198:16;;;;;:::i;:::-;;:::i;2651:121:24:-;;;;;;;;;;-1:-1:-1;2651:121:24;;;;;:::i;:::-;;:::i;2592:117:6:-;;;;;;;;;;;;;:::i;:::-;;;1604:25:40;;;1592:2;1577:18;2592:117:6;1458:177:40;21500:490:16;;;;;;;;;;-1:-1:-1;21500:490:16;;;;;:::i;:::-;;:::i;1353:318:23:-;;;;;;;;;;-1:-1:-1;1353:318:23;;;;;:::i;:::-;;:::i;2843:104:6:-;;;;;;;;;;-1:-1:-1;2843:104:6;;;;;:::i;:::-;;:::i;3680:137:24:-;;;;;;;;;;-1:-1:-1;3680:137:24;;;;;:::i;:::-;;:::i;7412:128:16:-;;;;;;;;;;-1:-1:-1;7412:128:16;;;;;:::i;:::-;-1:-1:-1;;;;;7499:22:16;7469:11;7499:22;;;-1:-1:-1;;;;;;;;;;;7499:22:16;;;;;:34;;;;7412:128;;;;;;;;:::i;757:86:29:-;;;;;;;;;;-1:-1:-1;808:4:29;757:86;;4632:247:24;;;;;;;;;;-1:-1:-1;4632:247:24;;;;;:::i;:::-;;:::i;2910:111::-;;;;;;;;;;-1:-1:-1;2910:111:24;;;;;:::i;:::-;;:::i;8853:272:16:-;;;;;;;;;;-1:-1:-1;8853:272:16;;;;;:::i;:::-;;:::i;1465:1033:29:-;;;;;;;;;;-1:-1:-1;1465:1033:29;;;;;:::i;:::-;;:::i;8031:274:16:-;;;;;;;;;;-1:-1:-1;8031:274:16;;;;;:::i;:::-;;:::i;13793:229::-;;;;;;;;;;-1:-1:-1;13793:229:16;;;;;:::i;:::-;;:::i;4993:120::-;;;;;;;;;;;;;:::i;1359:135:24:-;;;;;;;;;;-1:-1:-1;1359:135:24;;;;;:::i;:::-;;:::i;12877:201:16:-;;;;;;;;;;-1:-1:-1;12877:201:16;;;;;:::i;:::-;;:::i;14161:95::-;;;;;;;;;;-1:-1:-1;;;14161:95:16;;3027:122:24;;;;;;;;;;-1:-1:-1;3027:122:24;;;;;:::i;:::-;;:::i;18032:793:16:-;;;;;;;;;;-1:-1:-1;18032:793:16;;;;;:::i;:::-;;:::i;2356:143:24:-;;;;;;;;;;-1:-1:-1;2356:143:24;;;;;:::i;:::-;;:::i;1793:128::-;;;;;;;;;;-1:-1:-1;1793:128:24;;;;;:::i;:::-;;:::i;3405:126::-;;;;;;;;;;-1:-1:-1;3405:126:24;;;;;:::i;:::-;;:::i;4658:450:6:-;;;;;;;;;;-1:-1:-1;4658:450:6;;;;;:::i;:::-;;:::i;2072:139:24:-;;;;;;;;;;-1:-1:-1;2072:139:24;;;;;:::i;:::-;;:::i;5271:492:6:-;;;;;;;;;;-1:-1:-1;5271:492:6;;;;;:::i;:::-;;:::i;12240:309:16:-;;;;;;;;;;-1:-1:-1;12240:309:16;;;;;:::i;:::-;;:::i;4087:138:24:-;;;;;;;;;;-1:-1:-1;4087:138:24;;;;;:::i;:::-;;:::i;1500:::-;;;;;;;;;;-1:-1:-1;1500:138:24;;;;;:::i;:::-;;:::i;2778:126::-;;;;;;;;;;-1:-1:-1;2778:126:24;;;;;:::i;:::-;;:::i;2217:133::-;;;;;;;;;;-1:-1:-1;2217:133:24;;;;;:::i;:::-;;:::i;19535:458:16:-;;;;;;;;;;-1:-1:-1;19535:458:16;;;;;:::i;:::-;;:::i;1505:126:6:-;;;;;;:::i;:::-;;:::i;4873:114:16:-;;;;;;;;;;;;;:::i;20804:690::-;;;;;;;;;;-1:-1:-1;20804:690:16;;;;;:::i;:::-;;:::i;10053:796::-;;;;;;:::i;:::-;;:::i;1779:315:23:-;;;;;;;;;;-1:-1:-1;1779:315:23;;;;;:::i;:::-;;:::i;1644:143:24:-;;;;;;;;;;-1:-1:-1;1644:143:24;;;;;:::i;:::-;;:::i;2527:118::-;;;;;;;;;;-1:-1:-1;2527:118:24;;;;;:::i;:::-;;:::i;20058:740:16:-;;;;;;;;;;-1:-1:-1;20058:740:16;;;;;:::i;:::-;;:::i;1927:139:24:-;;;;;;;;;;-1:-1:-1;1927:139:24;;;;;:::i;:::-;;:::i;9458:589:16:-;;;;;;;;;;-1:-1:-1;9458:589:16;;;;;:::i;:::-;;:::i;13376:295::-;;;;;;;;;;-1:-1:-1;13376:295:16;;;;;:::i;:::-;;:::i;4231:121:24:-;;;;;;;;;;-1:-1:-1;4231:121:24;;;;;:::i;:::-;;:::i;3557:117::-;;;;;;;;;;-1:-1:-1;3557:117:24;;;;;:::i;:::-;;:::i;1803:783:6:-;;;;;;:::i;:::-;;:::i;4479:125:24:-;;;;;;;;;;-1:-1:-1;4479:125:24;;;;;:::i;:::-;;:::i;3823:142::-;;;;;;;;;;-1:-1:-1;3823:142:24;;;;;:::i;:::-;;:::i;275:126:14:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18831:110:16:-;;;;;;;;;;-1:-1:-1;18831:110:16;;;;;:::i;:::-;;:::i;4358:115:24:-;;;;;;;;;;-1:-1:-1;4358:115:24;;;;;:::i;:::-;;:::i;3971:110::-;;;;;;;;;;-1:-1:-1;3971:110:24;;;;;:::i;:::-;;:::i;2715:122:6:-;2787:43;2796:14;:12;:14::i;:::-;2812:6;2820:9;2787:8;:43::i;:::-;2715:122;;:::o;3283:116:24:-;3347:45;-1:-1:-1;;;;;;;;;;;3384:7:24;3347:23;:45::i;:::-;3283:116;:::o;7546:220:16:-;-1:-1:-1;;;;;7645:22:16;;7608:4;7645:22;;;-1:-1:-1;;;;;;;;;;;7645:22:16;;;;;:34;;;;;7697:29;;;;;;;;:::i;:::-;;:61;;;-1:-1:-1;7740:18:16;7730:6;:28;;;;;;;;:::i;:::-;;7697:61;7689:70;7546:220;-1:-1:-1;;;7546:220:16:o;3155:122:24:-;3222:48;-1:-1:-1;;;;;;;;;;;3262:7:24;3222:23;:48::i;10855:794:16:-;10990:5;4803:23;4820:5;4803:16;:23::i;:::-;4795:54;;;;-1:-1:-1;;;4795:54:16;;8570:2:40;4795:54:16;;;8552:21:40;8609:2;8589:18;;;8582:30;-1:-1:-1;;;8628:18:40;;;8621:48;8686:18;;4795:54:16;;;;;;;;;11036:16:::1;::::0;;11007:26:::1;11036:16:::0;;;::::1;::::0;::::1;::::0;;;;11076:28:::1;11090:5:::0;11097:6;11076:13:::1;:28::i;:::-;11062:42;;11114:13;11130:175;11162:5;11181:6;11201:11;11226:9;-1:-1:-1::0;;;;;;;;;;;11292:3:16::1;11130:18;:175::i;:::-;11114:191;;11315:192;11345:5;11364:6;11384:11;11409:9;-1:-1:-1::0;;;;;;;;;;;11475:5:16::1;11494:3;11315:16;:192::i;:::-;11614:28;11636:5;11614:21;:28::i;:::-;10997:652;;;10855:794:::0;;;;:::o;12613:198::-;831:43:24;3290:10:30;2072:139:24;:::i;831:43::-;823:75;;;;-1:-1:-1;;;823:75:24;;9049:2:40;823:75:24;;;9031:21:40;9088:2;9068:18;;;9061:30;-1:-1:-1;;;9107:18:40;;;9100:49;9166:18;;823:75:24;8847:343:40;823:75:24;-1:-1:-1;;;;;12696:22:16;::::1;;::::0;;;-1:-1:-1;;;;;;;;;;;12696:22:16::1;::::0;;;;;:45:::1;;:52:::0;;-1:-1:-1;;12696:52:16::1;12744:4;12696:52;::::0;;12763:41;12786:10:::1;::::0;12763:41:::1;::::0;::::1;12613:198:::0;:::o;2651:121:24:-;2717:48;-1:-1:-1;;;;;;;;;;;2757:7:24;2717:23;:48::i;2592:117:6:-;2642:7;2668:34;2687:14;:12;:14::i;2668:34::-;2661:41;;2592:117;:::o;21500:490:16:-;21648:19;:17;:19::i;:::-;-1:-1:-1;;;;;21648:39:16;;21701:15;:13;:15::i;:::-;-1:-1:-1;;;;;;;;;;;21773:49:16;21795:5;21802:6;21810:11;21773:21;:49::i;:::-;21836:5;21648:203;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21862:43;21879:5;21886:6;21894:10;21862:16;:43::i;:::-;21920:63;;;10510:25:40;;;10566:2;10551:18;;10544:34;;;21964:11:16;;-1:-1:-1;;;;;21920:63:16;;;21937:10;;21920:63;;10483:18:40;21920:63:16;;;;;;;;21500:490;;;;:::o;1353:318:23:-;904:67;-1:-1:-1;;;;;;;;;;;3290:10:30;904:21:23;:67::i;:::-;883:135;;;;-1:-1:-1;;;883:135:23;;10791:2:40;883:135:23;;;10773:21:40;10830:2;10810:18;;;10803:30;-1:-1:-1;;;10849:18:40;;;10842:51;10910:18;;883:135:23;10589:345:40;883:135:23;-1:-1:-1;;;;;1520:42:23;::::1;1444:43;1520:42:::0;;;471:66;1520:42:::1;::::0;;;;;;;;:49;;-1:-1:-1;;1520:49:23::1;1565:4;1520:49;::::0;;1586:32;1579:39;;-1:-1:-1;;;;;;1579:39:23::1;::::0;;1633:31;;11085:51:40;;;471:66:23;1633:31:::1;::::0;11058:18:40;1633:31:23::1;;;;;;;;1434:237;1353:318:::0;:::o;2843:104:6:-;2896:44;2905:14;:12;:14::i;:::-;2921:6;2929:10;2896:8;:44::i;3680:137:24:-;3742:7;3290:10:30;-1:-1:-1;;;;;1247:37:24;;;1239:72;;;;-1:-1:-1;;;1239:72:24;;;;;;;:::i;:::-;3761:49:::1;-1:-1:-1::0;;;;;;;;;;;3802:7:24;3761:24:::1;:49::i;4632:247::-:0;-1:-1:-1;;;;;;;;;;;4708:24:24;;:45;;;;;4737:16;4736:17;4708:45;4704:118;;;4769:42;;-1:-1:-1;;;4769:42:24;;11700:2:40;4769:42:24;;;11682:21:40;;;11719:18;;;11712:30;11778:34;11758:18;;;11751:62;11830:18;;4769:42:24;11498:356:40;4704:118:24;4831:41;4858:4;4864:7;4831:26;:41::i;2910:111::-;2972:42;-1:-1:-1;;;;;;;;;;;3006:7:24;2972:23;:42::i;8853:272:16:-;4546:10;4533:9;:7;:9::i;:::-;-1:-1:-1;;;;;4533:23:16;;4525:48;;;;-1:-1:-1;;;4525:48:16;;12061:2:40;4525:48:16;;;12043:21:40;12100:2;12080:18;;;12073:30;-1:-1:-1;;;12119:18:40;;;12112:42;12171:18;;4525:48:16;11859:336:40;4525:48:16;-1:-1:-1;;;;;8935:22:16;::::1;8973:19;8935:22:::0;;;-1:-1:-1;;;;;;;;;;;8935:22:16::1;::::0;;;;:34;::::1;;:57;::::0;::::1;;;;;;:::i;:::-;::::0;8927:83:::1;;;::::0;-1:-1:-1;;;8927:83:16;;12402:2:40;8927:83:16::1;::::0;::::1;12384:21:40::0;12441:2;12421:18;;;12414:30;-1:-1:-1;;;12460:18:40;;;12453:43;12513:18;;8927:83:16::1;12200:337:40::0;8927:83:16::1;-1:-1:-1::0;;;;;9020:22:16;::::1;;::::0;;;-1:-1:-1;;;;;;;;;;;9020:22:16::1;::::0;;;;;;;;:60;;-1:-1:-1;;9020:60:16::1;9057:23;9020:60;::::0;;9095:23;;11085:51:40;;;9095:23:16::1;::::0;11058:18:40;9095:23:16::1;;;;;;;;8853:272:::0;:::o;1465:1033:29:-;561:4:25;544:5;-1:-1:-1;;;;;544:22:25;;536:57;;;;-1:-1:-1;;;536:57:25;;12744:2:40;536:57:25;;;12726:21:40;12783:2;12763:18;;;12756:30;-1:-1:-1;;;12802:18:40;;;12795:52;12864:18;;536:57:25;12542:346:40;536:57:25;1543:17:29::1;1563:24;1543:17:::0;1563:2:::1;:24;:::i;:::-;1543:44:::0;-1:-1:-1;1597:24:29::1;1624:14;1543:44:::0;1636:2:::1;1624:14;:::i;:::-;1597:41:::0;-1:-1:-1;1656:31:29;;::::1;;1648:63;;;::::0;-1:-1:-1;;;1648:63:29;;13530:2:40;1648:63:29::1;::::0;::::1;13512:21:40::0;13569:2;13549:18;;;13542:30;-1:-1:-1;;;13588:18:40;;;13581:49;13647:18;;1648:63:29::1;13328:343:40::0;1648:63:29::1;1721:18;1753:32;1768:16:::0;1758:9;1753:4;;:32:::1;:::i;:::-;1742:55;;;;;;;:::i;:::-;1721:76:::0;-1:-1:-1;1808:35:29::1;;1846:16;1852:9:::0;1808:35;1846:4;;:16:::1;:::i;:::-;1808:54;;;;1933:23;;1959;:4:::0;1964:16;1959:4;;:23:::1;:::i;:::-;1933:49:::0;;-1:-1:-1;1933:49:29;-1:-1:-1;;;;;;2077:26:29;::::1;::::0;2073:122:::1;;2119:45;2143:10;2155:8;;2119:23;:45::i;:::-;2178:7;;;;;;;2715:122:6::0;;:::o;2073::29:-:1;2209:15;:13;:15::i;:::-;2205:287;;;2248:20:::0;;2240:53:::1;;;::::0;-1:-1:-1;;;2240:53:29;;14474:2:40;2240:53:29::1;::::0;::::1;14456:21:40::0;14513:2;14493:18;;;14486:30;-1:-1:-1;;;14532:18:40;;;14525:50;14592:18;;2240:53:29::1;14272:344:40::0;2240:53:29::1;2205:287;;;2373:26;2390:8;;2373:16;:26::i;:::-;2413:33;2437:8;;2413:23;:33::i;:::-;2460:21;:19;:21::i;8031:274:16:-:0;-1:-1:-1;;;;;8146:22:16;;8108:7;8146:22;;;-1:-1:-1;;;;;;;;;;;8146:22:16;;;;;:45;;;;;:152;;-1:-1:-1;;8146:152:16;;;8210:52;8256:5;8210:45;:52::i;:::-;8127:171;8031:274;-1:-1:-1;;8031:274:16:o;13793:229::-;-1:-1:-1;;;;;13902:22:16;;13857:7;13902:22;;;-1:-1:-1;;;;;;;;;;;13902:22:16;;;;;:38;;;13957:20;;:58;;14000:15;13957:58;;;-1:-1:-1;;13950:65:16;13793:229;-1:-1:-1;;;13793:229:16:o;4993:120::-;5052:7;5078:28;:26;:28::i;1359:135:24:-;1420:4;1443:44;-1:-1:-1;;;;;;;;;;;1479:7:24;1443:21;:44::i;12877:201:16:-;693:43:24;3290:10:30;1927:139:24;:::i;693:43::-;685:75;;;;-1:-1:-1;;;685:75:24;;14823:2:40;685:75:24;;;14805:21:40;14862:2;14842:18;;;14835:30;-1:-1:-1;;;14881:18:40;;;14874:49;14940:18;;685:75:24;14621:343:40;685:75:24;-1:-1:-1;;;;;12961:22:16;::::1;13009:5;12961:22:::0;;;-1:-1:-1;;;;;;;;;;;12961:22:16::1;::::0;;;;;:45:::1;;:53:::0;;-1:-1:-1;;12961:53:16::1;::::0;;13029:42;13053:10:::1;::::0;13029:42:::1;::::0;::::1;12877:201:::0;:::o;3027:122:24:-;3094:48;-1:-1:-1;;;;;;;;;;;3134:7:24;3094:23;:48::i;18032:793:16:-;-1:-1:-1;;;;;18210:25:16;;18202:55;;;;-1:-1:-1;;;18202:55:16;;15171:2:40;18202:55:16;;;15153:21:40;15210:2;15190:18;;;15183:30;-1:-1:-1;;;15229:18:40;;;15222:47;15286:18;;18202:55:16;14969:341:40;18202:55:16;18401:40;18416:5;18423:6;18431:9;18401:14;:40::i;:::-;-1:-1:-1;;;;;18523:22:16;;;;;;-1:-1:-1;;;;;;;;;;;18523:22:16;;;;;:45;;;;;18519:197;;;18654:51;18691:5;18698:6;18654:36;:51::i;:::-;18725:42;18742:5;18749:6;18757:9;18725:16;:42::i;:::-;18804:5;-1:-1:-1;;;;;18782:36:16;18793:9;-1:-1:-1;;;;;18782:36:16;;18811:6;18782:36;;;;1604:25:40;;1592:2;1577:18;;1458:177;18782:36:16;;;;;;;;18032:793;;;:::o;2356:143:24:-;2421:4;2444:48;-1:-1:-1;;;;;;;;;;;2484:7:24;2444:21;:48::i;1793:128::-;1851:4;1874:40;-1:-1:-1;;;;;;;;;;;1906:7:24;1874:21;:40::i;3405:126::-;3474:50;-1:-1:-1;;;;;;;;;;;3516:7:24;3474:23;:50::i;4658:450:6:-;4799:5;1374:10;1351:12;:10;:12::i;:::-;:19;;;;;;;;;;;;;-1:-1:-1;;;;;1351:19:6;:33;1343:60;;;;-1:-1:-1;;;1343:60:6;;15517:2:40;1343:60:6;;;15499:21:40;15556:2;15536:18;;;15529:30;-1:-1:-1;;;15575:18:40;;;15568:44;15629:18;;1343:60:6;15315:338:40;1343:60:6;4816:19:::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;4816:50:6::1;;4880:15;:13;:15::i;:::-;143:76:8;4946:48:6;4974:6;4982:11;4946:27;:48::i;:::-;5008:5;4816:207;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;5038:63:6::1;::::0;;10510:25:40;;;10566:2;10551:18;;10544:34;;;5082:11:6;;5062:10:::1;::::0;5038:63:::1;::::0;10483:18:40;5038:63:6::1;;;;;;;;4658:450:::0;;;;:::o;2072:139:24:-;2135:4;2158:46;-1:-1:-1;;;;;;;;;;;2196:7:24;2158:21;:46::i;5271:492:6:-;5406:5;1374:10;1351:12;:10;:12::i;:::-;:19;;;;;;;;;;;;;-1:-1:-1;;;;;1351:19:6;:33;1343:60;;;;-1:-1:-1;;;1343:60:6;;15517:2:40;1343:60:6;;;15499:21:40;15556:2;15536:18;;;15529:30;-1:-1:-1;;;15575:18:40;;;15568:44;15629:18;;1343:60:6;15315:338:40;1343:60:6;5423:19:::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;5423:39:6::1;;5476:15;:13;:15::i;:::-;143:76:8;5542:48:6;5570:6;5578:11;5542:27;:48::i;:::-;5604:5;5423:196;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5630:52;5647:14;:12;:14::i;:::-;5663:6;5671:10;5630:16;:52::i;:::-;5697:59;::::0;;10510:25:40;;;10566:2;10551:18;;10544:34;;;5737:11:6;;5717:10:::1;::::0;5697:59:::1;::::0;10483:18:40;5697:59:6::1;10336:248:40::0;12240:309:16;437:41:24;3290:10:30;1359:135:24;:::i;437:41::-;429:71;;;;-1:-1:-1;;;429:71:24;;15860:2:40;429:71:24;;;15842:21:40;15899:2;15879:18;;;15872:30;-1:-1:-1;;;15918:18:40;;;15911:47;15975:18;;429:71:24;15658:341:40;429:71:24;12333:15:16::1;:13;:15::i;:::-;12325:52;;;::::0;-1:-1:-1;;;12325:52:16;;16206:2:40;12325:52:16::1;::::0;::::1;16188:21:40::0;16245:2;16225:18;;;16218:30;16284:26;16264:18;;;16257:54;16328:18;;12325:52:16::1;16004:348:40::0;12325:52:16::1;12395:33;:14;:31;:33::i;:::-;12387:69;;;::::0;-1:-1:-1;;;12387:69:16;;16559:2:40;12387:69:16::1;::::0;::::1;16541:21:40::0;16598:2;16578:18;;;16571:30;-1:-1:-1;;;16617:18:40;;;16610:53;16680:18;;12387:69:16::1;16357:347:40::0;12387:69:16::1;12466:29;12480:14;12466:13;:29::i;:::-;12510:32;::::0;1604:25:40;;;12510:32:16::1;::::0;1592:2:40;1577:18;12510:32:16::1;1458:177:40::0;4087:138:24;4150:7;3290:10:30;-1:-1:-1;;;;;1247:37:24;;;1239:72;;;;-1:-1:-1;;;1239:72:24;;;;;;;:::i;:::-;4169:49:::1;-1:-1:-1::0;;;;;;;;;;;4210:7:24;4169:24:::1;:49::i;1500:138::-:0;1562:4;1585:46;-1:-1:-1;;;;;;;;;;;1623:7:24;1585:21;:46::i;2778:126::-;2847:50;-1:-1:-1;;;;;;;;;;;2889:7:24;2847:23;:50::i;2217:133::-;2277:4;2300:43;-1:-1:-1;;;;;;;;;;;2335:7:24;2300:21;:43::i;19535:458:16:-;19689:19;:17;:19::i;:::-;-1:-1:-1;;;;;19689:50:16;;19753:15;:13;:15::i;:::-;-1:-1:-1;;;;;;;;;;;19825:49:16;19847:5;19854:6;19862:11;19825:21;:49::i;:::-;19888:5;19689:214;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19919:67:16;;;10510:25:40;;;10566:2;10551:18;;10544:34;;;19967:11:16;;-1:-1:-1;;;;;19919:67:16;;;19940:10;;19919:67;;10483:18:40;19919:67:16;10336:248:40;1505:126:6;1603:21;;-1:-1:-1;;;1603:21:6;;16911:2:40;1603:21:6;;;16893::40;16950:2;16930:18;;;16923:30;-1:-1:-1;;;16969:18:40;;;16962:41;17020:18;;1603:21:6;16709:335:40;4873:114:16;4929:7;4955:25;:23;:25::i;20804:690::-;20999:19;:17;:19::i;:::-;-1:-1:-1;;;;;20999:39:16;;21052:15;:13;:15::i;:::-;-1:-1:-1;;;;;;;;;;;21131:175:16;21170:5;21193:6;21217:11;21246:4;21285:7;;21131:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21131:21:16;;-1:-1:-1;;;21131:175:16:i;:::-;21320:5;20999:336;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21346:43;21363:5;21370:6;21378:10;21346:16;:43::i;:::-;21459:11;21444:5;-1:-1:-1;;;;;21404:83:16;21432:10;-1:-1:-1;;;;;21404:83:16;;21451:6;21472:7;;21481:5;21404:83;;;;;;;;;:::i;:::-;;;;;;;;20804:690;;;;;;:::o;10053:796::-;10235:5;4803:23;4820:5;4803:16;:23::i;:::-;4795:54;;;;-1:-1:-1;;;4795:54:16;;8570:2:40;4795:54:16;;;8552:21:40;8609:2;8589:18;;;8582:30;-1:-1:-1;;;8628:18:40;;;8621:48;8686:18;;4795:54:16;8368:342:40;4795:54:16;10252:11:::1;10266:28;10280:5;10287:6;10266:13;:28::i;:::-;10252:42;;10304:13;10320:180;10352:5;10371:6;10391:11;10416:7;;10320:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;;404:75:8;-1:-1:-1;10487:3:16;;-1:-1:-1;10320:18:16::1;::::0;-1:-1:-1;10320:180:16:i:1;:::-;10304:196;;10510:197;10540:5;10559:6;10579:11;10604:7;;10510:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;;404:75:8;-1:-1:-1;10675:5:16;;-1:-1:-1;10694:3:16;;-1:-1:-1;10510:16:16::1;:197::i;:::-;10814:28;10836:5;10814:21;:28::i;:::-;10242:607;;10053:796:::0;;;;;;:::o;1779:315:23:-;904:67;-1:-1:-1;;;;;;;;;;;3290:10:30;904:21:23;:67::i;:::-;883:135;;;;-1:-1:-1;;;883:135:23;;10791:2:40;883:135:23;;;10773:21:40;10830:2;10810:18;;;10803:30;-1:-1:-1;;;10849:18:40;;;10842:51;10910:18;;883:135:23;10589:345:40;883:135:23;-1:-1:-1;;;;;1946:42:23;::::1;1870:43;1946:42:::0;;;471:66;1946:42:::1;::::0;;;;;;;;:50;;-1:-1:-1;;1946:50:23::1;::::0;;2013:32;2006:39;;-1:-1:-1;;;;;;2006:39:23::1;::::0;;2060:27;;11085:51:40;;;471:66:23;2060:27:::1;::::0;11058:18:40;2060:27:23::1;10939:203:40::0;1644:143:24;1709:4;1732:48;-1:-1:-1;;;;;;;;;;;1772:7:24;1732:21;:48::i;2527:118::-;2592:46;-1:-1:-1;;;;;;;;;;;2630:7:24;2592:23;:46::i;20058:740:16:-;20259:19;:17;:19::i;:::-;-1:-1:-1;;;;;20259:50:16;;20323:15;:13;:15::i;:::-;-1:-1:-1;;;;;;;;;;;20402:175:16;20441:5;20464:6;20488:11;20517:4;20556:7;;20402:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20402:21:16;;-1:-1:-1;;;20402:175:16:i;:::-;20591:5;20259:347;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20730:11;20691:5;-1:-1:-1;;;;;20622:169:16;20667:10;-1:-1:-1;;;;;20622:169:16;;20710:6;20755:7;;20776:5;20622:169;;;;;;;;;:::i;1927:139:24:-;1990:4;2013:46;-1:-1:-1;;;;;;;;;;;2051:7:24;2013:21;:46::i;9458:589:16:-;-1:-1:-1;;;;;4653:22:16;;;;;;-1:-1:-1;;;;;;;;;;;4653:22:16;;;;;:34;9529:5;;4691:19;;4653:34;;:57;;;;;;;;:::i;:::-;;4649:70;;9458:589;;:::o;4649:70::-;-1:-1:-1;;;;;9579:22:16;::::1;9546:30;9579:22:::0;;;-1:-1:-1;;;;;;;;;;;9579:22:16::1;::::0;;;;9629:26:::1;::::0;::::1;::::0;9670:19:::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;9670:34:16::1;;9705:7;9670:43;;;;;;;;;;;;;1604:25:40::0;;1592:2;1577:18;;1458:177;9670:43:16::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9717:1;9670:48:::0;9666:375:::1;;9734:41:::0;;-1:-1:-1;;9734:41:16::1;9757:18;9734:41;::::0;;9666:375:::1;;;9814:8;:36;;;9796:15;:54;9792:249;;;-1:-1:-1::0;;;;;9873:22:16;::::1;;::::0;;;-1:-1:-1;;;;;;;;;;;9873:22:16::1;::::0;;;;9866:29;;-1:-1:-1;;9866:29:16;;::::1;::::0;;-1:-1:-1;9866:29:16;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;9946:9:::1;:7;:9::i;:::-;-1:-1:-1::0;;;;;9928:40:16::1;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9984:46;::::0;-1:-1:-1;;;9984:46:16;;-1:-1:-1;;;;;11103:32:40;;;9984:46:16::1;::::0;::::1;11085:51:40::0;9909:61:16;;-1:-1:-1;9984:39:16;;::::1;::::0;::::1;::::0;11058:18:40;;9984:46:16::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;9792:249;9536:511;;9458:589:::0;;:::o;13376:295::-;437:41:24;3290:10:30;1359:135:24;:::i;437:41::-;429:71;;;;-1:-1:-1;;;429:71:24;;15860:2:40;429:71:24;;;15842:21:40;15899:2;15879:18;;;15872:30;-1:-1:-1;;;15918:18:40;;;15911:47;15975:18;;429:71:24;15658:341:40;429:71:24;13488:16:16::1;13508:1;13488:21:::0;13480:59:::1;;;::::0;-1:-1:-1;;;13480:59:16;;18516:2:40;13480:59:16::1;::::0;::::1;18498:21:40::0;18555:2;18535:18;;;18528:30;18594:27;18574:18;;;18567:55;18639:18;;13480:59:16::1;18314:349:40::0;13480:59:16::1;13573:5;-1:-1:-1::0;;;;;13554:43:16::1;;13580:16;13554:43;;;;1604:25:40::0;;1592:2;1577:18;;1458:177;13554:43:16::1;;;;;;;;-1:-1:-1::0;;;;;13607:22:16;;;::::1;;::::0;;;-1:-1:-1;;;;;;;;;;;13607:22:16::1;::::0;;;;:38:::1;;:57:::0;13376:295::o;4231:121:24:-;4296:49;-1:-1:-1;;;;;;;;;;;4337:7:24;4296:24;:49::i;3557:117::-;3620:47;-1:-1:-1;;;;;;;;;;;3659:7:24;3620:24;:47::i;1803:783:6:-;1913:16;;;1884:26;1913:16;;;;;;;;;;1955:14;:12;:14::i;:::-;1939:30;;1979:11;1993:28;2007:5;2014:6;1993:13;:28::i;:::-;1979:42;;2031:13;2047:175;2079:5;2098:6;2118:11;2143:9;-1:-1:-1;;;;;;;;;;;2209:3:6;2047:18;:175::i;:::-;2031:191;;2232:192;2262:5;2281:6;2301:11;2326:9;-1:-1:-1;;;;;;;;;;;2392:5:6;2411:3;2232:16;:192::i;:::-;2524:55;;;18870:25:40;;;18926:2;18911:18;;18904:34;;;18954:18;;;18947:34;;;2555:11:6;;2535:10;;2524:55;;18858:2:40;18843:18;2524:55:6;;;;;;;1874:712;;;;1803:783;;:::o;4479:125:24:-;4546:51;-1:-1:-1;;;;;;;;;;;4589:7:24;4546:24;:51::i;3823:142::-;3888:7;3290:10:30;-1:-1:-1;;;;;1247:37:24;;;1239:72;;;;-1:-1:-1;;;1239:72:24;;;;;;;:::i;:::-;3907:51:::1;-1:-1:-1::0;;;;;;;;;;;3950:7:24;3907:24:::1;:51::i;275:126:14:-:0;327:13;352:42;;;;;;;;;;;;;;;;;;;275:126;:::o;18831:110:16:-;18899:35;18908:5;18915:6;18923:10;18899:8;:35::i;4358:115:24:-;4420:46;-1:-1:-1;;;;;;;;;;;4458:7:24;4420:24;:46::i;3971:110::-;4031:43;-1:-1:-1;;;;;;;;;;;4066:7:24;4031:24;:43::i;992:127:6:-;1039:7;1065:47;1094:17;;;;;;;;;;;;;;;;;1065:28;:47::i;6306:130:30:-;6374:18;6387:4;6374:12;:18::i;:::-;4368:16;4379:4;4368:10;:16::i;:::-;6404:25:::1;6415:4;6421:7;6404:10;:25::i;:::-;6306:130:::0;;;:::o;407:552:14:-;514:7;640:6;627:9;:19;;619:50;;;;-1:-1:-1;;;619:50:14;;19194:2:40;619:50:14;;;19176:21:40;19233:2;19213:18;;;19206:30;-1:-1:-1;;;19252:18:40;;;19245:48;19310:18;;619:50:14;18992:342:40;619:50:14;679:11;693:18;705:6;693:9;:18;:::i;:::-;679:32;;721:18;735:3;721:13;:18::i;:::-;884:23;943:8:8;884:18:14;:23::i;:::-;853:27;877:3;853:21;:27;:::i;:::-;:54;;845:87;;;;-1:-1:-1;;;845:87:14;;19674:2:40;845:87:14;;;19656:21:40;19713:2;19693:18;;;19686:30;-1:-1:-1;;;19732:18:40;;;19725:50;19792:18;;845:87:14;19472:344:40;16565:887:16;16774:7;16801:15;:13;:15::i;:::-;16820:1;16801:20;16793:50;;;;-1:-1:-1;;;16793:50:16;;20023:2:40;16793:50:16;;;20005:21:40;20062:2;20042:18;;;20035:30;-1:-1:-1;;;20081:18:40;;;20074:47;20138:18;;16793:50:16;19821:341:40;16793:50:16;16870:1;16861:6;:10;16853:35;;;;-1:-1:-1;;;16853:35:16;;20369:2:40;16853:35:16;;;20351:21:40;20408:2;20388:18;;;20381:30;-1:-1:-1;;;20427:18:40;;;20420:42;20479:18;;16853:35:16;20167:336:40;16853:35:16;16906:30;:11;:28;:30::i;:::-;16898:66;;;;-1:-1:-1;;;16898:66:16;;16559:2:40;16898:66:16;;;16541:21:40;16598:2;16578:18;;;16571:30;-1:-1:-1;;;16617:18:40;;;16610:53;16680:18;;16898:66:16;16357:347:40;16898:66:16;-1:-1:-1;;;;;;;;;;;16992:48:16;;16975:14;17070:19;:17;:19::i;:::-;-1:-1:-1;;;;;17070:35:16;;17113:3;17131:15;:13;:15::i;:::-;17160:8;17182:69;17204:5;17211:6;17219:11;17232:9;17243:7;17182:21;:69::i;:::-;17070:191;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17050:211;16565:887;-1:-1:-1;;;;;;;;;;16565:887:16:o;11655:579::-;-1:-1:-1;;;;;;;;;;;11890:8:16;:41;11886:342;;11952:59;;;18870:25:40;;;18926:2;18911:18;;18904:34;;;18954:18;;;18947:34;;;11987:11:16;;-1:-1:-1;;;;;11952:59:16;;;11960:10;;11952:59;;18858:2:40;18843:18;11952:59:16;;;;;;;11886:342;;;-1:-1:-1;;;;;;;;;;;12050:8:16;:48;12042:77;;;;-1:-1:-1;;;12042:77:16;;21466:2:40;12042:77:16;;;21448:21:40;21505:2;21485:18;;;21478:30;-1:-1:-1;;;21524:18:40;;;21517:46;21580:18;;12042:77:16;21264:340:40;12042:77:16;12184:11;12169:5;-1:-1:-1;;;;;12138:79:16;12157:10;-1:-1:-1;;;;;12138:79:16;;12176:6;12197:7;12206:5;12213:3;12138:79;;;;;;;;;:::i;:::-;;;;;;;;11655:579;;;;;;;:::o;1726:168:18:-;1778:18;1834:52;1863:22;;;;;;;;;;;;;;;;;1834:28;:52::i;1599:121::-;1647:7;1673:40;1699:13;;;;;;;;;;;;;;;;;1673:25;:40::i;15702:425:16:-;15894:16;;;15865:26;15894:16;;;;;;;;;15837;;15865:45;15939:181;15978:5;16001:6;16025:11;16054:5;16097:9;15939:21;:181::i;:::-;15920:200;15702:425;-1:-1:-1;;;;;15702:425:16:o;965:181:14:-;1103:36;-1:-1:-1;;;;;1103:28:14;;1132:6;1103:28;:36::i;4481:132:30:-;4552:4;4575:14;;;-1:-1:-1;;;;;;;;;;;4575:14:30;;;;;;;;-1:-1:-1;;;;;4575:31:30;;;;;;;;;;;;;;;4481:132::o;6702:::-;6771:18;6784:4;6771:12;:18::i;:::-;4368:16;4379:4;4368:10;:16::i;:::-;6801:26:::1;6813:4;6819:7;6801:11;:26::i;7350:199::-:0;-1:-1:-1;;;;;7430:23:30;;3290:10;7430:23;7422:83;;;;-1:-1:-1;;;7422:83:30;;22292:2:40;7422:83:30;;;22274:21:40;22331:2;22311:18;;;22304:30;22370:34;22350:18;;;22343:62;-1:-1:-1;;;22421:18:40;;;22414:45;22476:19;;7422:83:30;22090:411:40;7422:83:30;7516:26;7528:4;7534:7;7516:11;:26::i;1477:116:18:-;1519:7;1545:41;1574:11;;;;;;;;;;;;;;;;;1545:28;:41::i;2504:540:29:-;-1:-1:-1;;;;;2632:34:29;;474:20:31;2624:67:29;;;;-1:-1:-1;;;2624:67:29;;22708:2:40;2624:67:29;;;22690:21:40;22747:2;22727:18;;;22720:30;-1:-1:-1;;;22766:18:40;;;22759:48;22824:18;;2624:67:29;22506:342:40;2624:67:29;2772:12;2786:23;2813;-1:-1:-1;;;;;2813:36:29;2886:24;;;2912:7;;2863:57;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2863:57:29;;;;;;;;;;;;;;-1:-1:-1;;;;;2863:57:29;-1:-1:-1;;;;;;2863:57:29;;;;;;;;;;2813:117;;;;2863:57;2813:117;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2771:159;;;;2948:7;2964:10;2940:36;;;;;-1:-1:-1;;;2940:36:29;;;;;;;;:::i;:::-;-1:-1:-1;2994:17:29;;:10;;:22;2986:51;;;;-1:-1:-1;;;2986:51:29;;;;;;;;:::i;:::-;;2614:430;;2504:540;;;:::o;4058:137:16:-;4123:4;;4154:19;:17;:19::i;:::-;-1:-1:-1;;;;;4146:42:16;;;4139:49;;4058:137;:::o;3149:401::-;3260:2;3245:17;;3237:47;;;;-1:-1:-1;;;3237:47:16;;23740:2:40;3237:47:16;;;23722:21:40;23779:2;23759:18;;;23752:30;-1:-1:-1;;;23798:18:40;;;23791:47;23855:18;;3237:47:16;23538:341:40;3237:47:16;3295:16;;3343:36;;;;3354:4;3343:36;:::i;:::-;3294:85;;;;3397:31;:18;-1:-1:-1;;;;;3397:29:16;474:20:31;520:8;;;345:190;3397:31:16;3389:78;;;;-1:-1:-1;;;3389:78:16;;24495:2:40;3389:78:16;;;24477:21:40;24534:2;24514:18;;;24507:30;24573:34;24553:18;;;24546:62;-1:-1:-1;;;24624:18:40;;;24617:32;24666:19;;3389:78:16;24293:398:40;3389:78:16;-1:-1:-1;;;;;3485:19:16;;474:20:31;3477:66:16;;;;-1:-1:-1;;;3477:66:16;;24898:2:40;3477:66:16;;;24880:21:40;;;24917:18;;;24910:30;24976:34;24956:18;;;24949:62;25028:18;;3477:66:16;24696:356:40;3712:340:16;3795:16;;3843:36;;;;3854:4;3843:36;:::i;:::-;3794:85;;;;3889:37;3907:18;3889:17;:37::i;:::-;3936:20;3947:8;3936:10;:20::i;:::-;3966:79;362:1:19;3966:35:16;:79::i;2533:142:33:-;3290:10:30;2632:36:33;3290:10:30;;2632::33;:36::i;2699:247:19:-;2776:7;2800:33;2827:5;2800:26;:33::i;:::-;2795:105;;2856:33;2883:5;2856:26;:33::i;2795:105::-;2916:23;2933:5;2916:16;:23::i;649:129:0:-;705:7;731:40;326:9;189:6;731:40;:::i;3127:1357:6:-;3275:15;:13;:15::i;:::-;3294:1;3275:20;3267:50;;;;-1:-1:-1;;;3267:50:6;;20023:2:40;3267:50:6;;;20005:21:40;20062:2;20042:18;;;20035:30;-1:-1:-1;;;20081:18:40;;;20074:47;20138:18;;3267:50:6;19821:341:40;3267:50:6;-1:-1:-1;;;;;3349:27:6;;3327:19;3437:1;742:25:8;700:3;742:1;:25;:::i;:::-;3417:21:6;;;;:::i;:::-;3597:16;;;3611:1;3597:16;;;;;;;;;3407:32;;;;-1:-1:-1;700:3:8;3471:32:6;;;;3449:19;;3597:16;;;;;;;;;;-1:-1:-1;3597:16:6;3570:43;;655:1:8;3623:7:6;3631:1;3623:10;;;;;;;;:::i;:::-;;;;;;:35;;;;;3681:11;3668:7;3676:1;3668:10;;;;;;;;:::i;:::-;;;;;;:24;;;;;3731:5;-1:-1:-1;;;;;3715:23:6;3702:7;3710:1;3702:10;;;;;;;;:::i;:::-;;;;;;:36;;;;;3761:10;3748:7;3756:1;3748:10;;;;;;;;:::i;:::-;;;;;;:23;;;;;3794:11;3781:7;3789:1;3781:10;;;;;;;;:::i;:::-;;;;;;:24;;;;;3891:19;:17;:19::i;:::-;-1:-1:-1;;;;;3891:40:6;;3932:15;:13;:15::i;:::-;3949:7;3891:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3891:66:6;;;;;;;;-1:-1:-1;;3891:66:6;;;;;;;;;;;;:::i;:::-;;;3887:591;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;4209:16;;;4223:1;4209:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4209:16:6;4199:26;;655:1:8;4239:7:6;4247:1;4239:10;;;;;;;;:::i;:::-;;;;;;:35;;;;;4301:11;4288:7;4296:1;4288:10;;;;;;;;:::i;:::-;;;;;;:24;;;;;4339:10;4326:7;4334:1;4326:10;;;;;;;;:::i;:::-;;;;;;:23;;;;;4376:11;4363:7;4371:1;4363:10;;;;;;;;:::i;:::-;;;;;;:24;;;;;4401:19;:17;:19::i;:::-;-1:-1:-1;;;;;4401:40:6;;4442:15;:13;:15::i;:::-;4459:7;4401:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3961:517;3887:591;;;;;;;;;;;;3107:291:19;3187:25;3215:36;3245:5;3215:29;:36::i;:::-;3187:64;;3290:6;3269:17;:27;;3261:69;;;;-1:-1:-1;;;3261:69:19;;28319:2:40;3261:69:19;;;28301:21:40;28358:2;28338:18;;;28331:30;28397:31;28377:18;;;28370:59;28446:18;;3261:69:19;28117:353:40;3261:69:19;3340:51;3357:5;3364:26;3384:6;3364:17;:26;:::i;:::-;3340:16;:51::i;1125:164:6:-;1170:35;1224:58;1258:23;;;;;;;;;;;;;;;;;1224:33;:58::i;5879:370::-;6058:16;;;6072:1;6058:16;;;;;;;;;5999;;6031:24;;6058:16;;;;5999;;6058;;;;;-1:-1:-1;6058:16:6;6031:43;;6097:11;6084:7;6092:1;6084:10;;;;;;;;:::i;:::-;;;;;;;;;;:24;6161:1;742:25:8;700:3;742:1;:25;:::i;:::-;6141:21:6;;;;:::i;:::-;6131:6;:32;6118:7;6126:1;6118:10;;;;;;;;:::i;:::-;;;;;;:45;;;;;700:3:8;6186:6:6;:32;;6173:7;6181:1;6173:10;;;;;;;;:::i;:::-;;;;;;;;;;:45;6235:7;5879:370;-1:-1:-1;;;5879:370:6:o;2539:135:21:-;2607:4;2631:14;;;;;:35;;;2649:17;2656:9;-1:-1:-1;;;;;;2762:38:21;2680:128;2051:115:18;2108:51;2138:13;;;;;;;;;;;;;;;;;2153:5;2108:29;:51::i;520:123:0:-;573:7;599:37;326:9;144:5;599:37;:::i;14683:1013:16:-;14878:16;14906:22;14931:11;:114;;2955:1;14931:114;;;14957:51;3008:1;2955;14957:51;:::i;:::-;14906:139;;15055:24;15113:7;:14;15096;:31;;;;:::i;:::-;15082:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15082:46:16;;15055:73;;15167:5;-1:-1:-1;;;;;15151:23:16;15138:7;15146:1;15138:10;;;;;;;;:::i;:::-;;;;;;:36;;;;;15213:10;-1:-1:-1;;;;;15197:28:16;15184:7;15192:1;15184:10;;;;;;;;:::i;:::-;;;;;;:41;;;;;15248:11;15235:7;15243:1;15235:10;;;;;;;;:::i;:::-;;;;;;;;;;:24;15312:1;742:25:8;700:3;742:1;:25;:::i;:::-;15292:21:16;;;;:::i;:::-;15282:6;:32;15269:7;15277:1;15269:10;;;;;;;;:::i;:::-;;;;;;:45;;;;;700:3:8;15337:6:16;:32;;15324:7;15332:1;15324:10;;;;;;;;:::i;:::-;;;;;;:45;;;;;15383:11;15379:287;;;15440:14;;15410:7;15418:18;15435:1;15418:14;:18;:::i;:::-;15410:27;;;;;;;;:::i;:::-;;;;;;:44;;;;;15473:9;15468:188;15492:7;:14;15488:1;:18;15468:188;;;15539:19;:7;15547:1;15539:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;;2762:38:21;2680:128;15539:19:16;15531:52;;;;-1:-1:-1;;;15531:52:16;;28677:2:40;15531:52:16;;;28659:21:40;28716:2;28696:18;;;28689:30;-1:-1:-1;;;28735:18:40;;;28728:50;28795:18;;15531:52:16;28475:344:40;15531:52:16;15631:7;15639:1;15631:10;;;;;;;;:::i;:::-;;;;;;;15601:7;15613:14;15609:1;:18;;;;:::i;:::-;15601:27;;;;;;;;:::i;:::-;;;;;;;;;;:40;15508:3;;15468:188;;;;15379:287;15682:7;14683:1013;-1:-1:-1;;;;;;;14683:1013:16:o;3268:212:32:-;3336:14;3362:12;3404:4;3387:22;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3387:22:32;;;;;;;;;3377:33;;3387:22;3377:33;;;;3453:11;;3268:212;-1:-1:-1;;;3268:212:32:o;5911:116:30:-;5970:7;5996:14;;;-1:-1:-1;;;;;;;;;;;5996:14:30;;;;;:24;;;;5911:116::o;4892:95::-;4950:30;4961:4;3290:10;4950;:30::i;8830:227::-;8905:22;8913:4;8919:7;8905;:22::i;:::-;8900:151;;8943:14;;;;-1:-1:-1;;;;;;;;;;;8943:14:30;;;;;;;;-1:-1:-1;;;;;8943:31:30;;;;;;;;;;:38;;-1:-1:-1;;8943:38:30;8977:4;8943:38;;;9000:40;3290:10;;8943:14;;9000:40;;8943:14;9000:40;8830:227;;:::o;784:175:0:-;860:7;850:6;:17;;842:52;;;;-1:-1:-1;;;842:52:0;;29320:2:40;842:52:0;;;29302:21:40;29359:2;29339:18;;;29332:30;-1:-1:-1;;;29378:18:40;;;29371:52;29440:18;;842:52:0;29118:346:40;842:52:0;507:6;912;:17;;904:48;;;;-1:-1:-1;;;904:48:0;;29671:2:40;904:48:0;;;29653:21:40;29710:2;29690:18;;;29683:30;-1:-1:-1;;;29729:18:40;;;29722:48;29787:18;;904:48:0;29469:342:40;541:251:31;627:6;637:1;627:11;623:24;;541:251;;:::o;623:24::-;657:12;675:9;-1:-1:-1;;;;;675:14:31;697:6;675:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;656:52;;;754:7;746:39;;;;-1:-1:-1;;;746:39:31;;30228:2:40;746:39:31;;;30210:21:40;30267:2;30247:18;;;30240:30;-1:-1:-1;;;30286:18:40;;;30279:49;30345:18;;746:39:31;30026:343:40;9216:228:30;9291:22;9299:4;9305:7;9291;:22::i;:::-;9287:151;;;9363:5;9329:14;;;-1:-1:-1;;;;;;;;;;;9329:14:30;;;;;;;;-1:-1:-1;;;;;9329:31:30;;;;;;;;;;:39;;-1:-1:-1;;9329:39:30;;;9387:40;3290:10;;9329:14;;9387:40;;9363:5;9387:40;9216:228;;:::o;2172:139:18:-;2237:67;2270:22;;;;;;;;;;;;;;;;;2294:9;2237:32;:67::i;1924:121::-;1982:56;2015:11;;;;;;;;;;;;;;;;;2028:9;1982:32;:56::i;706:126:19:-;769:56;795:22;;;;;;;;;;;;;;;;;819:5;769:25;:56::i;2681:1050:33:-;2782:28;:26;:28::i;:::-;2778:485;;;3062:60;-1:-1:-1;;;;;;;;;;;3102:19:33;3062:21;:60::i;:::-;3037:144;;;;-1:-1:-1;;;3037:144:33;;30576:2:40;3037:144:33;;;30558:21:40;30615:2;30595:18;;;30588:30;30654:27;30634:18;;;30627:55;30699:18;;3037:144:33;30374:349:40;3037:144:33;2778:485;;;3212:40;3232:19;3212;:40::i;:::-;3277:26;:24;:26::i;:::-;3273:452;;;3519:58;-1:-1:-1;;;;;;;;;;;3557:19:33;3519:21;:58::i;:::-;3494:151;;;;-1:-1:-1;;;3494:151:33;;30930:2:40;3494:151:33;;;30912:21:40;30969:2;30949:18;;;30942:30;31008:34;30988:18;;;30981:62;-1:-1:-1;;;31059:18:40;;;31052:32;31101:19;;3494:151:33;30728:398:40;3273:452:33;3676:38;3694:19;3676:17;:38::i;2081:148:19:-;2154:4;2177:15;:13;:15::i;:::-;:40;2193:23;2210:5;2193:16;:23::i;:::-;2177:40;;;;;;;;;;;;2221:1;2177:45;;2170:52;;2081:148;;;:::o;1233:495::-;1307:7;;-1:-1:-1;;;;;;;1443:12:19;;;1439:167;;-1:-1:-1;1488:21:19;1439:167;;;1557:38;;-1:-1:-1;;;1557:38:19;;1589:4;1557:38;;;11085:51:40;-1:-1:-1;;;;;1557:23:19;;;;;11058:18:40;;1557:38:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1540:55;;1439:167;1615:24;1642:21;:19;:21::i;:::-;1615:48;-1:-1:-1;1718:3:19;1681:33;1615:48;1681:14;:33;:::i;:::-;1680:41;;;;:::i;:::-;1673:48;1233:495;-1:-1:-1;;;;1233:495:19:o;2235:146::-;2299:7;2073:1;2325:15;:13;:15::i;:::-;:40;2341:23;2358:5;2341:16;:23::i;:::-;2325:40;;;;;;;;;;;;:49;;;;:::i;2387:138::-;2504:14;2073:1;2504:5;:14;:::i;:::-;2461:15;:13;:15::i;:::-;:40;2477:23;2494:5;2477:16;:23::i;:::-;2461:40;;;;;;;;;;;-1:-1:-1;2461:40:19;:57;-1:-1:-1;;2387:138:19:o;1467:295:32:-;1564:50;1630:16;1676:4;1659:22;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1659:22:32;;;;;;;;;1649:33;;1659:22;1649:33;;;;;1467:295;-1:-1:-1;;;1467:295:32:o;3093:169::-;3181:18;3194:4;3181:12;:18::i;:::-;:23;3173:47;;;;-1:-1:-1;;;3173:47:32;;31555:2:40;3173:47:32;;;31537:21:40;31594:2;31574:18;;;31567:30;-1:-1:-1;;;31613:18:40;;;31606:41;31664:18;;3173:47:32;31353:335:40;3173:47:32;3230:25;3243:4;3249:5;3230:12;:25::i;5257:484:30:-;5337:22;5345:4;5351:7;5337;:22::i;:::-;5332:403;;5520:41;5548:7;-1:-1:-1;;;;;5520:41:30;5558:2;5520:19;:41::i;:::-;5632:38;5660:4;5667:2;5632:19;:38::i;:::-;5427:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5427:265:30;;;;;;;;;;-1:-1:-1;;;5375:349:30;;;;;;;:::i;3687:189:32:-;3811:3;3778:21;3794:4;3778:15;:21::i;:::-;-1:-1:-1;;;;;3778:37:32;;3770:61;;;;-1:-1:-1;;;3770:61:32;;31555:2:40;3770:61:32;;;31537:21:40;31594:2;31574:18;;;31567:30;-1:-1:-1;;;31613:18:40;;;31606:41;31664:18;;3770:61:32;31353:335:40;2895:192:32;2971:12;3013:4;2996:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;2986:33;;;;;;2971:48;;3065:5;3059:4;3052:19;3038:43;2895:192;;:::o;2221:152:33:-;2282:4;;2305:44;-1:-1:-1;;;;;;;;;;;2305:26:33;:44::i;:::-;:61;;2298:68;;2221:152;:::o;4023:559::-;4099:63;-1:-1:-1;;;;;;;;;;;4142:19:33;4099:24;:63::i;:::-;4172:57;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;4172:27:33;:57::i;:::-;4239:61;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;4239:27:33;:61::i;:::-;4310:63;-1:-1:-1;;;;;;;;;;;667:66:33;4310:27;:63::i;:::-;4383:53;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;4383:27:33;:53::i;:::-;4446:56;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;4446:27:33;:56::i;:::-;4512:63;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;4512:27:33;:63::i;2379:148::-;2438:4;;2461:42;-1:-1:-1;;;;;;;;;;;2461:26:33;:42::i;3737:280::-;3811:59;-1:-1:-1;;;;;;;;;;;1067:66:33;3811:27;:59::i;:::-;3880;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;3880:27:33;:59::i;:::-;3949:61;-1:-1:-1;;;;;;;;;;;3990:19:33;3949:24;:61::i;1794:165:19:-;1842:35;1896:56;1933:18;;;;;;;;;;;;;;;;;1896:36;:56::i;897:177::-;961:7;;994:23;1012:5;994:15;:23;:::i;:::-;1044:22;;;-1:-1:-1;;;;;32711:32:40;;1044:22:19;;;32693:51:40;32760:18;;;32753:34;;;980:37:19;;-1:-1:-1;32666:18:40;;1044:22:19;;;;;;;;;;;;1034:33;;;;;;1027:40;;;897:177;;;:::o;564:136::-;618:7;644:49;670:22;;;;;;;;;;;;;;;;;644:25;:49::i;1652:441:39:-;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;1774:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:39;;1752:47;;-1:-1:-1;;;1809:6:39;1816:1;1809:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1809:15:39;;;;;;;;;-1:-1:-1;;;1834:6:39;1841:1;1834:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1834:15:39;;;;;;;;-1:-1:-1;1864:9:39;1876:10;1880:6;1876:1;:10;:::i;:::-;:14;;1889:1;1876:14;:::i;:::-;1864:26;;1859:132;1896:1;1892;:5;1859:132;;;-1:-1:-1;;;1943:5:39;1951:3;1943:11;1930:25;;;;;;;:::i;:::-;;;;1918:6;1925:1;1918:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;1918:37:39;;;;;;;;-1:-1:-1;1979:1:39;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:39;;2000:55;;;;-1:-1:-1;;;2000:55:39;;33141:2:40;2000:55:39;;;33123:21:40;;;33160:18;;;33153:30;33219:34;33199:18;;;33192:62;33271:18;;2000:55:39;32939:356:40;8433:241:30;8508:25;8536:18;8549:4;8536:12;:18::i;:::-;8564:14;;;;-1:-1:-1;;;;;;;;;;;8564:14:30;;;;;;:24;;:36;;;8615:52;8508:46;;-1:-1:-1;8591:9:30;;8508:46;;8564:14;;8615:52;;8564:14;8615:52;8498:176;8433:241;;:::o;14:131:40:-;-1:-1:-1;;;;;89:31:40;;79:42;;69:70;;135:1;132;125:12;150:367;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;340:23;;;-1:-1:-1;439:2:40;424:18;;411:32;452:33;411:32;452:33;:::i;:::-;504:7;494:17;;;150:367;;;;;:::o;522:247::-;581:6;634:2;622:9;613:7;609:23;605:32;602:52;;;650:1;647;640:12;602:52;689:9;676:23;708:31;733:5;708:31;:::i;966:487::-;1043:6;1051;1059;1112:2;1100:9;1091:7;1087:23;1083:32;1080:52;;;1128:1;1125;1118:12;1080:52;1167:9;1154:23;1186:31;1211:5;1186:31;:::i;:::-;1236:5;1314:2;1299:18;;1286:32;;-1:-1:-1;1417:2:40;1402:18;;;1389:32;;966:487;-1:-1:-1;;;966:487:40:o;1640:608::-;1726:6;1734;1742;1750;1803:3;1791:9;1782:7;1778:23;1774:33;1771:53;;;1820:1;1817;1810:12;1771:53;1859:9;1846:23;1878:31;1903:5;1878:31;:::i;:::-;1928:5;2006:2;1991:18;;1978:32;;-1:-1:-1;2109:2:40;2094:18;;2081:32;;2212:2;2197:18;2184:32;;-1:-1:-1;1640:608:40;-1:-1:-1;;;1640:608:40:o;2253:226::-;2312:6;2365:2;2353:9;2344:7;2340:23;2336:32;2333:52;;;2381:1;2378;2371:12;2333:52;-1:-1:-1;2426:23:40;;2253:226;-1:-1:-1;2253:226:40:o;2484:127::-;2545:10;2540:3;2536:20;2533:1;2526:31;2576:4;2573:1;2566:15;2600:4;2597:1;2590:15;2616:344;2764:2;2749:18;;2797:1;2786:13;;2776:144;;2842:10;2837:3;2833:20;2830:1;2823:31;2877:4;2874:1;2867:15;2905:4;2902:1;2895:15;2776:144;2929:25;;;2616:344;:::o;3285:586::-;3355:6;3363;3416:2;3404:9;3395:7;3391:23;3387:32;3384:52;;;3432:1;3429;3422:12;3384:52;3472:9;3459:23;3505:18;3497:6;3494:30;3491:50;;;3537:1;3534;3527:12;3491:50;3560:22;;3613:4;3605:13;;3601:27;-1:-1:-1;3591:55:40;;3642:1;3639;3632:12;3591:55;3682:2;3669:16;3708:18;3700:6;3697:30;3694:50;;;3740:1;3737;3730:12;3694:50;3785:7;3780:2;3771:6;3767:2;3763:15;3759:24;3756:37;3753:57;;;3806:1;3803;3796:12;3753:57;3837:2;3829:11;;;;;3859:6;;-1:-1:-1;3285:586:40;-1:-1:-1;;;3285:586:40:o;3876:508::-;3953:6;3961;3969;4022:2;4010:9;4001:7;3997:23;3993:32;3990:52;;;4038:1;4035;4028:12;3990:52;4077:9;4064:23;4096:31;4121:5;4096:31;:::i;:::-;4146:5;-1:-1:-1;4224:2:40;4209:18;;4196:32;;-1:-1:-1;4306:2:40;4291:18;;4278:32;4319:33;4278:32;4319:33;:::i;:::-;4371:7;4361:17;;;3876:508;;;;;:::o;4389:466::-;4466:6;4474;4482;4535:2;4523:9;4514:7;4510:23;4506:32;4503:52;;;4551:1;4548;4541:12;4503:52;-1:-1:-1;;4596:23:40;;;4716:2;4701:18;;4688:32;;-1:-1:-1;4819:2:40;4804:18;;;4791:32;;4389:466;-1:-1:-1;4389:466:40:o;4860:367::-;4923:8;4933:6;4987:3;4980:4;4972:6;4968:17;4964:27;4954:55;;5005:1;5002;4995:12;4954:55;-1:-1:-1;5028:20:40;;5071:18;5060:30;;5057:50;;;5103:1;5100;5093:12;5057:50;5140:4;5132:6;5128:17;5116:29;;5200:3;5193:4;5183:6;5180:1;5176:14;5168:6;5164:27;5160:38;5157:47;5154:67;;;5217:1;5214;5207:12;5154:67;4860:367;;;;;:::o;5232:934::-;5354:6;5362;5370;5378;5386;5394;5447:3;5435:9;5426:7;5422:23;5418:33;5415:53;;;5464:1;5461;5454:12;5415:53;5503:9;5490:23;5522:31;5547:5;5522:31;:::i;:::-;5572:5;-1:-1:-1;5650:2:40;5635:18;;5622:32;;-1:-1:-1;5753:2:40;5738:18;;5725:32;;-1:-1:-1;5834:2:40;5819:18;;5806:32;5861:18;5850:30;;5847:50;;;5893:1;5890;5883:12;5847:50;5932:70;5994:7;5985:6;5974:9;5970:22;5932:70;:::i;:::-;5232:934;;;;-1:-1:-1;5232:934:40;;;;;6129:3;6114:19;;;6101:33;;5232:934;-1:-1:-1;;;;5232:934:40:o;6171:813::-;6284:6;6292;6300;6308;6316;6369:3;6357:9;6348:7;6344:23;6340:33;6337:53;;;6386:1;6383;6376:12;6337:53;6425:9;6412:23;6444:31;6469:5;6444:31;:::i;:::-;6494:5;-1:-1:-1;6572:2:40;6557:18;;6544:32;;-1:-1:-1;6675:2:40;6660:18;;6647:32;;-1:-1:-1;6756:2:40;6741:18;;6728:32;6783:18;6772:30;;6769:50;;;6815:1;6812;6805:12;6769:50;6854:70;6916:7;6907:6;6896:9;6892:22;6854:70;:::i;:::-;6171:813;;;;-1:-1:-1;6171:813:40;;-1:-1:-1;6943:8:40;;6828:96;6171:813;-1:-1:-1;;;6171:813:40:o;6989:367::-;7057:6;7065;7118:2;7106:9;7097:7;7093:23;7089:32;7086:52;;;7134:1;7131;7124:12;7086:52;7173:9;7160:23;7192:31;7217:5;7192:31;:::i;:::-;7242:5;7320:2;7305:18;;;;7292:32;;-1:-1:-1;;;6989:367:40:o;7361:346::-;7429:6;7437;7490:2;7478:9;7469:7;7465:23;7461:32;7458:52;;;7506:1;7503;7496:12;7458:52;-1:-1:-1;;7551:23:40;;;7671:2;7656:18;;;7643:32;;-1:-1:-1;7361:346:40:o;7712:250::-;7797:1;7807:113;7821:6;7818:1;7815:13;7807:113;;;7897:11;;;7891:18;7878:11;;;7871:39;7843:2;7836:10;7807:113;;;-1:-1:-1;;7954:1:40;7936:16;;7929:27;7712:250::o;7967:396::-;8116:2;8105:9;8098:21;8079:4;8148:6;8142:13;8191:6;8186:2;8175:9;8171:18;8164:34;8207:79;8279:6;8274:2;8263:9;8259:18;8254:2;8246:6;8242:15;8207:79;:::i;:::-;8347:2;8326:15;-1:-1:-1;;8322:29:40;8307:45;;;;8354:2;8303:54;;7967:396;-1:-1:-1;;7967:396:40:o;8715:127::-;8776:10;8771:3;8767:20;8764:1;8757:31;8807:4;8804:1;8797:15;8831:4;8828:1;8821:15;9195:420;9248:3;9286:5;9280:12;9313:6;9308:3;9301:19;9345:4;9340:3;9336:14;9329:21;;9384:4;9377:5;9373:16;9407:1;9417:173;9431:6;9428:1;9425:13;9417:173;;;9492:13;;9480:26;;9535:4;9526:14;;;;9563:17;;;;9453:1;9446:9;9417:173;;;-1:-1:-1;9606:3:40;;9195:420;-1:-1:-1;;;;9195:420:40:o;9620:476::-;9883:6;9872:9;9865:25;9926:6;9921:2;9910:9;9906:18;9899:34;9969:3;9964:2;9953:9;9949:18;9942:31;9846:4;9990:57;10042:3;10031:9;10027:19;10019:6;9990:57;:::i;:::-;9982:65;;10083:6;10078:2;10067:9;10063:18;10056:34;9620:476;;;;;;;:::o;10101:230::-;10171:6;10224:2;10212:9;10203:7;10199:23;10195:32;10192:52;;;10240:1;10237;10230:12;10192:52;-1:-1:-1;10285:16:40;;10101:230;-1:-1:-1;10101:230:40:o;11147:346::-;11349:2;11331:21;;;11388:2;11368:18;;;11361:30;-1:-1:-1;;;11422:2:40;11407:18;;11400:52;11484:2;11469:18;;11147:346::o;12893:127::-;12954:10;12949:3;12945:20;12942:1;12935:31;12985:4;12982:1;12975:15;13009:4;13006:1;12999:15;13025:168;13098:9;;;13129;;13146:15;;;13140:22;;13126:37;13116:71;;13167:18;;:::i;13198:125::-;13263:9;;;13284:10;;;13281:36;;;13297:18;;:::i;13676:331::-;13781:9;13792;13834:8;13822:10;13819:24;13816:44;;;13856:1;13853;13846:12;13816:44;13885:6;13875:8;13872:20;13869:40;;;13905:1;13902;13895:12;13869:40;-1:-1:-1;;13931:23:40;;;13976:25;;;;;-1:-1:-1;13676:331:40:o;17049:587::-;17276:25;;;17337:2;17332;17317:18;;17310:30;;;17356:18;;17349:34;;;-1:-1:-1;;;;;;17395:31:40;;17392:51;;;17439:1;17436;17429:12;17392:51;17473:6;17470:1;17466:14;17531:6;17523;17517:3;17506:9;17502:19;17489:49;17618:2;17603:18;;17596:34;;;;-1:-1:-1;17559:22:40;17583:3;17555:32;;17049:587;-1:-1:-1;;;17049:587:40:o;18058:251::-;18128:6;18181:2;18169:9;18160:7;18156:23;18152:32;18149:52;;;18197:1;18194;18187:12;18149:52;18229:9;18223:16;18248:31;18273:5;18248:31;:::i;19339:128::-;19406:9;;;19427:11;;;19424:37;;;19441:18;;:::i;20508:403::-;20743:6;20732:9;20725:25;20786:6;20781:2;20770:9;20766:18;20759:34;20829:2;20824;20813:9;20809:18;20802:30;20706:4;20849:56;20901:2;20890:9;20886:18;20878:6;20849:56;:::i;20916:343::-;20995:6;21003;21056:2;21044:9;21035:7;21031:23;21027:32;21024:52;;;21072:1;21069;21062:12;21024:52;-1:-1:-1;;21117:16:40;;21223:2;21208:18;;;21202:25;21117:16;;21202:25;;-1:-1:-1;20916:343:40:o;21609:476::-;21872:6;21861:9;21854:25;21915:3;21910:2;21899:9;21895:18;21888:31;21835:4;21936:57;21988:3;21977:9;21973:19;21965:6;21936:57;:::i;:::-;22024:2;22009:18;;22002:34;;;;-1:-1:-1;22067:2:40;22052:18;22045:34;21928:65;21609:476;-1:-1:-1;;21609:476:40:o;22853:388::-;23010:2;22999:9;22992:21;23049:6;23044:2;23033:9;23029:18;23022:34;23106:6;23098;23093:2;23082:9;23078:18;23065:48;23162:1;23133:22;;;23157:2;23129:31;;;23122:42;;;;23225:2;23204:15;;;-1:-1:-1;;23200:29:40;23185:45;23181:54;;22853:388;-1:-1:-1;22853:388:40:o;23246:287::-;23375:3;23413:6;23407:13;23429:66;23488:6;23483:3;23476:4;23468:6;23464:17;23429:66;:::i;:::-;23511:16;;;;;23246:287;-1:-1:-1;;23246:287:40:o;23884:404::-;23968:6;23976;24029:2;24017:9;24008:7;24004:23;24000:32;23997:52;;;24045:1;24042;24035:12;23997:52;24084:9;24071:23;24103:31;24128:5;24103:31;:::i;:::-;24153:5;-1:-1:-1;24210:2:40;24195:18;;24182:32;24223:33;24182:32;24223:33;:::i;25057:375::-;25145:1;25163:5;25177:249;25198:1;25188:8;25185:15;25177:249;;;25248:4;25243:3;25239:14;25233:4;25230:24;25227:50;;;25257:18;;:::i;:::-;25307:1;25297:8;25293:16;25290:49;;;25321:16;;;;25290:49;25404:1;25400:16;;;;;25360:15;;25177:249;;;25057:375;;;;;;:::o;25437:902::-;25486:5;25516:8;25506:80;;-1:-1:-1;25557:1:40;25571:5;;25506:80;25605:4;25595:76;;-1:-1:-1;25642:1:40;25656:5;;25595:76;25687:4;25705:1;25700:59;;;;25773:1;25768:174;;;;25680:262;;25700:59;25730:1;25721:10;;25744:5;;;25768:174;25805:3;25795:8;25792:17;25789:43;;;25812:18;;:::i;:::-;-1:-1:-1;;25868:1:40;25854:16;;25927:5;;25680:262;;26026:2;26016:8;26013:16;26007:3;26001:4;25998:13;25994:36;25988:2;25978:8;25975:16;25970:2;25964:4;25961:12;25957:35;25954:77;25951:203;;;-1:-1:-1;26063:19:40;;;26139:5;;25951:203;26186:42;-1:-1:-1;;26211:8:40;26205:4;26186:42;:::i;:::-;26264:6;26260:1;26256:6;26252:19;26243:7;26240:32;26237:58;;;26275:18;;:::i;:::-;26313:20;;25437:902;-1:-1:-1;;;25437:902:40:o;26344:131::-;26404:5;26433:36;26460:8;26454:4;26433:36;:::i;26480:127::-;26541:10;26536:3;26532:20;26529:1;26522:31;26572:4;26569:1;26562:15;26596:4;26593:1;26586:15;26612:332;26819:6;26808:9;26801:25;26862:2;26857;26846:9;26842:18;26835:30;26782:4;26882:56;26934:2;26923:9;26919:18;26911:6;26882:56;:::i;26949:179::-;26984:3;27026:1;27008:16;27005:23;27002:120;;;27072:1;27069;27066;27051:23;-1:-1:-1;27109:1:40;27103:8;27098:3;27094:18;27002:120;26949:179;:::o;27133:346::-;27243:2;27224:13;;-1:-1:-1;;27220:27:40;27208:40;;27278:18;27263:34;;27299:22;;;27260:62;27257:185;;;27364:10;27359:3;27355:20;27352:1;27345:31;27399:4;27396:1;27389:15;27427:4;27424:1;27417:15;27257:185;27458:2;27451:22;-1:-1:-1;;27133:346:40:o;27484:628::-;27523:3;27565:4;27547:16;27544:26;27541:39;;;27484:628;:::o;27541:39::-;27607:2;27601:9;27647:16;-1:-1:-1;;27643:29:40;27640:1;27601:9;27619:54;27702:4;27696:11;27776:16;27769:4;27761:6;27757:17;27754:39;27733:18;27725:6;27722:30;27719:75;27716:88;;;27797:5;;27484:628;:::o;27716:88::-;27834:6;27828:4;27824:17;27870:3;27864:10;27897:18;27889:6;27886:30;27883:43;;;27919:5;;;;27484:628;:::o;27883:43::-;27984:16;27974:27;;-1:-1:-1;;27970:40:40;27945:16;;;27963:4;27941:27;27938:73;27935:86;;;28014:5;;;;27484:628;:::o;27935:86::-;28030:57;28081:4;28072:6;28064;28060:19;28056:30;28050:4;28030:57;:::i;:::-;-1:-1:-1;28103:3:40;27484:628;-1:-1:-1;;;27484:628:40:o;31131:217::-;31171:1;31197;31187:132;;31241:10;31236:3;31232:20;31229:1;31222:31;31276:4;31273:1;31266:15;31304:4;31301:1;31294:15;31187:132;-1:-1:-1;31333:9:40;;31131:217::o;31693:821::-;32104:25;32099:3;32092:38;32074:3;32159:6;32153:13;32175:75;32243:6;32238:2;32233:3;32229:12;32222:4;32214:6;32210:17;32175:75;:::i;:::-;-1:-1:-1;;;32309:2:40;32269:16;;;32301:11;;;32294:40;32359:13;;32381:76;32359:13;32443:2;32435:11;;32428:4;32416:17;;32381:76;:::i;:::-;32481:17;32473:35;;;;-1:-1:-1;;;;31693:821:40:o;32798:136::-;32837:3;32865:5;32855:39;;32874:18;;:::i;:::-;-1:-1:-1;;;32910:18:40;;32798:136::o", + "linkReferences": {}, + "immutableReferences": { + "26": [{ "start": 13360, "length": 32 }], + "4409": [{ "start": 3925, "length": 32 }], + "4878": [{ "start": 4373, "length": 32 }] + } + }, + "methodIdentifiers": { + "assignLegacyProxyGovernor(address)": "284b920e", + "checkDeploymentStatus(address)": "d12fc182", + "deactivate(address)": "3ea053eb", + "deposit(address,uint256,uint256)": "0efe6a8b", + "deposit(uint256,uint256)": "e2bbb158", + "depositCancelRequest(address,uint256,uint256,uint256)": "a6d1d6c6", + "depositReclaim(address,uint256,uint256,uint256)": "23205c52", + "depositWithMessage(address,uint256,uint256,uint256[])": "be58b18e", + "depositWithMessageCancelRequest(address,uint256,uint256,uint256[],uint256)": "cf50fd1c", + "depositWithMessageReclaim(address,uint256,uint256,uint256[],uint256)": "b5cd0c3c", + "disableWithdrawalLimit(address)": "5a72af89", + "enableWithdrawalLimit(address)": "14af98b3", + "enrollToken(address)": "ad8b92b4", + "estimateDepositFeeWei()": "af8bc15e", + "estimateEnrollmentFeeWei()": "4d8b92a5", + "getMaxTotalBalance(address)": "4baf43da", + "getRemainingIntradayAllowance(address)": "496ae54c", + "getStatus(address)": "30ccebb5", + "identify()": "eeb72866", + "initialize(bytes)": "439fab91", + "isAppGovernor(address)": "5a5d1bb9", + "isAppRoleAdmin(address)": "8e5224ff", + "isFrozen()": "33eeb147", + "isGovernanceAdmin(address)": "cb1cccce", + "isOperator(address)": "6d70f7ae", + "isSecurityAdmin(address)": "d08fb6cb", + "isSecurityAgent(address)": "757bd9ab", + "isServicingToken(address)": "0c6f8664", + "isTokenAdmin(address)": "a2bdde3d", + "isUpgradeGovernor(address)": "6c04d9d5", + "legacyDepositCancelRequest(uint256,uint256,uint256)": "6ffed68b", + "legacyDepositReclaim(uint256,uint256,uint256)": "7d22dbc7", + "maxDeposit()": "6083e59a", + "maxTotalBalance()": "19534075", + "registerAppGovernor(address)": "cdd1f70d", + "registerAppRoleAdmin(address)": "17896383", + "registerGovernanceAdmin(address)": "9463629a", + "registerOperator(address)": "3682a450", + "registerSecurityAdmin(address)": "62a14376", + "registerSecurityAgent(address)": "0e770f23", + "registerTokenAdmin(address)": "0b3a2d21", + "registerUpgradeGovernor(address)": "6fc97cbf", + "removeLegacyProxyGovernor(address)": "c1f5eb3a", + "renounceRole(bytes32,address)": "36568abe", + "revokeAppGovernor(address)": "deec9c5a", + "revokeAppRoleAdmin(address)": "2f951985", + "revokeGovernanceAdmin(address)": "ee0e6807", + "revokeOperator(address)": "fad8b32a", + "revokeSecurityAdmin(address)": "8101b64c", + "revokeSecurityAgent(address)": "d9fa7091", + "revokeTokenAdmin(address)": "fa0f73ba", + "revokeUpgradeGovernor(address)": "ed9ef16a", + "setL2TokenBridge(uint256)": "7fc2ab3e", + "setMaxTotalBalance(address,uint256)": "d2b51eea", + "withdraw(address,uint256)": "f3fef3a3", + "withdraw(address,uint256,address)": "69328dec", + "withdraw(uint256)": "2e1a7d4d", + "withdraw(uint256,address)": "00f714ce" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"DepositCancelRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"DepositReclaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"message\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"DepositWithMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"message\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"DepositWithMessageCancelRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"message\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"DepositWithMessageReclaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"LogDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"LogDepositCancelRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"LogDepositReclaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"acceptedGovernor\",\"type\":\"address\"}],\"name\":\"LogNewGovernorAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"removedGovernor\",\"type\":\"address\"}],\"name\":\"LogRemovedGovernor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SetL2TokenBridge\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SetMaxTotalBalance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"deploymentMsgHash\",\"type\":\"bytes32\"}],\"name\":\"TokenEnrollmentInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"WithdrawalLimitDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"WithdrawalLimitEnabled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"assignLegacyProxyGovernor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"checkDeploymentStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"deactivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"depositCancelRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"depositReclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"message\",\"type\":\"uint256[]\"}],\"name\":\"depositWithMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"message\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"depositWithMessageCancelRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"message\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"depositWithMessageReclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"disableWithdrawalLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"enableWithdrawalLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"enrollToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"estimateDepositFeeWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"estimateEnrollmentFeeWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getMaxTotalBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getRemainingIntradayAllowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getStatus\",\"outputs\":[{\"internalType\":\"enum StarknetTokenStorage.TokenStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identify\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAppGovernor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAppRoleAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isFrozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isGovernanceAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSecurityAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSecurityAgent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isServicingToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isTokenAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isUpgradeGovernor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"legacyDepositCancelRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Recipient\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"legacyDepositReclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTotalBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"registerAppGovernor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"registerAppRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"registerGovernanceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"registerSecurityAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"registerSecurityAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"registerTokenAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"registerUpgradeGovernor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeLegacyProxyGovernor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAppGovernor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAppRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeGovernanceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeSecurityAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeSecurityAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeTokenAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeUpgradeGovernor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l2TokenBridge_\",\"type\":\"uint256\"}],\"name\":\"setL2TokenBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxTotalBalance_\",\"type\":\"uint256\"}],\"name\":\"setMaxTotalBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"deactivate(address)\":{\"params\":{\"token\":\"The address of the token contract to be deactivated. No return value, but it updates the token's status to 'Deactivated'. Emits a `TokenDeactivated` event when the deactivation is successful. Throws an error if the token is not enrolled or if the sender is not the manager.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkDeploymentStatus(address)\":{\"notice\":\"Checks token deployment status. Relies on Starknet clearing L1-L2 message upon successful completion of deployment. Processing: Check the l1-l2 deployment message. Set status to `active` If consumed. If not consumed after the expected duration, it returns the status to unknown.\"},\"deactivate(address)\":{\"notice\":\"Deactivates a token in the system. This function is used to deactivate a token that was previously enrolled. Only the manager, who initiated the enrollment, can call this function.\"},\"deposit(uint256,uint256)\":{\"notice\":\"Support Legacy ABI.\"},\"disableWithdrawalLimit(address)\":{\"notice\":\"Unset withdrawal limit for a token.\"},\"enableWithdrawalLimit(address)\":{\"notice\":\"Set withdrawal limit for a token.\"},\"getRemainingIntradayAllowance(address)\":{\"notice\":\"Returns the remaining amount of withdrawal allowed for this day. If the daily allowance was not yet set, it is calculated and returned. If the withdraw limit is not enabled for that token - the uint256.max is returned.\"},\"isServicingToken(address)\":{\"notice\":\"Checks whether the calling contract is providing a service for the specified token. Returns True if the calling contract is providing a service for the token, otherwise false.\"},\"setMaxTotalBalance(address,uint256)\":{\"notice\":\"Set the maximum allowed balance of the bridge. Note: It is possible to set a lower value than the current total balance. In this case, deposits will not be possible, until enough withdrawls are done, such that the total balance is below the limit.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/solidity/StarknetEthBridge.sol\":\"StarknetEthBridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/solidity/Fees.sol\":{\"keccak256\":\"0x6fa10e28a17e78b1465187c9104996abb06b31174fc1eac497e70a150522c63b\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://20948960e5b633ca1db0fccf80de4428278cfae251c203a77a06d4e71bdf618f\",\"dweb:/ipfs/QmT8eEz1bBKDZe7CW7C9PXPU7WDzu29tnWM53K1X9kNupj\"]},\"src/solidity/IStarkgateBridge.sol\":{\"keccak256\":\"0xaf3121a6b46e199a684bcba5a1b43d26167f67454d70bb58cec9ccb9cd831878\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://6e21adb919d6340cd68fa9199c6b54fb209a9ecf8de4ab2918a693313b9aa004\",\"dweb:/ipfs/QmaWoVA3EXV8sSFK5k3ZqDoBYutRpATzPzenH39GZHBqGn\"]},\"src/solidity/IStarkgateManager.sol\":{\"keccak256\":\"0x922e8c094ca384f808971ce133383a1f09a08a407ff9d42390f997c23b92e54c\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://9bcf0a975b59d420a33d66e9ee2148c5a87a5ed717cb8087610750d176fd39d8\",\"dweb:/ipfs/Qmf8nCJwwNN1pSB53wpV6hQzZdyNZtdgBuFt4y6JYX9PuT\"]},\"src/solidity/IStarkgateRegistry.sol\":{\"keccak256\":\"0xb57d52b80f0088308e988f56d04b02f139baae0f4cddfda371413beaf785fca2\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://15e6bff9a16f9a3af5f2fcb4e4a863653e1bc16597f18800b0c4af2e75e73172\",\"dweb:/ipfs/QmZ8uGovu7FcfepY3ZxkYUwbx49mogvGLp72XgUb8i3hv7\"]},\"src/solidity/IStarkgateService.sol\":{\"keccak256\":\"0xd867557468c043dbf6be2a2f98226964338258d108e55481202802311e122da8\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://6db7ee4ebdc4765a12589afb705aea612126b84bae58cb8453568bd12e090946\",\"dweb:/ipfs/QmXYxCtSSfYsxa9uiV1HKFX7puutZ2k2Zm3aCcgGZ5Frmx\"]},\"src/solidity/LegacyBridge.sol\":{\"keccak256\":\"0x5515bcee58bcb24131480fdc2e6dd0e92554e70fea4e896d3d8b7367d4ff8a0d\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://d14874daf1e471f64af57db5c2fe9f962ed5744907b587b3b5a3257684792281\",\"dweb:/ipfs/QmQYsPT7p9z2DHW1LWwjjLPD3exmEEi7W3AqxwxfErdNr2\"]},\"src/solidity/StarkgateConstants.sol\":{\"keccak256\":\"0x186842131c4c91bc58a6930491fa5619f76cd04d8ba43af9a5888ba21111d642\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://227e204f799af5d6bf452f173270b64c0be880a27d25f82afbddce3f9833e94c\",\"dweb:/ipfs/QmTk93uaih5Qx7KYDK6Fdh9qPeNiWMNkFFHmL98dKP29Qx\"]},\"src/solidity/StarkgateManager.sol\":{\"keccak256\":\"0x547e201622f2d7dc733e74aed2d0a3a6755f021fa047e91a2adb1ae51aad1927\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://3b8694c133d78305a6465075f39957c4ca851774569b0414d6768a29d0bcd975\",\"dweb:/ipfs/QmeS9S5fmjWzZ8EU9MnkyvuDUsy3YFbnBSam3DaLotU97X\"]},\"src/solidity/StarknetEthBridge.sol\":{\"keccak256\":\"0x6d7c4a98020111522724e8ef4bfc68c49301713222c7b8aaedf8b30eebf77c1c\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://7bd34161d37559d265e21b33c14c77a61593378985951457052dc158032159cf\",\"dweb:/ipfs/QmWvNbMq8yV6nmdheTvLfbNJBUX6dbpBuK8QCwShcuk63p\"]},\"src/solidity/StarknetTokenBridge.sol\":{\"keccak256\":\"0x9ed45c3f13d5afeae5a10c63e6dbaf23c6e80c3dc27f8a1290df23e345cbdb13\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://fe75594073da091d7d9380ed5f326b3af1d888eefd22e426635823c187de475d\",\"dweb:/ipfs/QmUqf3kCWaAFzov1kp1Z2YyEqboAqipTzokaimbzFhAxjs\"]},\"src/solidity/StarknetTokenStorage.sol\":{\"keccak256\":\"0xcdcd69d9ff44db4e7a564cb22d6d5ff571f85448785b6712b8edadfc698a1582\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://64f99efd55def7799ada9d6243d00c37007f9573a5ef1e627d830a94d7a33a52\",\"dweb:/ipfs/QmTYGH8AfSDCDnKm9DNuwZXeKTZH4jrtAondVqA8Nmv7AQ\"]},\"src/solidity/WithdrawalLimit.sol\":{\"keccak256\":\"0x873fabcb885ffbb2228b8cc742485718d0fc3d773bfa86334b2146418bc3bb56\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://677065f504fda831def60b0bd8b9d05676cb38f858f11230a482bfa2ca148ad6\",\"dweb:/ipfs/QmPGm9f7kjEX8W1VbZYtj3pXPZj6MgWFEfKY9jX4c8651h\"]},\"src/solidity/utils/Felt252.sol\":{\"keccak256\":\"0x6086a12a4bcb59a3386630e9661a5720f4821169630e01c7287d014f0194a7f8\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://12f16a493c1f91c3ec93c53c3ce4bdb46766ca6e1d425d65bf449d09068742d0\",\"dweb:/ipfs/Qma7yEFLywp53jKCBX1HyKYYL4YJesptVn3zfFcSEX7Y4h\"]},\"starkware/cairo/eth/CairoConstants.sol\":{\"keccak256\":\"0x57c804ac02eda4fb9f9b345a1c088e8a8276e2cfd36ffe6e9878856fe8c12bef\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://916e5076db8f5cf552ce6cf46911ae817d245a704be2815167dc62ffb2b6eddb\",\"dweb:/ipfs/Qme5Wnz1iLGpi9WSnEUb2MAWmXZYrKwPFHarE7VQJr742E\"]},\"starkware/solidity/components/OverrideLegacyProxyGovernance.sol\":{\"keccak256\":\"0xe5c781cda3854d2149f864cde9e1f57cec21d4ca846a740d73607ad9e66ebc38\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://bdfed281750a944cff217e64c85ff6991d901e19dac54455e697ade600a6f37f\",\"dweb:/ipfs/QmW5sYbkrxnYxWyP4wFz7mJkQVPMCVh1KjUG51TBUUHFVw\"]},\"starkware/solidity/components/Roles.sol\":{\"keccak256\":\"0xfb44a782d25daf9906eed2bf0b851297a44236f959327f3cbaf872957e0df7cf\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://964f3947cbf5b5a5bdad8de12cd3dd7a8a834b576fac1b1cb35cb7fc6ade76c3\",\"dweb:/ipfs/QmfMqnZ4f6DJALUrYMzvxYv3T6nCnxiXXcm6vcYV841dbv\"]},\"starkware/solidity/interfaces/BlockDirectCall.sol\":{\"keccak256\":\"0x7515367c6834021f1c29ae9cc217d2cf8b9af394e17f9772a82b33865e71d6a6\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://3b7078e5b739b2d551c790d154a8b99e9fdc9407046b21b8e93c0a91415f3af3\",\"dweb:/ipfs/QmW5kYo5wMkEqcgSJGUVeP28qXMZPVcE6ZnopmhEf1irsS\"]},\"starkware/solidity/interfaces/ContractInitializer.sol\":{\"keccak256\":\"0x5c04c50115659d88f74c4a3bb27af15b9f4d302be78a057b0c092e7c065ab36a\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://45ad3e4b332ba7e99855ab84ef539c106021d0a2a45253e4cb2ab045aba81fa6\",\"dweb:/ipfs/QmVWoh7scguCuzB5YgzujC2cWMA3priCn6RNZmasCNwGv7\"]},\"starkware/solidity/interfaces/Identity.sol\":{\"keccak256\":\"0x18b8ab7a912a2fca2567ad2adc811d9ed9123d5b2a8bdda77741581c2f7c9a08\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://cf3cc21679c63e2e5481c0ceeba85a476ba10d11fd942e9f149ccbe4a1ee2888\",\"dweb:/ipfs/QmUdC8rH8JX6ZSJ6ddF77hJADRJCbjLjVee92E7ZmagxHh\"]},\"starkware/solidity/interfaces/ProxySupport.sol\":{\"keccak256\":\"0x438167266a83e218bab512a996f5d30e3071dc552d407a8ab600511b4975c01a\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://2f998adb2dff0baef1dfa08b6d6cd35248246cda7334598d8c2c24fc835073c6\",\"dweb:/ipfs/QmX7t9h2aLu9HiEN371ipyrGSm6qW2EyrKbPhCWAimmmQ4\"]},\"starkware/solidity/libraries/AccessControl.sol\":{\"keccak256\":\"0x3b5af42da4adb23a3c56d62968b2a0058650c3f19c4ec0323f8c3958a02f2d32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cb26cce13390c59767822b9b317505757ee2438b7a1481fb4ee0435cf98b074\",\"dweb:/ipfs/QmdULczhMowp2aCJSt7z4KQGrMjPzEZjGU4YyqEemwM22e\"]},\"starkware/solidity/libraries/Addresses.sol\":{\"keccak256\":\"0xf10c7ae374d9fa0599e2ee71ffaf882a96befca2793dbb600bfd080bae9f6179\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://4d490f6daab8d654021f912d1fe3f676fb77fa15117ac706a8024d192047dc89\",\"dweb:/ipfs/QmYmYtGkzDvTxodvUXobWqwQZoppN4iYM1ATD7aSEhzgzS\"]},\"starkware/solidity/libraries/NamedStorage.sol\":{\"keccak256\":\"0x73e777cd0ae5f60889e4784b788c345bc3a3edc6a7ec3eab636b3701f2a1f66e\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://979e827ca68e8b00e8598cd67d0de96f10b5cb03197870e1f9a871533ca84e4a\",\"dweb:/ipfs/QmPjoWoRTBRiVnNJ576hCuqr3UVoGomDmSdipFKoUZUpJi\"]},\"starkware/solidity/libraries/RolesLib.sol\":{\"keccak256\":\"0x2497bfb416c91633e1f373de9dbdbd85bd8cdb3d36a74df941ad392d8036a8c0\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://7fd51947b57ca6ecf0c4d433def5b8793213d5c281dea1b2145bb13e6be483bb\",\"dweb:/ipfs/QmXFCfdQJ9SsoMxbLXPMRkiC6jqmddnsn4T7KXs4fcdweL\"]},\"starkware/solidity/libraries/Transfers.sol\":{\"keccak256\":\"0x596ec057b47f24b7776a71a2de0100078c1fbb18d2762cb2501236e79b1331ef\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://e595e54d35bd5ad0fbda03b7b105626b8b2a93fe4ee37f158070931e935b16b6\",\"dweb:/ipfs/QmUKYd6GF5YaYWENtZo8NmBcYKuN4svuwyeVxA2CShXYji\"]},\"starkware/solidity/tokens/ERC20/IERC20.sol\":{\"keccak256\":\"0x04bae6eb13e8755ac10de0b0549806dadc167f4e22054f065478dda5bb5635f4\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://b097f7cffcdd93ab330be7751bfad246d0d47c63ae0e3a3215b031895c821a68\",\"dweb:/ipfs/QmVZRaTM2vopCZSskT2UMWLPkPQpiYYkRjgDNurrJAMuve\"]},\"starkware/solidity/tokens/ERC20/IERC20Metadata.sol\":{\"keccak256\":\"0x88b3f63040f3cc91d897fb09469ab21cd61388f4861d2e4bc4758d01f8339282\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://b359ecd6460824213331e699bf0a70ab72ab9ffd03527a97c5669282a159551a\",\"dweb:/ipfs/QmPPuhpDVGaeFSqoJTxn2k5bDU9agwbnbo5qx99ApGB2BX\"]},\"starkware/starknet/solidity/IStarknetMessaging.sol\":{\"keccak256\":\"0x0b5ad38d2ffea6fdc5dc39d9340871f06c98c56c3faa276f92a542690b57cf64\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://9e28c6d7e599915e824ae100975b20174f5fa168904c81c0305facfd3f4f7651\",\"dweb:/ipfs/QmWiRdEkNDyKwigTiXkNbYpTkLj5WUEVo5TLgtfeeSEhmp\"]},\"starkware/starknet/solidity/IStarknetMessagingEvents.sol\":{\"keccak256\":\"0x2f455c3c28792bded72e19d0c1a21af7459b66d6071c3d996f6259c93f096424\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://95302fc273848d1c795344d6e6184c2def7866da81d563ae9ae9b3e9d8fcf7e7\",\"dweb:/ipfs/QmaHb55eq8Su9gEtqe3XbiyQkuf1Pk7CwKJkF9CXYbRrFN\"]},\"third_party/open_zeppelin/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]}},\"version\":1}", + "metadata": { + "compiler": { "version": "0.8.27+commit.40a35a09" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Deposit", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "DepositCancelRequest", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "DepositReclaimed", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256[]", + "name": "message", + "type": "uint256[]", + "indexed": false + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "DepositWithMessage", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256[]", + "name": "message", + "type": "uint256[]", + "indexed": false + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "DepositWithMessageCancelRequest", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256[]", + "name": "message", + "type": "uint256[]", + "indexed": false + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "DepositWithMessageReclaimed", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "LogDeposit", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "LogDepositCancelRequest", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "LogDepositReclaimed", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "acceptedGovernor", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "LogNewGovernorAccepted", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "removedGovernor", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "LogRemovedGovernor", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "RoleAdminChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "RoleGranted", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "RoleRevoked", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "SetL2TokenBridge", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "SetMaxTotalBalance", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "TokenDeactivated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": false + }, + { + "internalType": "bytes32", + "name": "deploymentMsgHash", + "type": "bytes32", + "indexed": false + } + ], + "type": "event", + "name": "TokenEnrollmentInitiated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Withdrawal", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "WithdrawalLimitDisabled", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "token", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "WithdrawalLimitEnabled", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "assignLegacyProxyGovernor" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "checkDeploymentStatus" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "deactivate" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "deposit" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "deposit" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "depositCancelRequest" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "depositReclaim" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "message", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "depositWithMessage" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "message", + "type": "uint256[]" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "depositWithMessageCancelRequest" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "message", + "type": "uint256[]" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "depositWithMessageReclaim" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "disableWithdrawalLimit" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "enableWithdrawalLimit" + }, + { + "inputs": [ + { "internalType": "address", "name": "", "type": "address" } + ], + "stateMutability": "payable", + "type": "function", + "name": "enrollToken" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "estimateDepositFeeWei", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "estimateEnrollmentFeeWei", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "getMaxTotalBalance", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "getRemainingIntradayAllowance", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "getStatus", + "outputs": [ + { + "internalType": "enum StarknetTokenStorage.TokenStatus", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "identify", + "outputs": [ + { "internalType": "string", "name": "", "type": "string" } + ] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "data", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "initialize" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isAppGovernor", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isAppRoleAdmin", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "isFrozen", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isGovernanceAdmin", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isOperator", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isSecurityAdmin", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isSecurityAgent", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isServicingToken", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isTokenAdmin", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isUpgradeGovernor", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "legacyDepositCancelRequest" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "uint256", + "name": "l2Recipient", + "type": "uint256" + }, + { "internalType": "uint256", "name": "nonce", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "legacyDepositReclaim" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "maxDeposit", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "maxTotalBalance", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerAppGovernor" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerAppRoleAdmin" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerGovernanceAdmin" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerOperator" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerSecurityAdmin" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerSecurityAgent" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerTokenAdmin" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerUpgradeGovernor" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "removeLegacyProxyGovernor" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "role", "type": "bytes32" }, + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceRole" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeAppGovernor" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeAppRoleAdmin" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeGovernanceAdmin" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeOperator" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeSecurityAdmin" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeSecurityAgent" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeTokenAdmin" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeUpgradeGovernor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "l2TokenBridge_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setL2TokenBridge" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { + "internalType": "uint256", + "name": "maxTotalBalance_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setMaxTotalBalance" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "deactivate(address)": { + "params": { + "token": "The address of the token contract to be deactivated. No return value, but it updates the token's status to 'Deactivated'. Emits a `TokenDeactivated` event when the deactivation is successful. Throws an error if the token is not enrolled or if the sender is not the manager." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "checkDeploymentStatus(address)": { + "notice": "Checks token deployment status. Relies on Starknet clearing L1-L2 message upon successful completion of deployment. Processing: Check the l1-l2 deployment message. Set status to `active` If consumed. If not consumed after the expected duration, it returns the status to unknown." + }, + "deactivate(address)": { + "notice": "Deactivates a token in the system. This function is used to deactivate a token that was previously enrolled. Only the manager, who initiated the enrollment, can call this function." + }, + "deposit(uint256,uint256)": { "notice": "Support Legacy ABI." }, + "disableWithdrawalLimit(address)": { + "notice": "Unset withdrawal limit for a token." + }, + "enableWithdrawalLimit(address)": { + "notice": "Set withdrawal limit for a token." + }, + "getRemainingIntradayAllowance(address)": { + "notice": "Returns the remaining amount of withdrawal allowed for this day. If the daily allowance was not yet set, it is calculated and returned. If the withdraw limit is not enabled for that token - the uint256.max is returned." + }, + "isServicingToken(address)": { + "notice": "Checks whether the calling contract is providing a service for the specified token. Returns True if the calling contract is providing a service for the token, otherwise false." + }, + "setMaxTotalBalance(address,uint256)": { + "notice": "Set the maximum allowed balance of the bridge. Note: It is possible to set a lower value than the current total balance. In this case, deposits will not be possible, until enough withdrawls are done, such that the total balance is below the limit." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "ds-test/=lib/forge-std/lib/ds-test/src/", + "forge-std/=lib/forge-std/src/" + ], + "optimizer": { "enabled": true, "runs": 200 }, + "metadata": { "bytecodeHash": "ipfs" }, + "compilationTarget": { + "src/solidity/StarknetEthBridge.sol": "StarknetEthBridge" + }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "src/solidity/Fees.sol": { + "keccak256": "0x6fa10e28a17e78b1465187c9104996abb06b31174fc1eac497e70a150522c63b", + "urls": [ + "bzz-raw://20948960e5b633ca1db0fccf80de4428278cfae251c203a77a06d4e71bdf618f", + "dweb:/ipfs/QmT8eEz1bBKDZe7CW7C9PXPU7WDzu29tnWM53K1X9kNupj" + ], + "license": "Apache-2.0." + }, + "src/solidity/IStarkgateBridge.sol": { + "keccak256": "0xaf3121a6b46e199a684bcba5a1b43d26167f67454d70bb58cec9ccb9cd831878", + "urls": [ + "bzz-raw://6e21adb919d6340cd68fa9199c6b54fb209a9ecf8de4ab2918a693313b9aa004", + "dweb:/ipfs/QmaWoVA3EXV8sSFK5k3ZqDoBYutRpATzPzenH39GZHBqGn" + ], + "license": "Apache-2.0." + }, + "src/solidity/IStarkgateManager.sol": { + "keccak256": "0x922e8c094ca384f808971ce133383a1f09a08a407ff9d42390f997c23b92e54c", + "urls": [ + "bzz-raw://9bcf0a975b59d420a33d66e9ee2148c5a87a5ed717cb8087610750d176fd39d8", + "dweb:/ipfs/Qmf8nCJwwNN1pSB53wpV6hQzZdyNZtdgBuFt4y6JYX9PuT" + ], + "license": "Apache-2.0." + }, + "src/solidity/IStarkgateRegistry.sol": { + "keccak256": "0xb57d52b80f0088308e988f56d04b02f139baae0f4cddfda371413beaf785fca2", + "urls": [ + "bzz-raw://15e6bff9a16f9a3af5f2fcb4e4a863653e1bc16597f18800b0c4af2e75e73172", + "dweb:/ipfs/QmZ8uGovu7FcfepY3ZxkYUwbx49mogvGLp72XgUb8i3hv7" + ], + "license": "Apache-2.0." + }, + "src/solidity/IStarkgateService.sol": { + "keccak256": "0xd867557468c043dbf6be2a2f98226964338258d108e55481202802311e122da8", + "urls": [ + "bzz-raw://6db7ee4ebdc4765a12589afb705aea612126b84bae58cb8453568bd12e090946", + "dweb:/ipfs/QmXYxCtSSfYsxa9uiV1HKFX7puutZ2k2Zm3aCcgGZ5Frmx" + ], + "license": "Apache-2.0." + }, + "src/solidity/LegacyBridge.sol": { + "keccak256": "0x5515bcee58bcb24131480fdc2e6dd0e92554e70fea4e896d3d8b7367d4ff8a0d", + "urls": [ + "bzz-raw://d14874daf1e471f64af57db5c2fe9f962ed5744907b587b3b5a3257684792281", + "dweb:/ipfs/QmQYsPT7p9z2DHW1LWwjjLPD3exmEEi7W3AqxwxfErdNr2" + ], + "license": "Apache-2.0." + }, + "src/solidity/StarkgateConstants.sol": { + "keccak256": "0x186842131c4c91bc58a6930491fa5619f76cd04d8ba43af9a5888ba21111d642", + "urls": [ + "bzz-raw://227e204f799af5d6bf452f173270b64c0be880a27d25f82afbddce3f9833e94c", + "dweb:/ipfs/QmTk93uaih5Qx7KYDK6Fdh9qPeNiWMNkFFHmL98dKP29Qx" + ], + "license": "Apache-2.0." + }, + "src/solidity/StarkgateManager.sol": { + "keccak256": "0x547e201622f2d7dc733e74aed2d0a3a6755f021fa047e91a2adb1ae51aad1927", + "urls": [ + "bzz-raw://3b8694c133d78305a6465075f39957c4ca851774569b0414d6768a29d0bcd975", + "dweb:/ipfs/QmeS9S5fmjWzZ8EU9MnkyvuDUsy3YFbnBSam3DaLotU97X" + ], + "license": "Apache-2.0." + }, + "src/solidity/StarknetEthBridge.sol": { + "keccak256": "0x6d7c4a98020111522724e8ef4bfc68c49301713222c7b8aaedf8b30eebf77c1c", + "urls": [ + "bzz-raw://7bd34161d37559d265e21b33c14c77a61593378985951457052dc158032159cf", + "dweb:/ipfs/QmWvNbMq8yV6nmdheTvLfbNJBUX6dbpBuK8QCwShcuk63p" + ], + "license": "Apache-2.0." + }, + "src/solidity/StarknetTokenBridge.sol": { + "keccak256": "0x9ed45c3f13d5afeae5a10c63e6dbaf23c6e80c3dc27f8a1290df23e345cbdb13", + "urls": [ + "bzz-raw://fe75594073da091d7d9380ed5f326b3af1d888eefd22e426635823c187de475d", + "dweb:/ipfs/QmUqf3kCWaAFzov1kp1Z2YyEqboAqipTzokaimbzFhAxjs" + ], + "license": "Apache-2.0." + }, + "src/solidity/StarknetTokenStorage.sol": { + "keccak256": "0xcdcd69d9ff44db4e7a564cb22d6d5ff571f85448785b6712b8edadfc698a1582", + "urls": [ + "bzz-raw://64f99efd55def7799ada9d6243d00c37007f9573a5ef1e627d830a94d7a33a52", + "dweb:/ipfs/QmTYGH8AfSDCDnKm9DNuwZXeKTZH4jrtAondVqA8Nmv7AQ" + ], + "license": "Apache-2.0." + }, + "src/solidity/WithdrawalLimit.sol": { + "keccak256": "0x873fabcb885ffbb2228b8cc742485718d0fc3d773bfa86334b2146418bc3bb56", + "urls": [ + "bzz-raw://677065f504fda831def60b0bd8b9d05676cb38f858f11230a482bfa2ca148ad6", + "dweb:/ipfs/QmPGm9f7kjEX8W1VbZYtj3pXPZj6MgWFEfKY9jX4c8651h" + ], + "license": "Apache-2.0." + }, + "src/solidity/utils/Felt252.sol": { + "keccak256": "0x6086a12a4bcb59a3386630e9661a5720f4821169630e01c7287d014f0194a7f8", + "urls": [ + "bzz-raw://12f16a493c1f91c3ec93c53c3ce4bdb46766ca6e1d425d65bf449d09068742d0", + "dweb:/ipfs/Qma7yEFLywp53jKCBX1HyKYYL4YJesptVn3zfFcSEX7Y4h" + ], + "license": "Apache-2.0." + }, + "starkware/cairo/eth/CairoConstants.sol": { + "keccak256": "0x57c804ac02eda4fb9f9b345a1c088e8a8276e2cfd36ffe6e9878856fe8c12bef", + "urls": [ + "bzz-raw://916e5076db8f5cf552ce6cf46911ae817d245a704be2815167dc62ffb2b6eddb", + "dweb:/ipfs/Qme5Wnz1iLGpi9WSnEUb2MAWmXZYrKwPFHarE7VQJr742E" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/components/OverrideLegacyProxyGovernance.sol": { + "keccak256": "0xe5c781cda3854d2149f864cde9e1f57cec21d4ca846a740d73607ad9e66ebc38", + "urls": [ + "bzz-raw://bdfed281750a944cff217e64c85ff6991d901e19dac54455e697ade600a6f37f", + "dweb:/ipfs/QmW5sYbkrxnYxWyP4wFz7mJkQVPMCVh1KjUG51TBUUHFVw" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/components/Roles.sol": { + "keccak256": "0xfb44a782d25daf9906eed2bf0b851297a44236f959327f3cbaf872957e0df7cf", + "urls": [ + "bzz-raw://964f3947cbf5b5a5bdad8de12cd3dd7a8a834b576fac1b1cb35cb7fc6ade76c3", + "dweb:/ipfs/QmfMqnZ4f6DJALUrYMzvxYv3T6nCnxiXXcm6vcYV841dbv" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/interfaces/BlockDirectCall.sol": { + "keccak256": "0x7515367c6834021f1c29ae9cc217d2cf8b9af394e17f9772a82b33865e71d6a6", + "urls": [ + "bzz-raw://3b7078e5b739b2d551c790d154a8b99e9fdc9407046b21b8e93c0a91415f3af3", + "dweb:/ipfs/QmW5kYo5wMkEqcgSJGUVeP28qXMZPVcE6ZnopmhEf1irsS" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/interfaces/ContractInitializer.sol": { + "keccak256": "0x5c04c50115659d88f74c4a3bb27af15b9f4d302be78a057b0c092e7c065ab36a", + "urls": [ + "bzz-raw://45ad3e4b332ba7e99855ab84ef539c106021d0a2a45253e4cb2ab045aba81fa6", + "dweb:/ipfs/QmVWoh7scguCuzB5YgzujC2cWMA3priCn6RNZmasCNwGv7" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/interfaces/Identity.sol": { + "keccak256": "0x18b8ab7a912a2fca2567ad2adc811d9ed9123d5b2a8bdda77741581c2f7c9a08", + "urls": [ + "bzz-raw://cf3cc21679c63e2e5481c0ceeba85a476ba10d11fd942e9f149ccbe4a1ee2888", + "dweb:/ipfs/QmUdC8rH8JX6ZSJ6ddF77hJADRJCbjLjVee92E7ZmagxHh" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/interfaces/ProxySupport.sol": { + "keccak256": "0x438167266a83e218bab512a996f5d30e3071dc552d407a8ab600511b4975c01a", + "urls": [ + "bzz-raw://2f998adb2dff0baef1dfa08b6d6cd35248246cda7334598d8c2c24fc835073c6", + "dweb:/ipfs/QmX7t9h2aLu9HiEN371ipyrGSm6qW2EyrKbPhCWAimmmQ4" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/libraries/AccessControl.sol": { + "keccak256": "0x3b5af42da4adb23a3c56d62968b2a0058650c3f19c4ec0323f8c3958a02f2d32", + "urls": [ + "bzz-raw://7cb26cce13390c59767822b9b317505757ee2438b7a1481fb4ee0435cf98b074", + "dweb:/ipfs/QmdULczhMowp2aCJSt7z4KQGrMjPzEZjGU4YyqEemwM22e" + ], + "license": "MIT" + }, + "starkware/solidity/libraries/Addresses.sol": { + "keccak256": "0xf10c7ae374d9fa0599e2ee71ffaf882a96befca2793dbb600bfd080bae9f6179", + "urls": [ + "bzz-raw://4d490f6daab8d654021f912d1fe3f676fb77fa15117ac706a8024d192047dc89", + "dweb:/ipfs/QmYmYtGkzDvTxodvUXobWqwQZoppN4iYM1ATD7aSEhzgzS" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/libraries/NamedStorage.sol": { + "keccak256": "0x73e777cd0ae5f60889e4784b788c345bc3a3edc6a7ec3eab636b3701f2a1f66e", + "urls": [ + "bzz-raw://979e827ca68e8b00e8598cd67d0de96f10b5cb03197870e1f9a871533ca84e4a", + "dweb:/ipfs/QmPjoWoRTBRiVnNJ576hCuqr3UVoGomDmSdipFKoUZUpJi" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/libraries/RolesLib.sol": { + "keccak256": "0x2497bfb416c91633e1f373de9dbdbd85bd8cdb3d36a74df941ad392d8036a8c0", + "urls": [ + "bzz-raw://7fd51947b57ca6ecf0c4d433def5b8793213d5c281dea1b2145bb13e6be483bb", + "dweb:/ipfs/QmXFCfdQJ9SsoMxbLXPMRkiC6jqmddnsn4T7KXs4fcdweL" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/libraries/Transfers.sol": { + "keccak256": "0x596ec057b47f24b7776a71a2de0100078c1fbb18d2762cb2501236e79b1331ef", + "urls": [ + "bzz-raw://e595e54d35bd5ad0fbda03b7b105626b8b2a93fe4ee37f158070931e935b16b6", + "dweb:/ipfs/QmUKYd6GF5YaYWENtZo8NmBcYKuN4svuwyeVxA2CShXYji" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/tokens/ERC20/IERC20.sol": { + "keccak256": "0x04bae6eb13e8755ac10de0b0549806dadc167f4e22054f065478dda5bb5635f4", + "urls": [ + "bzz-raw://b097f7cffcdd93ab330be7751bfad246d0d47c63ae0e3a3215b031895c821a68", + "dweb:/ipfs/QmVZRaTM2vopCZSskT2UMWLPkPQpiYYkRjgDNurrJAMuve" + ], + "license": "Apache-2.0." + }, + "starkware/solidity/tokens/ERC20/IERC20Metadata.sol": { + "keccak256": "0x88b3f63040f3cc91d897fb09469ab21cd61388f4861d2e4bc4758d01f8339282", + "urls": [ + "bzz-raw://b359ecd6460824213331e699bf0a70ab72ab9ffd03527a97c5669282a159551a", + "dweb:/ipfs/QmPPuhpDVGaeFSqoJTxn2k5bDU9agwbnbo5qx99ApGB2BX" + ], + "license": "Apache-2.0." + }, + "starkware/starknet/solidity/IStarknetMessaging.sol": { + "keccak256": "0x0b5ad38d2ffea6fdc5dc39d9340871f06c98c56c3faa276f92a542690b57cf64", + "urls": [ + "bzz-raw://9e28c6d7e599915e824ae100975b20174f5fa168904c81c0305facfd3f4f7651", + "dweb:/ipfs/QmWiRdEkNDyKwigTiXkNbYpTkLj5WUEVo5TLgtfeeSEhmp" + ], + "license": "Apache-2.0." + }, + "starkware/starknet/solidity/IStarknetMessagingEvents.sol": { + "keccak256": "0x2f455c3c28792bded72e19d0c1a21af7459b66d6071c3d996f6259c93f096424", + "urls": [ + "bzz-raw://95302fc273848d1c795344d6e6184c2def7866da81d563ae9ae9b3e9d8fcf7e7", + "dweb:/ipfs/QmaHb55eq8Su9gEtqe3XbiyQkuf1Pk7CwKJkF9CXYbRrFN" + ], + "license": "Apache-2.0." + }, + "third_party/open_zeppelin/utils/Strings.sol": { + "keccak256": "0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3", + "urls": [ + "bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638", + "dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "id": 14 +} diff --git a/scripts/artifacts/bridge_proxy_legacy.json b/scripts/artifacts/starknet/bridge_proxy_legacy.json similarity index 100% rename from scripts/artifacts/bridge_proxy_legacy.json rename to scripts/artifacts/starknet/bridge_proxy_legacy.json diff --git a/scripts/artifacts/eic_eth_bridge.casm.json b/scripts/artifacts/starknet/eic_eth_bridge.casm.json similarity index 100% rename from scripts/artifacts/eic_eth_bridge.casm.json rename to scripts/artifacts/starknet/eic_eth_bridge.casm.json diff --git a/scripts/artifacts/eic_eth_bridge.sierra.json b/scripts/artifacts/starknet/eic_eth_bridge.sierra.json similarity index 100% rename from scripts/artifacts/eic_eth_bridge.sierra.json rename to scripts/artifacts/starknet/eic_eth_bridge.sierra.json diff --git a/scripts/artifacts/eic_eth_token.casm.json b/scripts/artifacts/starknet/eic_eth_token.casm.json similarity index 100% rename from scripts/artifacts/eic_eth_token.casm.json rename to scripts/artifacts/starknet/eic_eth_token.casm.json diff --git a/scripts/artifacts/eic_eth_token.sierra.json b/scripts/artifacts/starknet/eic_eth_token.sierra.json similarity index 100% rename from scripts/artifacts/eic_eth_token.sierra.json rename to scripts/artifacts/starknet/eic_eth_token.sierra.json diff --git a/scripts/artifacts/new_eth_bridge.casm.json b/scripts/artifacts/starknet/new_eth_bridge.casm.json similarity index 100% rename from scripts/artifacts/new_eth_bridge.casm.json rename to scripts/artifacts/starknet/new_eth_bridge.casm.json diff --git a/scripts/artifacts/new_eth_bridge.sierra.json b/scripts/artifacts/starknet/new_eth_bridge.sierra.json similarity index 100% rename from scripts/artifacts/new_eth_bridge.sierra.json rename to scripts/artifacts/starknet/new_eth_bridge.sierra.json diff --git a/scripts/artifacts/new_eth_token.casm.json b/scripts/artifacts/starknet/new_eth_token.casm.json similarity index 100% rename from scripts/artifacts/new_eth_token.casm.json rename to scripts/artifacts/starknet/new_eth_token.casm.json diff --git a/scripts/artifacts/new_eth_token.sierra.json b/scripts/artifacts/starknet/new_eth_token.sierra.json similarity index 100% rename from scripts/artifacts/new_eth_token.sierra.json rename to scripts/artifacts/starknet/new_eth_token.sierra.json diff --git a/scripts/init_state.js b/scripts/init_state.js index ef452538..cd2a7b0c 100644 --- a/scripts/init_state.js +++ b/scripts/init_state.js @@ -75,7 +75,7 @@ async function bridgeToChain(bridge_address, starnet_expected_account_address) { const tx = await contract.deposit( ethers.parseEther("1"), starnet_expected_account_address, - { value: ethers.parseEther("2") }, + { value: ethers.parseEther("1.01") }, ); tx.wait(); @@ -399,8 +399,8 @@ async function upgradeETHToken( "ℹ️ Sending transaction to declare and deploy new ERC20 contract for ETH...", ); let new_erc20_declare_deploy = await account.declareAndDeploy({ - contract: require("./artifacts/new_eth_token.sierra.json"), - casm: require("./artifacts/new_eth_token.casm.json"), + contract: require("./artifacts/starknet/new_eth_token.sierra.json"), + casm: require("./artifacts/starknet/new_eth_token.casm.json"), constructorCalldata: [ "eee", "eeee", @@ -421,8 +421,8 @@ async function upgradeETHToken( // https://sepolia.starkscan.co/tx/0x03e50d969b41bc98e4da481ec7a48151bb0738137473f8f32f52fa317b9a9fe4 console.log("ℹ️ Sending transaction to declare and deploy EIC contract..."); let eic_declare_deploy = await account.declareAndDeploy({ - contract: require("./artifacts/eic_eth_token.sierra.json"), - casm: require("./artifacts/eic_eth_token.casm.json"), + contract: require("./artifacts/starknet/eic_eth_token.sierra.json"), + casm: require("./artifacts/starknet/eic_eth_token.casm.json"), constructorCalldata: [], }); console.log("✅ Transaction successful."); @@ -433,7 +433,7 @@ async function upgradeETHToken( "ℹ️ Sending transaction to add implementation to bridge contract...", ); let eth_bridge = new starknet.Contract( - require("./artifacts/bridge_proxy_legacy.json").abi, + require("./artifacts/starknet/bridge_proxy_legacy.json").abi, l2_eth_token_address, account, ); @@ -524,8 +524,8 @@ async function upgradeETHBridge( "ℹ️ Sending transaction to declare and deploy new ETH bridge contract for ETH...", ); let new_bridge_declare_deploy = await account.declareAndDeploy({ - contract: require("./artifacts/new_eth_bridge.sierra.json"), - casm: require("./artifacts/new_eth_bridge.casm.json"), + contract: require("./artifacts/starknet/new_eth_bridge.sierra.json"), + casm: require("./artifacts/starknet/new_eth_bridge.casm.json"), constructorCalldata: ["0"], }); console.log("✅ Transaction successful."); @@ -536,8 +536,8 @@ async function upgradeETHBridge( // https://sepolia.starkscan.co/tx/0x02fde4be42ecb05b545f53adf9d4c1aed8392e6a3743e9f5b6b8333fc580e684 console.log("ℹ️ Sending transaction to declare and deploy EIC contract..."); let eic_declare_deploy = await account.declareAndDeploy({ - contract: require("./artifacts/eic_eth_bridge.sierra.json"), - casm: require("./artifacts/eic_eth_bridge.casm.json"), + contract: require("./artifacts/starknet/eic_eth_bridge.sierra.json"), + casm: require("./artifacts/starknet/eic_eth_bridge.casm.json"), constructorCalldata: [], }); console.log("✅ Transaction successful."); @@ -548,7 +548,7 @@ async function upgradeETHBridge( "ℹ️ Sending transaction to add implementation to bridge contract...", ); let eth_bridge = new starknet.Contract( - require("./artifacts/bridge_proxy_legacy.json").abi, + require("./artifacts/starknet/bridge_proxy_legacy.json").abi, l2_eth_bridge_address, account, ); @@ -614,12 +614,146 @@ async function upgradeETHBridge( console.log("✅ Transaction successful."); } +async function upgradeL1EthBridge(l1_bridge_address) { + // deploy the new bridge which the proxy will use + const newEthBridge = require("./artifacts/eth/new_eth_bridge.json"); + const contract = new ethers.ContractFactory( + newEthBridge.abi, + newEthBridge.bytecode, + wallet, + ); + const ethBridgeReceipt = await contract.deploy(); + await ethBridgeReceipt.waitForDeployment(); + const ethBridgeAddress = await ethBridgeReceipt.getAddress(); + console.log("✅ New L1 ETH bridge deployed at address:", ethBridgeAddress); + + // deploy the EIC + const newEic = require("./artifacts/eth/eic_eth_bridge.json"); + const eicContract = new ethers.ContractFactory( + newEic.abi, + newEic.bytecode, + wallet, + ); + const eicReceipt = await eicContract.deploy(); + await eicReceipt.waitForDeployment(); + const eicAddress = await eicReceipt.getAddress(); + console.log("✅ New EIC deployed at address:", eicAddress); + + // add new implementation to the bridge + const bridge = new ethers.Contract( + l1_bridge_address, + [ + { + type: "function", + name: "addImplementation", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "finalize", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "upgradeTo", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "finalize", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "payable", + }, + ], + wallet, + ); + + // add new implementation to the bridge + let addImplementationTxn = await bridge.addImplementation( + ethBridgeAddress, + chainHexesToBytes([eicAddress, "0x0", "0x0"]), + false, + ); + await addImplementationTxn.wait(); + console.log("✅ New implementation added to the bridge"); + + // upgrade the bridge to the new implementation + let upgradeToTxn = await bridge.upgradeTo( + ethBridgeAddress, + chainHexesToBytes([eicAddress, "0x0", "0x0"]), + false, + ); + await upgradeToTxn.wait(); + console.log("✅ Bridge upgraded to the new implementation"); +} + +/** + * Chain arguments to one big endian Uint8Array. + * Support address (or other hex strings that fit in 256 bits). + * @param {string[]} hexes - Array of hex strings + * @returns {Uint8Array} - Concatenated big endian bytes + */ +// Taken from https://github.com/starknet-io/starkgate-contracts/blob/5a10fd263d29cd032b7229691d043520edae0737/src/solidity/conftest.py#L167 +function chainHexesToBytes(hexes) { + // Create an array to store all bytes + let result = new Uint8Array(hexes.length * 32); + + hexes.forEach((hex, index) => { + // Remove '0x' prefix if present + hex = hex.replace("0x", ""); + + // Convert hex string to BigInt + const num = BigInt("0x" + hex); + + // Convert to bytes and pad to 32 bytes + const bytes = new Uint8Array(32); + for (let i = 0; i < 32; i++) { + // Extract each byte from right to left (big endian) + bytes[31 - i] = Number((num >> BigInt(i * 8)) & BigInt(0xff)); + } + + // Add to result array + result.set(bytes, index * 32); + }); + + return result; +} + async function main() { // tage bridge address as an argument --bridge_address const l1_bridge_address = process.argv[2]; + console.log("ℹ️ L1 bridge address:", l1_bridge_address); const core_contract_address = process.argv[3]; + console.log("ℹ️ Core contract address:", core_contract_address); const l2_eth_token_address = process.argv[4]; + console.log("ℹ️ L2 ETH token address:", l2_eth_token_address); const l2_eth_bridge_address = process.argv[5]; + console.log("ℹ️ L2 ETH bridge address:", l2_eth_bridge_address); const bootstrapper_address = "0x4fe5eea46caa0a1f344fafce82b39d66b552f00d3cd12e89073ef4b4ab37860" || process.argv[6]; @@ -661,6 +795,25 @@ async function main() { ); } + // upgrade L1 ETH bridge + const l1BridgeContract = new ethers.Contract( + l1_bridge_address, + ["function identify() external view returns (string)"], + eth_provider, + ); + const identify = await l1BridgeContract.identify(); + console.log("ℹ️ L1 ETH bridge identify:", identify); + if ( + identify.includes( + // StarkWare_StarknetEthBridge_2023_1 + "StarkWare_StarknetEthBridge_2023_1", + ) + ) { + await upgradeL1EthBridge(l1_bridge_address); + } else { + console.log("ℹ️ L1 ETH bridge is already upgraded, proceeding"); + } + const { address: starnet_expected_account_address, private_key: starknet_account_private_key,