diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml index 7054c4ef..51c6f319 100644 --- a/.github/workflows/contracts.yml +++ b/.github/workflows/contracts.yml @@ -24,8 +24,8 @@ on: workflow_dispatch: inputs: environment: - description: "Environment (network) for workflow execution, e.g. `goerli`" - required: false + description: "Environment (network) for workflow execution, e.g. `sepolia`" + required: true upstream_builds: description: "Upstream builds" required: false @@ -153,9 +153,16 @@ jobs: - name: Deploy contracts env: - CHAIN_API_URL: ${{ secrets.GOERLI_ETH_HOSTNAME_HTTP }} - CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: ${{ secrets.GOERLI_ETH_CONTRACT_OWNER_PRIVATE_KEY }} - KEEP_CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: ${{ secrets.GOERLI_KEEP_ETH_CONTRACT_OWNER_PRIVATE_KEY }} + # Using fake ternary expressions to decide which credentials to use, + # depending on chosen environment. Note: if `GOERLI_ETH_HOSTNAME_HTTP` + # is empty, the expression will be evaluated to + # `SEPOLIA_ETH_HOSTNAME_HTTP`'s value. + CHAIN_API_URL: | + ${{ inputs.github.event.inputs.environment == 'goerli' + && secrets.GOERLI_ETH_HOSTNAME_HTTP + || secrets.SEPOLIA_ETH_HOSTNAME_HTTP }} + CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: secrets.TESTNET_ETH_CONTRACT_OWNER_PRIVATE_KEY + KEEP_CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: secrets.TESTNET_ETH_CONTRACT_OWNER_PRIVATE_KEY run: yarn deploy --network ${{ github.event.inputs.environment }} - name: Bump up package version @@ -224,7 +231,14 @@ jobs: - name: Verify contracts on Etherscan env: ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} - CHAIN_API_URL: ${{ secrets.GOERLI_ETH_HOSTNAME_HTTP }} + # Using fake ternary expressions to decide which credentials to use, + # depending on chosen environment. Note: if `GOERLI_ETH_HOSTNAME_HTTP` + # is empty, the expression will be evaluated to + # `SEPOLIA_ETH_HOSTNAME_HTTP`'s value. + CHAIN_API_URL: | + ${{ inputs.github.event.inputs.environment == 'goerli' + && secrets.GOERLI_ETH_HOSTNAME_HTTP + || secrets.SEPOLIA_ETH_HOSTNAME_HTTP }} run: | yarn run hardhat --network ${{ github.event.inputs.environment }} \ etherscan-verify --license GPL-3.0 --force-license @@ -259,9 +273,16 @@ jobs: - name: Deploy contracts env: - CHAIN_API_URL: ${{ secrets.GOERLI_ETH_HOSTNAME_HTTP }} - CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: ${{ secrets.DAPP_DEV_GOERLI_ETH_CONTRACT_OWNER_PRIVATE_KEY }} - KEEP_CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: ${{ secrets.GOERLI_KEEP_ETH_CONTRACT_OWNER_PRIVATE_KEY }} + # Using fake ternary expressions to decide which credentials to use, + # depending on chosen environment. Note: if `GOERLI_ETH_HOSTNAME_HTTP` + # is empty, the expression will be evaluated to + # `SEPOLIA_ETH_HOSTNAME_HTTP`'s value. + CHAIN_API_URL: | + ${{ inputs.github.event.inputs.environment == 'goerli' + && secrets.GOERLI_ETH_HOSTNAME_HTTP + || secrets.SEPOLIA_ETH_HOSTNAME_HTTP }} + CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: secrets.DAPP_DEV_TESTNET_ETH_CONTRACT_OWNER_PRIVATE_KEY + KEEP_CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY: secrets.TESTNET_ETH_CONTRACT_OWNER_PRIVATE_KEY run: yarn deploy --network ${{ github.event.inputs.environment }} - name: Bump up package version diff --git a/deploy/00_resolve_nucypher_staking_escrow.ts b/deploy/00_resolve_nucypher_staking_escrow.ts index 53188089..509c90d8 100644 --- a/deploy/00_resolve_nucypher_staking_escrow.ts +++ b/deploy/00_resolve_nucypher_staking_escrow.ts @@ -26,7 +26,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { } else if ( // TODO: For testnets currently we deploy a stub contract. We should consider // switching to an actual contract. - hre.network.name !== "ropsten" && + hre.network.name !== "sepolia" && hre.network.name !== "goerli" && (!hre.network.tags.allowStubs || (hre.network.config as HardhatNetworkConfig)?.forking?.enabled) diff --git a/deploy/00_resolve_nucypher_token.ts b/deploy/00_resolve_nucypher_token.ts index cc35e53f..58383398 100644 --- a/deploy/00_resolve_nucypher_token.ts +++ b/deploy/00_resolve_nucypher_token.ts @@ -21,7 +21,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { } else if ( // TODO: For testnets currently we deploy a stub contract. We should consider // switching to an actual contract. - hre.network.name !== "ropsten" && + hre.network.name !== "sepolia" && hre.network.name !== "goerli" && (!hre.network.tags.allowStubs || (hre.network.config as HardhatNetworkConfig)?.forking?.enabled) diff --git a/deploy/07_deploy_token_staking.ts b/deploy/07_deploy_token_staking.ts index 0f0c084a..f8db19a9 100644 --- a/deploy/07_deploy_token_staking.ts +++ b/deploy/07_deploy_token_staking.ts @@ -25,7 +25,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { ] const tokenStakingInitializerArgs = [] - // TODO: Consider upgradable deployment also for goerli. + // TODO: Consider upgradable deployment also for goerli/sepolia. let tokenStakingAddress if (hre.network.name == "mainnet") { const TokenStaking = await ethers.getContractFactory("TokenStaking") diff --git a/external/sepolia/KeepRegistry.json b/external/sepolia/KeepRegistry.json new file mode 100644 index 00000000..747931b0 --- /dev/null +++ b/external/sepolia/KeepRegistry.json @@ -0,0 +1,11685 @@ +{ + "contractName": "KeepRegistry", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "defaultPanicButton", + "type": "address" + } + ], + "name": "DefaultPanicButtonUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "governance", + "type": "address" + } + ], + "name": "GovernanceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractPanicButtonDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "panicButton", + "type": "address" + } + ], + "name": "OperatorContractPanicButtonUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "serviceContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "OperatorContractUpgraderUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "registryKeeper", + "type": "address" + } + ], + "name": "RegistryKeeperUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "keeper", + "type": "address" + } + ], + "name": "ServiceContractUpgraderUpdated", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "defaultPanicButton", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "governance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "operatorContractUpgraders", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "operatorContracts", + "outputs": [ + { + "internalType": "enum KeepRegistry.ContractStatus", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "panicButtons", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registryKeeper", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "serviceContractUpgraders", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_governance", + "type": "address" + } + ], + "name": "setGovernance", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_registryKeeper", + "type": "address" + } + ], + "name": "setRegistryKeeper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_panicButton", + "type": "address" + } + ], + "name": "setDefaultPanicButton", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_panicButton", + "type": "address" + } + ], + "name": "setOperatorContractPanicButton", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "disableOperatorContractPanicButton", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_serviceContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContractUpgrader", + "type": "address" + } + ], + "name": "setOperatorContractUpgrader", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_serviceContractUpgrader", + "type": "address" + } + ], + "name": "setServiceContractUpgrader", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "approveOperatorContract", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "disableOperatorContract", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "isNewOperatorContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "isApprovedOperatorContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_serviceContract", + "type": "address" + } + ], + "name": "operatorContractUpgraderFor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "serviceContractUpgraderFor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"defaultPanicButton\",\"type\":\"address\"}],\"name\":\"DefaultPanicButtonUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"}],\"name\":\"GovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractPanicButtonDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"panicButton\",\"type\":\"address\"}],\"name\":\"OperatorContractPanicButtonUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"OperatorContractUpgraderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"registryKeeper\",\"type\":\"address\"}],\"name\":\"RegistryKeeperUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"keeper\",\"type\":\"address\"}],\"name\":\"ServiceContractUpgraderUpdated\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"approveOperatorContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"defaultPanicButton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"disableOperatorContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"disableOperatorContractPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"isApprovedOperatorContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"isNewOperatorContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceContract\",\"type\":\"address\"}],\"name\":\"operatorContractUpgraderFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorContractUpgraders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorContracts\",\"outputs\":[{\"internalType\":\"enum KeepRegistry.ContractStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"panicButtons\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryKeeper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"serviceContractUpgraderFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceContractUpgraders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_panicButton\",\"type\":\"address\"}],\"name\":\"setDefaultPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_panicButton\",\"type\":\"address\"}],\"name\":\"setOperatorContractPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContractUpgrader\",\"type\":\"address\"}],\"name\":\"setOperatorContractUpgrader\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registryKeeper\",\"type\":\"address\"}],\"name\":\"setRegistryKeeper\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_serviceContractUpgrader\",\"type\":\"address\"}],\"name\":\"setServiceContractUpgrader\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{},\"title\":\"KeepRegistry\"},\"userdoc\":{\"methods\":{},\"notice\":\"Governance owned registry of approved contracts and roles.\"}},\"settings\":{\"compilationTarget\":{\"project:/contracts/KeepRegistry.sol\":\"KeepRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/KeepRegistry.sol\":{\"keccak256\":\"0xbc0e44a838bae38c1d11db28b5bfcfdfd79394d423ce6fd85dcb90a6420e1f10\",\"urls\":[\"bzz-raw://74b140b3a4547cc742785c613e2927bc3592e71f0f42eff5112462a9985083cb\",\"dweb:/ipfs/QmQLsNVWAcgHhtoJAfiXjipYaksfLpcoaa45c2LvRh9hfg\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061207d806100e26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80636557eccf116100ad578063ab033ea911610071578063ab033ea914610691578063d82437f4146106d5578063d858008a14610739578063db816b62146107bd578063ff111e3b146108015761012c565b80636557eccf1461047f578063716d6061146105035780637b4df9381461056757806384c07bd2146105eb57806384d57689146106355761012c565b80635a9671f5116100f45780635a9671f5146102cd5780635aa6e67514610329578063618dae2014610373578063637e9dbe146103b757806363dc5fcf146103fb5761012c565b806302db580b1461013157806309a6f73f146101755780632afb015e146101b95780633ae70f46146102035780633dbcab4514610267575b600080fd5b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610885565b005b6101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b005b6101c1610dfe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102656004803603604081101561021957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e24565b005b6102a96004803603602081101561027d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fff565b604051808260028111156102b957fe5b60ff16815260200191505060405180910390f35b61030f600480360360208110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101f565b604051808215151515815260200191505060405180910390f35b61033161108d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b2565b005b6103f9600480360360208110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123d565b005b61043d6004803603602081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611546565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c16004803603602081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105656004803603604081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611618565b005b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f3611826565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184c565b604051808215151515815260200191505060405180910390f35b6106d3600480360360208110156106a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b005b610737600480360360408110156106eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a44565b005b61077b6004803603602081101561074f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1d565b005b6108436004803603602081101561081757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b8061088f8161101f565b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f742061206e6577206f70657261746f7220636f6e7472616374000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610a2057fe5b0217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b80610b368161184c565b610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b816000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50616e696320627574746f6e2064697361626c6564000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6002600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610d9057fe5b02179055507f61e8cab67fc6f073d7e3bbd8d936b519daf95f5655e8b22563c63eaba75f8fa384604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f067d7db72df8e5428d719a48ef14b072cdb3942706bfc6becc7198a316d73b788282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60066020528060005260406000206000915054906101000a900460ff1681565b600080600281111561102d57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561108557fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06f6f3a56d213caa17abfd21597ab6f8660771e05f9d430505ce755a2fdbb551600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b806112478161184c565b61129c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50616e696320627574746f6e20616c72656164792064697361626c656400000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f825c13d61db27b3c0dae8523f70310e87c2dfd99ea7023664547208322ff679c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6f5a686a46a4dd38461a6a5ce54c3b8dd7b989914b5a0748c8d6669c794778528282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001600281111561185b57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156118b357fe5b149050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b81611a4e8161184c565b611aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611fdc6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120246025913960400191505060405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5f94d794a8a48b75e2ca89133a5b8748d14217648260c5247e57e3d314fd52a78383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe5ecd8c922f03a416959a48c633d1bfdd1615ea46923a0a3e5d65ec90a38e038600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fe44697361626c65642070616e696320627574746f6e2063616e6e6f7420626520757064617465644e6f7420616e20617070726f766564206f70657261746f7220636f6e747261637450616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373a265627a7a72315820b17bd18cfe39501ad377d66d1010e19430f6a267075322e32ef22e8e9651a4f664736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80636557eccf116100ad578063ab033ea911610071578063ab033ea914610691578063d82437f4146106d5578063d858008a14610739578063db816b62146107bd578063ff111e3b146108015761012c565b80636557eccf1461047f578063716d6061146105035780637b4df9381461056757806384c07bd2146105eb57806384d57689146106355761012c565b80635a9671f5116100f45780635a9671f5146102cd5780635aa6e67514610329578063618dae2014610373578063637e9dbe146103b757806363dc5fcf146103fb5761012c565b806302db580b1461013157806309a6f73f146101755780632afb015e146101b95780633ae70f46146102035780633dbcab4514610267575b600080fd5b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610885565b005b6101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b005b6101c1610dfe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102656004803603604081101561021957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e24565b005b6102a96004803603602081101561027d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fff565b604051808260028111156102b957fe5b60ff16815260200191505060405180910390f35b61030f600480360360208110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101f565b604051808215151515815260200191505060405180910390f35b61033161108d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b2565b005b6103f9600480360360208110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123d565b005b61043d6004803603602081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611546565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c16004803603602081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105656004803603604081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611618565b005b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f3611826565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184c565b604051808215151515815260200191505060405180910390f35b6106d3600480360360208110156106a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b005b610737600480360360408110156106eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a44565b005b61077b6004803603602081101561074f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1d565b005b6108436004803603602081101561081757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b8061088f8161101f565b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f742061206e6577206f70657261746f7220636f6e7472616374000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610a2057fe5b0217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b80610b368161184c565b610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b816000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50616e696320627574746f6e2064697361626c6564000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6002600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610d9057fe5b02179055507f61e8cab67fc6f073d7e3bbd8d936b519daf95f5655e8b22563c63eaba75f8fa384604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f067d7db72df8e5428d719a48ef14b072cdb3942706bfc6becc7198a316d73b788282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60066020528060005260406000206000915054906101000a900460ff1681565b600080600281111561102d57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561108557fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06f6f3a56d213caa17abfd21597ab6f8660771e05f9d430505ce755a2fdbb551600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b806112478161184c565b61129c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50616e696320627574746f6e20616c72656164792064697361626c656400000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f825c13d61db27b3c0dae8523f70310e87c2dfd99ea7023664547208322ff679c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6f5a686a46a4dd38461a6a5ce54c3b8dd7b989914b5a0748c8d6669c794778528282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001600281111561185b57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156118b357fe5b149050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b81611a4e8161184c565b611aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611fdc6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120246025913960400191505060405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5f94d794a8a48b75e2ca89133a5b8748d14217648260c5247e57e3d314fd52a78383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe5ecd8c922f03a416959a48c633d1bfdd1615ea46923a0a3e5d65ec90a38e038600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fe44697361626c65642070616e696320627574746f6e2063616e6e6f7420626520757064617465644e6f7420616e20617070726f766564206f70657261746f7220636f6e747261637450616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373a265627a7a72315820b17bd18cfe39501ad377d66d1010e19430f6a267075322e32ef22e8e9651a4f664736f6c63430005110032", + "sourceMap": "120:7949:26:-;;;4164:139;8:9:-1;5:2;;;30:1;27;20:12;5:2;4164:139:26;4208:10;4195;;:23;;;;;;;;;;;;;;;;;;4245:10;4228:14;;:27;;;;;;;;;;;;;;;;;;4286:10;4265:18;;:31;;;;;;;;;;;;;;;;;;120:7949;;;;;;", + "deployedSourceMap": "120:7949:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;120:7949:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6614:346;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6614:346:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;6966:305;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6966:305:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;1449:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6256:352;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6256:352:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2477:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2477:59:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7277:193;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7277:193:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;369:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4647:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4647:185:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;5462:427;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5462:427:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;7685:188;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7685:188:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7879;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7879:188:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5895:355;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5895:355:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1266:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1266:47:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;588:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7476:203;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7476:203:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4309:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4309:151:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;4838:618;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4838:618:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1792:60;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1792:60:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4466:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4466:175:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;2369:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2369:59:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6614:346;6715:16;3828:40;3850:17;3828:21;:40::i;:::-;3807:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:10;3401:28;;:14;;;;;;;;;;;:28;;;3393:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6812:23;6774:17;:35;6792:16;6774:35;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;;;;;6878:18;;;;;;;;;;;6845:12;:30;6858:16;6845:30;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;6911:42;6936:16;6911:42;;;;;;;;;;;;;;;;;;;;;;6614:346;;:::o;6966:305::-;7072:16;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7114:16;3534:19;3556:12;:31;3569:17;3556:31;;;;;;;;;;;;;;;;;;;;;;;;;3534:53;;3628:1;3605:25;;:11;:25;;;;3597:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3689:10;3674:25;;:11;:25;;;3666:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7184:23;7146:17;:35;7164:16;7146:35;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;;;;;7222:42;7247:16;7222:42;;;;;;;;;;;;;;;;;;;;;;4150:1;;6966:305;;:::o;1449:33::-;;;;;;;;;;;;;:::o;6256:352::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6453:24;6407;:43;6432:17;6407:43;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;6492:109;6536:17;6567:24;6492:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6256:352;;:::o;2477:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;7277:193::-;7379:4;7445:18;7406:57;;;;;;;;:17;:35;7424:16;7406:35;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;;;;;7399:64;;7277:193;;;:::o;369:25::-;;;;;;;;;;;;;:::o;4647:185::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4753:12;4732:18;;:33;;;;;;;;;;;;;;;;;;4780:45;4806:18;;;;;;;;;;;4780:45;;;;;;;;;;;;;;;;;;;;;;4647:185;:::o;5462:427::-;5580:17;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5700:1;5657:45;;:12;:31;5670:17;5657:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;5636:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5810:1;5768:12;:31;5781:17;5768:31;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;5828:54;5864:17;5828:54;;;;;;;;;;;;;;;;;;;;;;5462:427;;:::o;7685:188::-;7793:7;7823:25;:43;7849:16;7823:43;;;;;;;;;;;;;;;;;;;;;;;;;7816:50;;7685:188;;;:::o;7879:::-;7987:7;8017:24;:43;8042:17;8017:43;;;;;;;;;;;;;;;;;;;;;;;;;8010:50;;7879:188;;;:::o;5895:355::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6093:25;6047;:43;6073:16;6047:43;;;;;;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;6133:110;6178:16;6208:25;6133:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5895:355;;:::o;1266:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;588:29::-;;;;;;;;;;;;;:::o;7476:203::-;7583:4;7649:23;7610:62;;;;;;;;:17;:35;7628:16;7610:35;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;7603:69;;7476:203;;;:::o;4309:151::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4398:11;4385:10;;:24;;;;;;;;;;;;;;;;;;4424:29;4442:10;;;;;;;;;;;4424:29;;;;;;;;;;;;;;;;;;;;;;4309:151;:::o;4838:618::-;4980:17;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5088:1;5045:45;;:12;:31;5058:17;5045:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;5024:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5210:1;5186:26;;:12;:26;;;;5165:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5320:12;5286;:31;5299:17;5286:31;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;5348:101;5396:17;5427:12;5348:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4838:618;;;:::o;1792:60::-;;;;;;;;;;;;;;;;;;;;;;:::o;4466:175::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4567:15;4550:14;;:32;;;;;;;;;;;;;;;;;;4597:37;4619:14;;;;;;;;;;;4597:37;;;;;;;;;;;;;;;;;;;;;;4466:175;:::o;2369:59::-;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.5.17;\n\n/// @title KeepRegistry\n/// @notice Governance owned registry of approved contracts and roles.\ncontract KeepRegistry {\n enum ContractStatus {New, Approved, Disabled}\n\n // Governance role is to enable recovery from key compromise by rekeying\n // other roles. Also, it can disable operator contract panic buttons\n // permanently.\n address public governance;\n\n // Registry Keeper maintains approved operator contracts. Each operator\n // contract must be approved before it can be authorized by a staker or\n // used by a service contract.\n address public registryKeeper;\n\n // Each operator contract has a Panic Button which can disable malicious\n // or malfunctioning contract that have been previously approved by the\n // Registry Keeper.\n //\n // New operator contract added to the registry has a default panic button\n // value assigned (defaultPanicButton). Panic button for each operator\n // contract can be later updated by Governance to individual value.\n //\n // It is possible to disable panic button for individual contract by\n // setting the panic button to zero address. In such case, operator contract\n // can not be disabled and is permanently approved in the registry.\n mapping(address => address) public panicButtons;\n\n // Default panic button for each new operator contract added to the\n // registry. Can be later updated for each contract.\n address public defaultPanicButton;\n\n // Each service contract has a Operator Contract Upgrader whose purpose\n // is to manage operator contracts for that specific service contract.\n // The Operator Contract Upgrader can add new operator contracts to the\n // service contract’s operator contract list, and deprecate old ones.\n mapping(address => address) public operatorContractUpgraders;\n\n // Operator contract may have a Service Contract Upgrader whose purpose is\n // to manage service contracts for that specific operator contract.\n // Service Contract Upgrader can add and remove service contracts\n // from the list of service contracts approved to work with the operator\n // contract. List of service contracts is maintained in the operator\n // contract and is optional - not every operator contract needs to have\n // a list of service contracts it wants to cooperate with.\n mapping(address => address) public serviceContractUpgraders;\n\n // The registry of operator contracts\n mapping(address => ContractStatus) public operatorContracts;\n\n event OperatorContractApproved(address operatorContract);\n event OperatorContractDisabled(address operatorContract);\n\n event GovernanceUpdated(address governance);\n event RegistryKeeperUpdated(address registryKeeper);\n event DefaultPanicButtonUpdated(address defaultPanicButton);\n event OperatorContractPanicButtonDisabled(address operatorContract);\n event OperatorContractPanicButtonUpdated(\n address operatorContract,\n address panicButton\n );\n event OperatorContractUpgraderUpdated(\n address serviceContract,\n address upgrader\n );\n event ServiceContractUpgraderUpdated(\n address operatorContract,\n address keeper\n );\n\n modifier onlyGovernance() {\n require(governance == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyRegistryKeeper() {\n require(registryKeeper == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyPanicButton(address _operatorContract) {\n address panicButton = panicButtons[_operatorContract];\n require(panicButton != address(0), \"Panic button disabled\");\n require(panicButton == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyForNewContract(address _operatorContract) {\n require(\n isNewOperatorContract(_operatorContract),\n \"Not a new operator contract\"\n );\n _;\n }\n\n modifier onlyForApprovedContract(address _operatorContract) {\n require(\n isApprovedOperatorContract(_operatorContract),\n \"Not an approved operator contract\"\n );\n _;\n }\n\n constructor() public {\n governance = msg.sender;\n registryKeeper = msg.sender;\n defaultPanicButton = msg.sender;\n }\n\n function setGovernance(address _governance) public onlyGovernance {\n governance = _governance;\n emit GovernanceUpdated(governance);\n }\n\n function setRegistryKeeper(address _registryKeeper) public onlyGovernance {\n registryKeeper = _registryKeeper;\n emit RegistryKeeperUpdated(registryKeeper);\n }\n\n function setDefaultPanicButton(address _panicButton) public onlyGovernance {\n defaultPanicButton = _panicButton;\n emit DefaultPanicButtonUpdated(defaultPanicButton);\n }\n\n function setOperatorContractPanicButton(\n address _operatorContract,\n address _panicButton\n ) public onlyForApprovedContract(_operatorContract) onlyGovernance {\n require(\n panicButtons[_operatorContract] != address(0),\n \"Disabled panic button cannot be updated\"\n );\n require(\n _panicButton != address(0),\n \"Panic button must be non-zero address\"\n );\n\n panicButtons[_operatorContract] = _panicButton;\n\n emit OperatorContractPanicButtonUpdated(\n _operatorContract,\n _panicButton\n );\n }\n\n function disableOperatorContractPanicButton(address _operatorContract)\n public\n onlyForApprovedContract(_operatorContract)\n onlyGovernance\n {\n require(\n panicButtons[_operatorContract] != address(0),\n \"Panic button already disabled\"\n );\n\n panicButtons[_operatorContract] = address(0);\n\n emit OperatorContractPanicButtonDisabled(_operatorContract);\n }\n\n function setOperatorContractUpgrader(\n address _serviceContract,\n address _operatorContractUpgrader\n ) public onlyGovernance {\n operatorContractUpgraders[_serviceContract] = _operatorContractUpgrader;\n emit OperatorContractUpgraderUpdated(\n _serviceContract,\n _operatorContractUpgrader\n );\n }\n\n function setServiceContractUpgrader(\n address _operatorContract,\n address _serviceContractUpgrader\n ) public onlyGovernance {\n serviceContractUpgraders[_operatorContract] = _serviceContractUpgrader;\n emit ServiceContractUpgraderUpdated(\n _operatorContract,\n _serviceContractUpgrader\n );\n }\n\n function approveOperatorContract(address operatorContract)\n public\n onlyForNewContract(operatorContract)\n onlyRegistryKeeper\n {\n operatorContracts[operatorContract] = ContractStatus.Approved;\n panicButtons[operatorContract] = defaultPanicButton;\n emit OperatorContractApproved(operatorContract);\n }\n\n function disableOperatorContract(address operatorContract)\n public\n onlyForApprovedContract(operatorContract)\n onlyPanicButton(operatorContract)\n {\n operatorContracts[operatorContract] = ContractStatus.Disabled;\n emit OperatorContractDisabled(operatorContract);\n }\n\n function isNewOperatorContract(address operatorContract)\n public\n view\n returns (bool)\n {\n return operatorContracts[operatorContract] == ContractStatus.New;\n }\n\n function isApprovedOperatorContract(address operatorContract)\n public\n view\n returns (bool)\n {\n return operatorContracts[operatorContract] == ContractStatus.Approved;\n }\n\n function operatorContractUpgraderFor(address _serviceContract)\n public\n view\n returns (address)\n {\n return operatorContractUpgraders[_serviceContract];\n }\n\n function serviceContractUpgraderFor(address _operatorContract)\n public\n view\n returns (address)\n {\n return serviceContractUpgraders[_operatorContract];\n }\n}\n", + "sourcePath": "/Users/michalina/workspace2/keep-core/solidity-v1/contracts/KeepRegistry.sol", + "ast": { + "absolutePath": "project:/contracts/KeepRegistry.sol", + "exportedSymbols": { + "KeepRegistry": [6120] + }, + "id": 6121, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5680, + "literals": ["solidity", "0.5", ".17"], + "nodeType": "PragmaDirective", + "src": "0:23:26" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title KeepRegistry\n @notice Governance owned registry of approved contracts and roles.", + "fullyImplemented": true, + "id": 6120, + "linearizedBaseContracts": [6120], + "name": "KeepRegistry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "KeepRegistry.ContractStatus", + "id": 5684, + "members": [ + { + "id": 5681, + "name": "New", + "nodeType": "EnumValue", + "src": "169:3:26" + }, + { + "id": 5682, + "name": "Approved", + "nodeType": "EnumValue", + "src": "174:8:26" + }, + { + "id": 5683, + "name": "Disabled", + "nodeType": "EnumValue", + "src": "184:8:26" + } + ], + "name": "ContractStatus", + "nodeType": "EnumDefinition", + "src": "148:45:26" + }, + { + "constant": false, + "id": 5686, + "name": "governance", + "nodeType": "VariableDeclaration", + "scope": 6120, + "src": "369:25:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "369:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 5688, + "name": "registryKeeper", + "nodeType": "VariableDeclaration", + "scope": 6120, + "src": "588:29:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "588:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 5692, + "name": "panicButtons", + "nodeType": "VariableDeclaration", + "scope": 6120, + "src": "1266:47:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 5691, + "keyType": { + "id": 5689, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1274:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1266:27:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 5690, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1285:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 5694, + "name": "defaultPanicButton", + "nodeType": "VariableDeclaration", + "scope": 6120, + "src": "1449:33:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1449:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 5698, + "name": "operatorContractUpgraders", + "nodeType": "VariableDeclaration", + "scope": 6120, + "src": "1792:60:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 5697, + "keyType": { + "id": 5695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1800:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1792:27:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 5696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1811:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 5702, + "name": "serviceContractUpgraders", + "nodeType": "VariableDeclaration", + "scope": 6120, + "src": "2369:59:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 5701, + "keyType": { + "id": 5699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2377:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2369:27:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 5700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2388:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 5706, + "name": "operatorContracts", + "nodeType": "VariableDeclaration", + "scope": 6120, + "src": "2477:59:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + }, + "typeName": { + "id": 5705, + "keyType": { + "id": 5703, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2485:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2477:34:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + }, + "valueType": { + "contractScope": null, + "id": 5704, + "name": "ContractStatus", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5684, + "src": "2496:14:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 5710, + "name": "OperatorContractApproved", + "nodeType": "EventDefinition", + "parameters": { + "id": 5709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5708, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5710, + "src": "2574:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5707, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2574:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2573:26:26" + }, + "src": "2543:57:26" + }, + { + "anonymous": false, + "documentation": null, + "id": 5714, + "name": "OperatorContractDisabled", + "nodeType": "EventDefinition", + "parameters": { + "id": 5713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5712, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "2636:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5711, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2636:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2635:26:26" + }, + "src": "2605:57:26" + }, + { + "anonymous": false, + "documentation": null, + "id": 5718, + "name": "GovernanceUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 5717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5716, + "indexed": false, + "name": "governance", + "nodeType": "VariableDeclaration", + "scope": 5718, + "src": "2692:18:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2692:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2691:20:26" + }, + "src": "2668:44:26" + }, + { + "anonymous": false, + "documentation": null, + "id": 5722, + "name": "RegistryKeeperUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 5721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5720, + "indexed": false, + "name": "registryKeeper", + "nodeType": "VariableDeclaration", + "scope": 5722, + "src": "2745:22:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2745:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2744:24:26" + }, + "src": "2717:52:26" + }, + { + "anonymous": false, + "documentation": null, + "id": 5726, + "name": "DefaultPanicButtonUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 5725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5724, + "indexed": false, + "name": "defaultPanicButton", + "nodeType": "VariableDeclaration", + "scope": 5726, + "src": "2806:26:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5723, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2806:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2805:28:26" + }, + "src": "2774:60:26" + }, + { + "anonymous": false, + "documentation": null, + "id": 5730, + "name": "OperatorContractPanicButtonDisabled", + "nodeType": "EventDefinition", + "parameters": { + "id": 5729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5728, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5730, + "src": "2881:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2881:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2880:26:26" + }, + "src": "2839:68:26" + }, + { + "anonymous": false, + "documentation": null, + "id": 5736, + "name": "OperatorContractPanicButtonUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 5735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5732, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5736, + "src": "2962:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5731, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2962:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5734, + "indexed": false, + "name": "panicButton", + "nodeType": "VariableDeclaration", + "scope": 5736, + "src": "2996:19:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2996:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2952:69:26" + }, + "src": "2912:110:26" + }, + { + "anonymous": false, + "documentation": null, + "id": 5742, + "name": "OperatorContractUpgraderUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 5741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5738, + "indexed": false, + "name": "serviceContract", + "nodeType": "VariableDeclaration", + "scope": 5742, + "src": "3074:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5737, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3074:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5740, + "indexed": false, + "name": "upgrader", + "nodeType": "VariableDeclaration", + "scope": 5742, + "src": "3107:16:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3107:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3064:65:26" + }, + "src": "3027:103:26" + }, + { + "anonymous": false, + "documentation": null, + "id": 5748, + "name": "ServiceContractUpgraderUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 5747, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5744, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5748, + "src": "3181:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5743, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3181:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5746, + "indexed": false, + "name": "keeper", + "nodeType": "VariableDeclaration", + "scope": 5748, + "src": "3215:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3215:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3171:64:26" + }, + "src": "3135:101:26" + }, + { + "body": { + "id": 5759, + "nodeType": "Block", + "src": "3268:79:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5751, + "name": "governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5686, + "src": "3286:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5752, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "3300:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3300:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3286:24:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 5755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3312:16:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 5750, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3278:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3278:51:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5757, + "nodeType": "ExpressionStatement", + "src": "3278:51:26" + }, + { + "id": 5758, + "nodeType": "PlaceholderStatement", + "src": "3339:1:26" + } + ] + }, + "documentation": null, + "id": 5760, + "name": "onlyGovernance", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5749, + "nodeType": "ParameterList", + "parameters": [], + "src": "3265:2:26" + }, + "src": "3242:105:26", + "visibility": "internal" + }, + { + "body": { + "id": 5771, + "nodeType": "Block", + "src": "3383:83:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5763, + "name": "registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5688, + "src": "3401:14:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5764, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "3419:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3419:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3401:28:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 5767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3431:16:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 5762, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3393:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3393:55:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5769, + "nodeType": "ExpressionStatement", + "src": "3393:55:26" + }, + { + "id": 5770, + "nodeType": "PlaceholderStatement", + "src": "3458:1:26" + } + ] + }, + "documentation": null, + "id": 5772, + "name": "onlyRegistryKeeper", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5761, + "nodeType": "ParameterList", + "parameters": [], + "src": "3380:2:26" + }, + "src": "3353:113:26", + "visibility": "internal" + }, + { + "body": { + "id": 5800, + "nodeType": "Block", + "src": "3524:212:26", + "statements": [ + { + "assignments": [5777], + "declarations": [ + { + "constant": false, + "id": 5777, + "name": "panicButton", + "nodeType": "VariableDeclaration", + "scope": 5800, + "src": "3534:19:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3534:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5781, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5778, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5692, + "src": "3556:12:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 5780, + "indexExpression": { + "argumentTypes": null, + "id": 5779, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5774, + "src": "3569:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3556:31:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3534:53:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5783, + "name": "panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5777, + "src": "3605:11:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3628:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3620:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3620:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3605:25:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "50616e696320627574746f6e2064697361626c6564", + "id": 5788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3632:23:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", + "typeString": "literal_string \"Panic button disabled\"" + }, + "value": "Panic button disabled" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", + "typeString": "literal_string \"Panic button disabled\"" + } + ], + "id": 5782, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3597:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3597:59:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5790, + "nodeType": "ExpressionStatement", + "src": "3597:59:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5792, + "name": "panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5777, + "src": "3674:11:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5793, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "3689:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3689:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3674:25:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 5796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3701:16:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 5791, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3666:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3666:52:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5798, + "nodeType": "ExpressionStatement", + "src": "3666:52:26" + }, + { + "id": 5799, + "nodeType": "PlaceholderStatement", + "src": "3728:1:26" + } + ] + }, + "documentation": null, + "id": 5801, + "name": "onlyPanicButton", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5774, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5801, + "src": "3497:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5773, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3497:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3496:27:26" + }, + "src": "3472:264:26", + "visibility": "internal" + }, + { + "body": { + "id": 5813, + "nodeType": "Block", + "src": "3797:142:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5807, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5803, + "src": "3850:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5806, + "name": "isNewOperatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6080, + "src": "3828:21:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 5808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3828:40:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f742061206e6577206f70657261746f7220636f6e7472616374", + "id": 5809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3882:29:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", + "typeString": "literal_string \"Not a new operator contract\"" + }, + "value": "Not a new operator contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", + "typeString": "literal_string \"Not a new operator contract\"" + } + ], + "id": 5805, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3807:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3807:114:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5811, + "nodeType": "ExpressionStatement", + "src": "3807:114:26" + }, + { + "id": 5812, + "nodeType": "PlaceholderStatement", + "src": "3931:1:26" + } + ] + }, + "documentation": null, + "id": 5814, + "name": "onlyForNewContract", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5803, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5814, + "src": "3770:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3770:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3769:27:26" + }, + "src": "3742:197:26", + "visibility": "internal" + }, + { + "body": { + "id": 5826, + "nodeType": "Block", + "src": "4005:153:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5820, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5816, + "src": "4063:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5819, + "name": "isApprovedOperatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6095, + "src": "4036:26:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 5821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4036:45:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e20617070726f766564206f70657261746f7220636f6e7472616374", + "id": 5822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4095:35:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", + "typeString": "literal_string \"Not an approved operator contract\"" + }, + "value": "Not an approved operator contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", + "typeString": "literal_string \"Not an approved operator contract\"" + } + ], + "id": 5818, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "4015:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4015:125:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5824, + "nodeType": "ExpressionStatement", + "src": "4015:125:26" + }, + { + "id": 5825, + "nodeType": "PlaceholderStatement", + "src": "4150:1:26" + } + ] + }, + "documentation": null, + "id": 5827, + "name": "onlyForApprovedContract", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5816, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5827, + "src": "3978:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3978:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3977:27:26" + }, + "src": "3945:213:26", + "visibility": "internal" + }, + { + "body": { + "id": 5845, + "nodeType": "Block", + "src": "4185:118:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5830, + "name": "governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5686, + "src": "4195:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5831, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "4208:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4208:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4195:23:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5834, + "nodeType": "ExpressionStatement", + "src": "4195:23:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 5838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5835, + "name": "registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5688, + "src": "4228:14:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5836, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "4245:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4245:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4228:27:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5839, + "nodeType": "ExpressionStatement", + "src": "4228:27:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 5843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5840, + "name": "defaultPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5694, + "src": "4265:18:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5841, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "4286:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4286:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4265:31:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5844, + "nodeType": "ExpressionStatement", + "src": "4265:31:26" + } + ] + }, + "documentation": null, + "id": 5846, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5828, + "nodeType": "ParameterList", + "parameters": [], + "src": "4175:2:26" + }, + "returnParameters": { + "id": 5829, + "nodeType": "ParameterList", + "parameters": [], + "src": "4185:0:26" + }, + "scope": 6120, + "src": "4164:139:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5861, + "nodeType": "Block", + "src": "4375:85:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5853, + "name": "governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5686, + "src": "4385:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5854, + "name": "_governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5848, + "src": "4398:11:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4385:24:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5856, + "nodeType": "ExpressionStatement", + "src": "4385:24:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5858, + "name": "governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5686, + "src": "4442:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5857, + "name": "GovernanceUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5718, + "src": "4424:17:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 5859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4424:29:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5860, + "nodeType": "EmitStatement", + "src": "4419:34:26" + } + ] + }, + "documentation": null, + "id": 5862, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5851, + "modifierName": { + "argumentTypes": null, + "id": 5850, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5760, + "src": "4360:14:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4360:14:26" + } + ], + "name": "setGovernance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5848, + "name": "_governance", + "nodeType": "VariableDeclaration", + "scope": 5862, + "src": "4332:19:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5847, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4332:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4331:21:26" + }, + "returnParameters": { + "id": 5852, + "nodeType": "ParameterList", + "parameters": [], + "src": "4375:0:26" + }, + "scope": 6120, + "src": "4309:151:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5877, + "nodeType": "Block", + "src": "4540:101:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5869, + "name": "registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5688, + "src": "4550:14:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5870, + "name": "_registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5864, + "src": "4567:15:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4550:32:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5872, + "nodeType": "ExpressionStatement", + "src": "4550:32:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5874, + "name": "registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5688, + "src": "4619:14:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5873, + "name": "RegistryKeeperUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5722, + "src": "4597:21:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 5875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4597:37:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5876, + "nodeType": "EmitStatement", + "src": "4592:42:26" + } + ] + }, + "documentation": null, + "id": 5878, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5867, + "modifierName": { + "argumentTypes": null, + "id": 5866, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5760, + "src": "4525:14:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4525:14:26" + } + ], + "name": "setRegistryKeeper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5864, + "name": "_registryKeeper", + "nodeType": "VariableDeclaration", + "scope": 5878, + "src": "4493:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4493:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4492:25:26" + }, + "returnParameters": { + "id": 5868, + "nodeType": "ParameterList", + "parameters": [], + "src": "4540:0:26" + }, + "scope": 6120, + "src": "4466:175:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5893, + "nodeType": "Block", + "src": "4722:110:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5885, + "name": "defaultPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5694, + "src": "4732:18:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5886, + "name": "_panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5880, + "src": "4753:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4732:33:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5888, + "nodeType": "ExpressionStatement", + "src": "4732:33:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5890, + "name": "defaultPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5694, + "src": "4806:18:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5889, + "name": "DefaultPanicButtonUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5726, + "src": "4780:25:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 5891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4780:45:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5892, + "nodeType": "EmitStatement", + "src": "4775:50:26" + } + ] + }, + "documentation": null, + "id": 5894, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5883, + "modifierName": { + "argumentTypes": null, + "id": 5882, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5760, + "src": "4707:14:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4707:14:26" + } + ], + "name": "setDefaultPanicButton", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5880, + "name": "_panicButton", + "nodeType": "VariableDeclaration", + "scope": 5894, + "src": "4678:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4678:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4677:22:26" + }, + "returnParameters": { + "id": 5884, + "nodeType": "ParameterList", + "parameters": [], + "src": "4722:0:26" + }, + "scope": 6120, + "src": "4647:185:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5937, + "nodeType": "Block", + "src": "5014:442:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5907, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5692, + "src": "5045:12:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 5909, + "indexExpression": { + "argumentTypes": null, + "id": 5908, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5896, + "src": "5058:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5045:31:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5088:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5080:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5080:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5045:45:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44697361626c65642070616e696320627574746f6e2063616e6e6f742062652075706461746564", + "id": 5914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5104:41:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", + "typeString": "literal_string \"Disabled panic button cannot be updated\"" + }, + "value": "Disabled panic button cannot be updated" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", + "typeString": "literal_string \"Disabled panic button cannot be updated\"" + } + ], + "id": 5906, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "5024:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5024:131:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5916, + "nodeType": "ExpressionStatement", + "src": "5024:131:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5918, + "name": "_panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "5186:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5210:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5202:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5202:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5186:26:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "50616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373", + "id": 5923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5226:39:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", + "typeString": "literal_string \"Panic button must be non-zero address\"" + }, + "value": "Panic button must be non-zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", + "typeString": "literal_string \"Panic button must be non-zero address\"" + } + ], + "id": 5917, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "5165:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5165:110:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5925, + "nodeType": "ExpressionStatement", + "src": "5165:110:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 5930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5926, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5692, + "src": "5286:12:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 5928, + "indexExpression": { + "argumentTypes": null, + "id": 5927, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5896, + "src": "5299:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5286:31:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5929, + "name": "_panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "5320:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5286:46:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5931, + "nodeType": "ExpressionStatement", + "src": "5286:46:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5933, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5896, + "src": "5396:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5934, + "name": "_panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "5427:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5932, + "name": "OperatorContractPanicButtonUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5736, + "src": "5348:34:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 5935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5348:101:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5936, + "nodeType": "EmitStatement", + "src": "5343:106:26" + } + ] + }, + "documentation": null, + "id": 5938, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 5901, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5896, + "src": "4980:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 5902, + "modifierName": { + "argumentTypes": null, + "id": 5900, + "name": "onlyForApprovedContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "4956:23:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4956:42:26" + }, + { + "arguments": null, + "id": 5904, + "modifierName": { + "argumentTypes": null, + "id": 5903, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5760, + "src": "4999:14:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4999:14:26" + } + ], + "name": "setOperatorContractPanicButton", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5896, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5938, + "src": "4887:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4887:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5898, + "name": "_panicButton", + "nodeType": "VariableDeclaration", + "scope": 5938, + "src": "4922:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4922:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4877:71:26" + }, + "returnParameters": { + "id": 5905, + "nodeType": "ParameterList", + "parameters": [], + "src": "5014:0:26" + }, + "scope": 6120, + "src": "4838:618:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5971, + "nodeType": "Block", + "src": "5626:263:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5949, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5692, + "src": "5657:12:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 5951, + "indexExpression": { + "argumentTypes": null, + "id": 5950, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5940, + "src": "5670:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5657:31:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5700:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5692:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5692:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5657:45:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "50616e696320627574746f6e20616c72656164792064697361626c6564", + "id": 5956, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5716:31:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", + "typeString": "literal_string \"Panic button already disabled\"" + }, + "value": "Panic button already disabled" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", + "typeString": "literal_string \"Panic button already disabled\"" + } + ], + "id": 5948, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "5636:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5636:121:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5958, + "nodeType": "ExpressionStatement", + "src": "5636:121:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 5965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5959, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5692, + "src": "5768:12:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 5961, + "indexExpression": { + "argumentTypes": null, + "id": 5960, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5940, + "src": "5781:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5768:31:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5810:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5802:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5802:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5768:44:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5966, + "nodeType": "ExpressionStatement", + "src": "5768:44:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5968, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5940, + "src": "5864:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5967, + "name": "OperatorContractPanicButtonDisabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "5828:35:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 5969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5828:54:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5970, + "nodeType": "EmitStatement", + "src": "5823:59:26" + } + ] + }, + "documentation": null, + "id": 5972, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 5943, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5940, + "src": "5580:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 5944, + "modifierName": { + "argumentTypes": null, + "id": 5942, + "name": "onlyForApprovedContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "5556:23:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5556:42:26" + }, + { + "arguments": null, + "id": 5946, + "modifierName": { + "argumentTypes": null, + "id": 5945, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5760, + "src": "5607:14:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5607:14:26" + } + ], + "name": "disableOperatorContractPanicButton", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5941, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5940, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 5972, + "src": "5506:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5506:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5505:27:26" + }, + "returnParameters": { + "id": 5947, + "nodeType": "ParameterList", + "parameters": [], + "src": "5626:0:26" + }, + "scope": 6120, + "src": "5462:427:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5992, + "nodeType": "Block", + "src": "6037:213:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5981, + "name": "operatorContractUpgraders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5698, + "src": "6047:25:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 5983, + "indexExpression": { + "argumentTypes": null, + "id": 5982, + "name": "_serviceContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5974, + "src": "6073:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6047:43:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5984, + "name": "_operatorContractUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5976, + "src": "6093:25:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6047:71:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5986, + "nodeType": "ExpressionStatement", + "src": "6047:71:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5988, + "name": "_serviceContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5974, + "src": "6178:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5989, + "name": "_operatorContractUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5976, + "src": "6208:25:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5987, + "name": "OperatorContractUpgraderUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5742, + "src": "6133:31:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 5990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6133:110:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5991, + "nodeType": "EmitStatement", + "src": "6128:115:26" + } + ] + }, + "documentation": null, + "id": 5993, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5979, + "modifierName": { + "argumentTypes": null, + "id": 5978, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5760, + "src": "6022:14:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6022:14:26" + } + ], + "name": "setOperatorContractUpgrader", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5974, + "name": "_serviceContract", + "nodeType": "VariableDeclaration", + "scope": 5993, + "src": "5941:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5941:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5976, + "name": "_operatorContractUpgrader", + "nodeType": "VariableDeclaration", + "scope": 5993, + "src": "5975:33:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5975:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5931:83:26" + }, + "returnParameters": { + "id": 5980, + "nodeType": "ParameterList", + "parameters": [], + "src": "6037:0:26" + }, + "scope": 6120, + "src": "5895:355:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6013, + "nodeType": "Block", + "src": "6397:211:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6002, + "name": "serviceContractUpgraders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5702, + "src": "6407:24:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 6004, + "indexExpression": { + "argumentTypes": null, + "id": 6003, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5995, + "src": "6432:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6407:43:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6005, + "name": "_serviceContractUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5997, + "src": "6453:24:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6407:70:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6007, + "nodeType": "ExpressionStatement", + "src": "6407:70:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6009, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5995, + "src": "6536:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6010, + "name": "_serviceContractUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5997, + "src": "6567:24:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6008, + "name": "ServiceContractUpgraderUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5748, + "src": "6492:30:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 6011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6492:109:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6012, + "nodeType": "EmitStatement", + "src": "6487:114:26" + } + ] + }, + "documentation": null, + "id": 6014, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6000, + "modifierName": { + "argumentTypes": null, + "id": 5999, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5760, + "src": "6382:14:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6382:14:26" + } + ], + "name": "setServiceContractUpgrader", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5998, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5995, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 6014, + "src": "6301:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5994, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6301:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5997, + "name": "_serviceContractUpgrader", + "nodeType": "VariableDeclaration", + "scope": 6014, + "src": "6336:32:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6336:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6291:83:26" + }, + "returnParameters": { + "id": 6001, + "nodeType": "ParameterList", + "parameters": [], + "src": "6397:0:26" + }, + "scope": 6120, + "src": "6256:352:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6041, + "nodeType": "Block", + "src": "6764:196:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6024, + "name": "operatorContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5706, + "src": "6774:17:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + } + }, + "id": 6026, + "indexExpression": { + "argumentTypes": null, + "id": 6025, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6016, + "src": "6792:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6774:35:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6027, + "name": "ContractStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5684, + "src": "6812:14:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ContractStatus_$5684_$", + "typeString": "type(enum KeepRegistry.ContractStatus)" + } + }, + "id": 6028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Approved", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6812:23:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "src": "6774:61:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "id": 6030, + "nodeType": "ExpressionStatement", + "src": "6774:61:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 6035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6031, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5692, + "src": "6845:12:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 6033, + "indexExpression": { + "argumentTypes": null, + "id": 6032, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6016, + "src": "6858:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6845:30:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6034, + "name": "defaultPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5694, + "src": "6878:18:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6845:51:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6036, + "nodeType": "ExpressionStatement", + "src": "6845:51:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6038, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6016, + "src": "6936:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6037, + "name": "OperatorContractApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5710, + "src": "6911:24:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6911:42:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6040, + "nodeType": "EmitStatement", + "src": "6906:47:26" + } + ] + }, + "documentation": null, + "id": 6042, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 6019, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6016, + "src": "6715:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 6020, + "modifierName": { + "argumentTypes": null, + "id": 6018, + "name": "onlyForNewContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5814, + "src": "6696:18:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "6696:36:26" + }, + { + "arguments": null, + "id": 6022, + "modifierName": { + "argumentTypes": null, + "id": 6021, + "name": "onlyRegistryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5772, + "src": "6741:18:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6741:18:26" + } + ], + "name": "approveOperatorContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6016, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 6042, + "src": "6647:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6647:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6646:26:26" + }, + "returnParameters": { + "id": 6023, + "nodeType": "ParameterList", + "parameters": [], + "src": "6764:0:26" + }, + "scope": 6120, + "src": "6614:346:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6064, + "nodeType": "Block", + "src": "7136:135:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6053, + "name": "operatorContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5706, + "src": "7146:17:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + } + }, + "id": 6055, + "indexExpression": { + "argumentTypes": null, + "id": 6054, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6044, + "src": "7164:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7146:35:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6056, + "name": "ContractStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5684, + "src": "7184:14:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ContractStatus_$5684_$", + "typeString": "type(enum KeepRegistry.ContractStatus)" + } + }, + "id": 6057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Disabled", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7184:23:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "src": "7146:61:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "id": 6059, + "nodeType": "ExpressionStatement", + "src": "7146:61:26" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6061, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6044, + "src": "7247:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6060, + "name": "OperatorContractDisabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5714, + "src": "7222:24:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7222:42:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6063, + "nodeType": "EmitStatement", + "src": "7217:47:26" + } + ] + }, + "documentation": null, + "id": 6065, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 6047, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6044, + "src": "7072:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 6048, + "modifierName": { + "argumentTypes": null, + "id": 6046, + "name": "onlyForApprovedContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "7048:23:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "7048:41:26" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 6050, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6044, + "src": "7114:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 6051, + "modifierName": { + "argumentTypes": null, + "id": 6049, + "name": "onlyPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5801, + "src": "7098:15:26", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "7098:33:26" + } + ], + "name": "disableOperatorContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6044, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 6065, + "src": "6999:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6999:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6998:26:26" + }, + "returnParameters": { + "id": 6052, + "nodeType": "ParameterList", + "parameters": [], + "src": "7136:0:26" + }, + "scope": 6120, + "src": "6966:305:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6079, + "nodeType": "Block", + "src": "7389:81:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + }, + "id": 6077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6072, + "name": "operatorContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5706, + "src": "7406:17:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + } + }, + "id": 6074, + "indexExpression": { + "argumentTypes": null, + "id": 6073, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6067, + "src": "7424:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7406:35:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6075, + "name": "ContractStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5684, + "src": "7445:14:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ContractStatus_$5684_$", + "typeString": "type(enum KeepRegistry.ContractStatus)" + } + }, + "id": 6076, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "New", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7445:18:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "src": "7406:57:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6071, + "id": 6078, + "nodeType": "Return", + "src": "7399:64:26" + } + ] + }, + "documentation": null, + "id": 6080, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isNewOperatorContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6067, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 6080, + "src": "7308:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6066, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7308:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7307:26:26" + }, + "returnParameters": { + "id": 6071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6070, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6080, + "src": "7379:4:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6069, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7379:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7378:6:26" + }, + "scope": 6120, + "src": "7277:193:26", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6094, + "nodeType": "Block", + "src": "7593:86:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + }, + "id": 6092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6087, + "name": "operatorContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5706, + "src": "7610:17:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + } + }, + "id": 6089, + "indexExpression": { + "argumentTypes": null, + "id": 6088, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6082, + "src": "7628:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7610:35:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6090, + "name": "ContractStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5684, + "src": "7649:14:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ContractStatus_$5684_$", + "typeString": "type(enum KeepRegistry.ContractStatus)" + } + }, + "id": 6091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Approved", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7649:23:26", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "src": "7610:62:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6086, + "id": 6093, + "nodeType": "Return", + "src": "7603:69:26" + } + ] + }, + "documentation": null, + "id": 6095, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedOperatorContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6082, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 6095, + "src": "7512:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6081, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7512:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7511:26:26" + }, + "returnParameters": { + "id": 6086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6085, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6095, + "src": "7583:4:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6084, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7583:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7582:6:26" + }, + "scope": 6120, + "src": "7476:203:26", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6106, + "nodeType": "Block", + "src": "7806:67:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6102, + "name": "operatorContractUpgraders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5698, + "src": "7823:25:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 6104, + "indexExpression": { + "argumentTypes": null, + "id": 6103, + "name": "_serviceContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6097, + "src": "7849:16:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7823:43:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6101, + "id": 6105, + "nodeType": "Return", + "src": "7816:50:26" + } + ] + }, + "documentation": null, + "id": 6107, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "operatorContractUpgraderFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6097, + "name": "_serviceContract", + "nodeType": "VariableDeclaration", + "scope": 6107, + "src": "7722:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7722:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7721:26:26" + }, + "returnParameters": { + "id": 6101, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6100, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6107, + "src": "7793:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6099, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7793:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7792:9:26" + }, + "scope": 6120, + "src": "7685:188:26", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6118, + "nodeType": "Block", + "src": "8000:67:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6114, + "name": "serviceContractUpgraders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5702, + "src": "8017:24:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 6116, + "indexExpression": { + "argumentTypes": null, + "id": 6115, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6109, + "src": "8042:17:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8017:43:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6113, + "id": 6117, + "nodeType": "Return", + "src": "8010:50:26" + } + ] + }, + "documentation": null, + "id": 6119, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "serviceContractUpgraderFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6109, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 6119, + "src": "7915:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7915:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7914:27:26" + }, + "returnParameters": { + "id": 6113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6112, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6119, + "src": "7987:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7987:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7986:9:26" + }, + "scope": 6120, + "src": "7879:188:26", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6121, + "src": "120:7949:26" + } + ], + "src": "0:8070:26" + }, + "legacyAST": { + "attributes": { + "absolutePath": "project:/contracts/KeepRegistry.sol", + "exportedSymbols": { + "KeepRegistry": [6120] + } + }, + "children": [ + { + "attributes": { + "literals": ["solidity", "0.5", ".17"] + }, + "id": 5680, + "name": "PragmaDirective", + "src": "0:23:26" + }, + { + "attributes": { + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "contract", + "documentation": "@title KeepRegistry\n @notice Governance owned registry of approved contracts and roles.", + "fullyImplemented": true, + "linearizedBaseContracts": [6120], + "name": "KeepRegistry", + "scope": 6121 + }, + "children": [ + { + "attributes": { + "canonicalName": "KeepRegistry.ContractStatus", + "name": "ContractStatus" + }, + "children": [ + { + "attributes": { + "name": "New" + }, + "id": 5681, + "name": "EnumValue", + "src": "169:3:26" + }, + { + "attributes": { + "name": "Approved" + }, + "id": 5682, + "name": "EnumValue", + "src": "174:8:26" + }, + { + "attributes": { + "name": "Disabled" + }, + "id": 5683, + "name": "EnumValue", + "src": "184:8:26" + } + ], + "id": 5684, + "name": "EnumDefinition", + "src": "148:45:26" + }, + { + "attributes": { + "constant": false, + "name": "governance", + "scope": 6120, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5685, + "name": "ElementaryTypeName", + "src": "369:7:26" + } + ], + "id": 5686, + "name": "VariableDeclaration", + "src": "369:25:26" + }, + { + "attributes": { + "constant": false, + "name": "registryKeeper", + "scope": 6120, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5687, + "name": "ElementaryTypeName", + "src": "588:7:26" + } + ], + "id": 5688, + "name": "VariableDeclaration", + "src": "588:29:26" + }, + { + "attributes": { + "constant": false, + "name": "panicButtons", + "scope": 6120, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => address)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 5689, + "name": "ElementaryTypeName", + "src": "1274:7:26" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5690, + "name": "ElementaryTypeName", + "src": "1285:7:26" + } + ], + "id": 5691, + "name": "Mapping", + "src": "1266:27:26" + } + ], + "id": 5692, + "name": "VariableDeclaration", + "src": "1266:47:26" + }, + { + "attributes": { + "constant": false, + "name": "defaultPanicButton", + "scope": 6120, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5693, + "name": "ElementaryTypeName", + "src": "1449:7:26" + } + ], + "id": 5694, + "name": "VariableDeclaration", + "src": "1449:33:26" + }, + { + "attributes": { + "constant": false, + "name": "operatorContractUpgraders", + "scope": 6120, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => address)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 5695, + "name": "ElementaryTypeName", + "src": "1800:7:26" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5696, + "name": "ElementaryTypeName", + "src": "1811:7:26" + } + ], + "id": 5697, + "name": "Mapping", + "src": "1792:27:26" + } + ], + "id": 5698, + "name": "VariableDeclaration", + "src": "1792:60:26" + }, + { + "attributes": { + "constant": false, + "name": "serviceContractUpgraders", + "scope": 6120, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => address)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 5699, + "name": "ElementaryTypeName", + "src": "2377:7:26" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5700, + "name": "ElementaryTypeName", + "src": "2388:7:26" + } + ], + "id": 5701, + "name": "Mapping", + "src": "2369:27:26" + } + ], + "id": 5702, + "name": "VariableDeclaration", + "src": "2369:59:26" + }, + { + "attributes": { + "constant": false, + "name": "operatorContracts", + "scope": 6120, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => enum KeepRegistry.ContractStatus)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 5703, + "name": "ElementaryTypeName", + "src": "2485:7:26" + }, + { + "attributes": { + "contractScope": null, + "name": "ContractStatus", + "referencedDeclaration": 5684, + "type": "enum KeepRegistry.ContractStatus" + }, + "id": 5704, + "name": "UserDefinedTypeName", + "src": "2496:14:26" + } + ], + "id": 5705, + "name": "Mapping", + "src": "2477:34:26" + } + ], + "id": 5706, + "name": "VariableDeclaration", + "src": "2477:59:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractApproved" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 5710, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5707, + "name": "ElementaryTypeName", + "src": "2574:7:26" + } + ], + "id": 5708, + "name": "VariableDeclaration", + "src": "2574:24:26" + } + ], + "id": 5709, + "name": "ParameterList", + "src": "2573:26:26" + } + ], + "id": 5710, + "name": "EventDefinition", + "src": "2543:57:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractDisabled" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 5714, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5711, + "name": "ElementaryTypeName", + "src": "2636:7:26" + } + ], + "id": 5712, + "name": "VariableDeclaration", + "src": "2636:24:26" + } + ], + "id": 5713, + "name": "ParameterList", + "src": "2635:26:26" + } + ], + "id": 5714, + "name": "EventDefinition", + "src": "2605:57:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "GovernanceUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "governance", + "scope": 5718, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5715, + "name": "ElementaryTypeName", + "src": "2692:7:26" + } + ], + "id": 5716, + "name": "VariableDeclaration", + "src": "2692:18:26" + } + ], + "id": 5717, + "name": "ParameterList", + "src": "2691:20:26" + } + ], + "id": 5718, + "name": "EventDefinition", + "src": "2668:44:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "RegistryKeeperUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "registryKeeper", + "scope": 5722, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5719, + "name": "ElementaryTypeName", + "src": "2745:7:26" + } + ], + "id": 5720, + "name": "VariableDeclaration", + "src": "2745:22:26" + } + ], + "id": 5721, + "name": "ParameterList", + "src": "2744:24:26" + } + ], + "id": 5722, + "name": "EventDefinition", + "src": "2717:52:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "DefaultPanicButtonUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "defaultPanicButton", + "scope": 5726, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5723, + "name": "ElementaryTypeName", + "src": "2806:7:26" + } + ], + "id": 5724, + "name": "VariableDeclaration", + "src": "2806:26:26" + } + ], + "id": 5725, + "name": "ParameterList", + "src": "2805:28:26" + } + ], + "id": 5726, + "name": "EventDefinition", + "src": "2774:60:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractPanicButtonDisabled" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 5730, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5727, + "name": "ElementaryTypeName", + "src": "2881:7:26" + } + ], + "id": 5728, + "name": "VariableDeclaration", + "src": "2881:24:26" + } + ], + "id": 5729, + "name": "ParameterList", + "src": "2880:26:26" + } + ], + "id": 5730, + "name": "EventDefinition", + "src": "2839:68:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractPanicButtonUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 5736, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5731, + "name": "ElementaryTypeName", + "src": "2962:7:26" + } + ], + "id": 5732, + "name": "VariableDeclaration", + "src": "2962:24:26" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "panicButton", + "scope": 5736, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5733, + "name": "ElementaryTypeName", + "src": "2996:7:26" + } + ], + "id": 5734, + "name": "VariableDeclaration", + "src": "2996:19:26" + } + ], + "id": 5735, + "name": "ParameterList", + "src": "2952:69:26" + } + ], + "id": 5736, + "name": "EventDefinition", + "src": "2912:110:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractUpgraderUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "serviceContract", + "scope": 5742, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5737, + "name": "ElementaryTypeName", + "src": "3074:7:26" + } + ], + "id": 5738, + "name": "VariableDeclaration", + "src": "3074:23:26" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "upgrader", + "scope": 5742, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5739, + "name": "ElementaryTypeName", + "src": "3107:7:26" + } + ], + "id": 5740, + "name": "VariableDeclaration", + "src": "3107:16:26" + } + ], + "id": 5741, + "name": "ParameterList", + "src": "3064:65:26" + } + ], + "id": 5742, + "name": "EventDefinition", + "src": "3027:103:26" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "ServiceContractUpgraderUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 5748, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5743, + "name": "ElementaryTypeName", + "src": "3181:7:26" + } + ], + "id": 5744, + "name": "VariableDeclaration", + "src": "3181:24:26" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "keeper", + "scope": 5748, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5745, + "name": "ElementaryTypeName", + "src": "3215:7:26" + } + ], + "id": 5746, + "name": "VariableDeclaration", + "src": "3215:14:26" + } + ], + "id": 5747, + "name": "ParameterList", + "src": "3171:64:26" + } + ], + "id": 5748, + "name": "EventDefinition", + "src": "3135:101:26" + }, + { + "attributes": { + "documentation": null, + "name": "onlyGovernance", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5749, + "name": "ParameterList", + "src": "3265:2:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5750, + "name": "Identifier", + "src": "3278:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5686, + "type": "address", + "value": "governance" + }, + "id": 5751, + "name": "Identifier", + "src": "3286:10:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 5752, + "name": "Identifier", + "src": "3300:3:26" + } + ], + "id": 5753, + "name": "MemberAccess", + "src": "3300:10:26" + } + ], + "id": 5754, + "name": "BinaryOperation", + "src": "3286:24:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 5755, + "name": "Literal", + "src": "3312:16:26" + } + ], + "id": 5756, + "name": "FunctionCall", + "src": "3278:51:26" + } + ], + "id": 5757, + "name": "ExpressionStatement", + "src": "3278:51:26" + }, + { + "id": 5758, + "name": "PlaceholderStatement", + "src": "3339:1:26" + } + ], + "id": 5759, + "name": "Block", + "src": "3268:79:26" + } + ], + "id": 5760, + "name": "ModifierDefinition", + "src": "3242:105:26" + }, + { + "attributes": { + "documentation": null, + "name": "onlyRegistryKeeper", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5761, + "name": "ParameterList", + "src": "3380:2:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5762, + "name": "Identifier", + "src": "3393:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5688, + "type": "address", + "value": "registryKeeper" + }, + "id": 5763, + "name": "Identifier", + "src": "3401:14:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 5764, + "name": "Identifier", + "src": "3419:3:26" + } + ], + "id": 5765, + "name": "MemberAccess", + "src": "3419:10:26" + } + ], + "id": 5766, + "name": "BinaryOperation", + "src": "3401:28:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 5767, + "name": "Literal", + "src": "3431:16:26" + } + ], + "id": 5768, + "name": "FunctionCall", + "src": "3393:55:26" + } + ], + "id": 5769, + "name": "ExpressionStatement", + "src": "3393:55:26" + }, + { + "id": 5770, + "name": "PlaceholderStatement", + "src": "3458:1:26" + } + ], + "id": 5771, + "name": "Block", + "src": "3383:83:26" + } + ], + "id": 5772, + "name": "ModifierDefinition", + "src": "3353:113:26" + }, + { + "attributes": { + "documentation": null, + "name": "onlyPanicButton", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 5801, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5773, + "name": "ElementaryTypeName", + "src": "3497:7:26" + } + ], + "id": 5774, + "name": "VariableDeclaration", + "src": "3497:25:26" + } + ], + "id": 5775, + "name": "ParameterList", + "src": "3496:27:26" + }, + { + "children": [ + { + "attributes": { + "assignments": [5777] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "panicButton", + "scope": 5800, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5776, + "name": "ElementaryTypeName", + "src": "3534:7:26" + } + ], + "id": 5777, + "name": "VariableDeclaration", + "src": "3534:19:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5692, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 5778, + "name": "Identifier", + "src": "3556:12:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5774, + "type": "address", + "value": "_operatorContract" + }, + "id": 5779, + "name": "Identifier", + "src": "3569:17:26" + } + ], + "id": 5780, + "name": "IndexAccess", + "src": "3556:31:26" + } + ], + "id": 5781, + "name": "VariableDeclarationStatement", + "src": "3534:53:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", + "typeString": "literal_string \"Panic button disabled\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5782, + "name": "Identifier", + "src": "3597:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5777, + "type": "address", + "value": "panicButton" + }, + "id": 5783, + "name": "Identifier", + "src": "3605:11:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 5784, + "name": "ElementaryTypeNameExpression", + "src": "3620:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 5785, + "name": "Literal", + "src": "3628:1:26" + } + ], + "id": 5786, + "name": "FunctionCall", + "src": "3620:10:26" + } + ], + "id": 5787, + "name": "BinaryOperation", + "src": "3605:25:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "50616e696320627574746f6e2064697361626c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Panic button disabled\"", + "value": "Panic button disabled" + }, + "id": 5788, + "name": "Literal", + "src": "3632:23:26" + } + ], + "id": 5789, + "name": "FunctionCall", + "src": "3597:59:26" + } + ], + "id": 5790, + "name": "ExpressionStatement", + "src": "3597:59:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5791, + "name": "Identifier", + "src": "3666:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5777, + "type": "address", + "value": "panicButton" + }, + "id": 5792, + "name": "Identifier", + "src": "3674:11:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 5793, + "name": "Identifier", + "src": "3689:3:26" + } + ], + "id": 5794, + "name": "MemberAccess", + "src": "3689:10:26" + } + ], + "id": 5795, + "name": "BinaryOperation", + "src": "3674:25:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 5796, + "name": "Literal", + "src": "3701:16:26" + } + ], + "id": 5797, + "name": "FunctionCall", + "src": "3666:52:26" + } + ], + "id": 5798, + "name": "ExpressionStatement", + "src": "3666:52:26" + }, + { + "id": 5799, + "name": "PlaceholderStatement", + "src": "3728:1:26" + } + ], + "id": 5800, + "name": "Block", + "src": "3524:212:26" + } + ], + "id": 5801, + "name": "ModifierDefinition", + "src": "3472:264:26" + }, + { + "attributes": { + "documentation": null, + "name": "onlyForNewContract", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 5814, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5802, + "name": "ElementaryTypeName", + "src": "3770:7:26" + } + ], + "id": 5803, + "name": "VariableDeclaration", + "src": "3770:25:26" + } + ], + "id": 5804, + "name": "ParameterList", + "src": "3769:27:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", + "typeString": "literal_string \"Not a new operator contract\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5805, + "name": "Identifier", + "src": "3807:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 6080, + "type": "function (address) view returns (bool)", + "value": "isNewOperatorContract" + }, + "id": 5806, + "name": "Identifier", + "src": "3828:21:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5803, + "type": "address", + "value": "_operatorContract" + }, + "id": 5807, + "name": "Identifier", + "src": "3850:17:26" + } + ], + "id": 5808, + "name": "FunctionCall", + "src": "3828:40:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f742061206e6577206f70657261746f7220636f6e7472616374", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not a new operator contract\"", + "value": "Not a new operator contract" + }, + "id": 5809, + "name": "Literal", + "src": "3882:29:26" + } + ], + "id": 5810, + "name": "FunctionCall", + "src": "3807:114:26" + } + ], + "id": 5811, + "name": "ExpressionStatement", + "src": "3807:114:26" + }, + { + "id": 5812, + "name": "PlaceholderStatement", + "src": "3931:1:26" + } + ], + "id": 5813, + "name": "Block", + "src": "3797:142:26" + } + ], + "id": 5814, + "name": "ModifierDefinition", + "src": "3742:197:26" + }, + { + "attributes": { + "documentation": null, + "name": "onlyForApprovedContract", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 5827, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5815, + "name": "ElementaryTypeName", + "src": "3978:7:26" + } + ], + "id": 5816, + "name": "VariableDeclaration", + "src": "3978:25:26" + } + ], + "id": 5817, + "name": "ParameterList", + "src": "3977:27:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", + "typeString": "literal_string \"Not an approved operator contract\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5818, + "name": "Identifier", + "src": "4015:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 6095, + "type": "function (address) view returns (bool)", + "value": "isApprovedOperatorContract" + }, + "id": 5819, + "name": "Identifier", + "src": "4036:26:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5816, + "type": "address", + "value": "_operatorContract" + }, + "id": 5820, + "name": "Identifier", + "src": "4063:17:26" + } + ], + "id": 5821, + "name": "FunctionCall", + "src": "4036:45:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420616e20617070726f766564206f70657261746f7220636f6e7472616374", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not an approved operator contract\"", + "value": "Not an approved operator contract" + }, + "id": 5822, + "name": "Literal", + "src": "4095:35:26" + } + ], + "id": 5823, + "name": "FunctionCall", + "src": "4015:125:26" + } + ], + "id": 5824, + "name": "ExpressionStatement", + "src": "4015:125:26" + }, + { + "id": 5825, + "name": "PlaceholderStatement", + "src": "4150:1:26" + } + ], + "id": 5826, + "name": "Block", + "src": "4005:153:26" + } + ], + "id": 5827, + "name": "ModifierDefinition", + "src": "3945:213:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "modifiers": [null], + "name": "", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5828, + "name": "ParameterList", + "src": "4175:2:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5829, + "name": "ParameterList", + "src": "4185:0:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5686, + "type": "address", + "value": "governance" + }, + "id": 5830, + "name": "Identifier", + "src": "4195:10:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 5831, + "name": "Identifier", + "src": "4208:3:26" + } + ], + "id": 5832, + "name": "MemberAccess", + "src": "4208:10:26" + } + ], + "id": 5833, + "name": "Assignment", + "src": "4195:23:26" + } + ], + "id": 5834, + "name": "ExpressionStatement", + "src": "4195:23:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5688, + "type": "address", + "value": "registryKeeper" + }, + "id": 5835, + "name": "Identifier", + "src": "4228:14:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 5836, + "name": "Identifier", + "src": "4245:3:26" + } + ], + "id": 5837, + "name": "MemberAccess", + "src": "4245:10:26" + } + ], + "id": 5838, + "name": "Assignment", + "src": "4228:27:26" + } + ], + "id": 5839, + "name": "ExpressionStatement", + "src": "4228:27:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5694, + "type": "address", + "value": "defaultPanicButton" + }, + "id": 5840, + "name": "Identifier", + "src": "4265:18:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 5841, + "name": "Identifier", + "src": "4286:3:26" + } + ], + "id": 5842, + "name": "MemberAccess", + "src": "4286:10:26" + } + ], + "id": 5843, + "name": "Assignment", + "src": "4265:31:26" + } + ], + "id": 5844, + "name": "ExpressionStatement", + "src": "4265:31:26" + } + ], + "id": 5845, + "name": "Block", + "src": "4185:118:26" + } + ], + "id": 5846, + "name": "FunctionDefinition", + "src": "4164:139:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setGovernance", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_governance", + "scope": 5862, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5847, + "name": "ElementaryTypeName", + "src": "4332:7:26" + } + ], + "id": 5848, + "name": "VariableDeclaration", + "src": "4332:19:26" + } + ], + "id": 5849, + "name": "ParameterList", + "src": "4331:21:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5852, + "name": "ParameterList", + "src": "4375:0:26" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5760, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 5850, + "name": "Identifier", + "src": "4360:14:26" + } + ], + "id": 5851, + "name": "ModifierInvocation", + "src": "4360:14:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5686, + "type": "address", + "value": "governance" + }, + "id": 5853, + "name": "Identifier", + "src": "4385:10:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5848, + "type": "address", + "value": "_governance" + }, + "id": 5854, + "name": "Identifier", + "src": "4398:11:26" + } + ], + "id": 5855, + "name": "Assignment", + "src": "4385:24:26" + } + ], + "id": 5856, + "name": "ExpressionStatement", + "src": "4385:24:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5718, + "type": "function (address)", + "value": "GovernanceUpdated" + }, + "id": 5857, + "name": "Identifier", + "src": "4424:17:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5686, + "type": "address", + "value": "governance" + }, + "id": 5858, + "name": "Identifier", + "src": "4442:10:26" + } + ], + "id": 5859, + "name": "FunctionCall", + "src": "4424:29:26" + } + ], + "id": 5860, + "name": "EmitStatement", + "src": "4419:34:26" + } + ], + "id": 5861, + "name": "Block", + "src": "4375:85:26" + } + ], + "id": 5862, + "name": "FunctionDefinition", + "src": "4309:151:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setRegistryKeeper", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_registryKeeper", + "scope": 5878, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5863, + "name": "ElementaryTypeName", + "src": "4493:7:26" + } + ], + "id": 5864, + "name": "VariableDeclaration", + "src": "4493:23:26" + } + ], + "id": 5865, + "name": "ParameterList", + "src": "4492:25:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5868, + "name": "ParameterList", + "src": "4540:0:26" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5760, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 5866, + "name": "Identifier", + "src": "4525:14:26" + } + ], + "id": 5867, + "name": "ModifierInvocation", + "src": "4525:14:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5688, + "type": "address", + "value": "registryKeeper" + }, + "id": 5869, + "name": "Identifier", + "src": "4550:14:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5864, + "type": "address", + "value": "_registryKeeper" + }, + "id": 5870, + "name": "Identifier", + "src": "4567:15:26" + } + ], + "id": 5871, + "name": "Assignment", + "src": "4550:32:26" + } + ], + "id": 5872, + "name": "ExpressionStatement", + "src": "4550:32:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5722, + "type": "function (address)", + "value": "RegistryKeeperUpdated" + }, + "id": 5873, + "name": "Identifier", + "src": "4597:21:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5688, + "type": "address", + "value": "registryKeeper" + }, + "id": 5874, + "name": "Identifier", + "src": "4619:14:26" + } + ], + "id": 5875, + "name": "FunctionCall", + "src": "4597:37:26" + } + ], + "id": 5876, + "name": "EmitStatement", + "src": "4592:42:26" + } + ], + "id": 5877, + "name": "Block", + "src": "4540:101:26" + } + ], + "id": 5878, + "name": "FunctionDefinition", + "src": "4466:175:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setDefaultPanicButton", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_panicButton", + "scope": 5894, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5879, + "name": "ElementaryTypeName", + "src": "4678:7:26" + } + ], + "id": 5880, + "name": "VariableDeclaration", + "src": "4678:20:26" + } + ], + "id": 5881, + "name": "ParameterList", + "src": "4677:22:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5884, + "name": "ParameterList", + "src": "4722:0:26" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5760, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 5882, + "name": "Identifier", + "src": "4707:14:26" + } + ], + "id": 5883, + "name": "ModifierInvocation", + "src": "4707:14:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5694, + "type": "address", + "value": "defaultPanicButton" + }, + "id": 5885, + "name": "Identifier", + "src": "4732:18:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5880, + "type": "address", + "value": "_panicButton" + }, + "id": 5886, + "name": "Identifier", + "src": "4753:12:26" + } + ], + "id": 5887, + "name": "Assignment", + "src": "4732:33:26" + } + ], + "id": 5888, + "name": "ExpressionStatement", + "src": "4732:33:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5726, + "type": "function (address)", + "value": "DefaultPanicButtonUpdated" + }, + "id": 5889, + "name": "Identifier", + "src": "4780:25:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5694, + "type": "address", + "value": "defaultPanicButton" + }, + "id": 5890, + "name": "Identifier", + "src": "4806:18:26" + } + ], + "id": 5891, + "name": "FunctionCall", + "src": "4780:45:26" + } + ], + "id": 5892, + "name": "EmitStatement", + "src": "4775:50:26" + } + ], + "id": 5893, + "name": "Block", + "src": "4722:110:26" + } + ], + "id": 5894, + "name": "FunctionDefinition", + "src": "4647:185:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setOperatorContractPanicButton", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 5938, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5895, + "name": "ElementaryTypeName", + "src": "4887:7:26" + } + ], + "id": 5896, + "name": "VariableDeclaration", + "src": "4887:25:26" + }, + { + "attributes": { + "constant": false, + "name": "_panicButton", + "scope": 5938, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5897, + "name": "ElementaryTypeName", + "src": "4922:7:26" + } + ], + "id": 5898, + "name": "VariableDeclaration", + "src": "4922:20:26" + } + ], + "id": 5899, + "name": "ParameterList", + "src": "4877:71:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5905, + "name": "ParameterList", + "src": "5014:0:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5827, + "type": "modifier (address)", + "value": "onlyForApprovedContract" + }, + "id": 5900, + "name": "Identifier", + "src": "4956:23:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5896, + "type": "address", + "value": "_operatorContract" + }, + "id": 5901, + "name": "Identifier", + "src": "4980:17:26" + } + ], + "id": 5902, + "name": "ModifierInvocation", + "src": "4956:42:26" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5760, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 5903, + "name": "Identifier", + "src": "4999:14:26" + } + ], + "id": 5904, + "name": "ModifierInvocation", + "src": "4999:14:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", + "typeString": "literal_string \"Disabled panic button cannot be updated\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5906, + "name": "Identifier", + "src": "5024:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5692, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 5907, + "name": "Identifier", + "src": "5045:12:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5896, + "type": "address", + "value": "_operatorContract" + }, + "id": 5908, + "name": "Identifier", + "src": "5058:17:26" + } + ], + "id": 5909, + "name": "IndexAccess", + "src": "5045:31:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 5910, + "name": "ElementaryTypeNameExpression", + "src": "5080:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 5911, + "name": "Literal", + "src": "5088:1:26" + } + ], + "id": 5912, + "name": "FunctionCall", + "src": "5080:10:26" + } + ], + "id": 5913, + "name": "BinaryOperation", + "src": "5045:45:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "44697361626c65642070616e696320627574746f6e2063616e6e6f742062652075706461746564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Disabled panic button cannot be updated\"", + "value": "Disabled panic button cannot be updated" + }, + "id": 5914, + "name": "Literal", + "src": "5104:41:26" + } + ], + "id": 5915, + "name": "FunctionCall", + "src": "5024:131:26" + } + ], + "id": 5916, + "name": "ExpressionStatement", + "src": "5024:131:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", + "typeString": "literal_string \"Panic button must be non-zero address\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5917, + "name": "Identifier", + "src": "5165:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5898, + "type": "address", + "value": "_panicButton" + }, + "id": 5918, + "name": "Identifier", + "src": "5186:12:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 5919, + "name": "ElementaryTypeNameExpression", + "src": "5202:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 5920, + "name": "Literal", + "src": "5210:1:26" + } + ], + "id": 5921, + "name": "FunctionCall", + "src": "5202:10:26" + } + ], + "id": 5922, + "name": "BinaryOperation", + "src": "5186:26:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "50616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Panic button must be non-zero address\"", + "value": "Panic button must be non-zero address" + }, + "id": 5923, + "name": "Literal", + "src": "5226:39:26" + } + ], + "id": 5924, + "name": "FunctionCall", + "src": "5165:110:26" + } + ], + "id": 5925, + "name": "ExpressionStatement", + "src": "5165:110:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5692, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 5926, + "name": "Identifier", + "src": "5286:12:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5896, + "type": "address", + "value": "_operatorContract" + }, + "id": 5927, + "name": "Identifier", + "src": "5299:17:26" + } + ], + "id": 5928, + "name": "IndexAccess", + "src": "5286:31:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5898, + "type": "address", + "value": "_panicButton" + }, + "id": 5929, + "name": "Identifier", + "src": "5320:12:26" + } + ], + "id": 5930, + "name": "Assignment", + "src": "5286:46:26" + } + ], + "id": 5931, + "name": "ExpressionStatement", + "src": "5286:46:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5736, + "type": "function (address,address)", + "value": "OperatorContractPanicButtonUpdated" + }, + "id": 5932, + "name": "Identifier", + "src": "5348:34:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5896, + "type": "address", + "value": "_operatorContract" + }, + "id": 5933, + "name": "Identifier", + "src": "5396:17:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5898, + "type": "address", + "value": "_panicButton" + }, + "id": 5934, + "name": "Identifier", + "src": "5427:12:26" + } + ], + "id": 5935, + "name": "FunctionCall", + "src": "5348:101:26" + } + ], + "id": 5936, + "name": "EmitStatement", + "src": "5343:106:26" + } + ], + "id": 5937, + "name": "Block", + "src": "5014:442:26" + } + ], + "id": 5938, + "name": "FunctionDefinition", + "src": "4838:618:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "disableOperatorContractPanicButton", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 5972, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5939, + "name": "ElementaryTypeName", + "src": "5506:7:26" + } + ], + "id": 5940, + "name": "VariableDeclaration", + "src": "5506:25:26" + } + ], + "id": 5941, + "name": "ParameterList", + "src": "5505:27:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5947, + "name": "ParameterList", + "src": "5626:0:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5827, + "type": "modifier (address)", + "value": "onlyForApprovedContract" + }, + "id": 5942, + "name": "Identifier", + "src": "5556:23:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5940, + "type": "address", + "value": "_operatorContract" + }, + "id": 5943, + "name": "Identifier", + "src": "5580:17:26" + } + ], + "id": 5944, + "name": "ModifierInvocation", + "src": "5556:42:26" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5760, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 5945, + "name": "Identifier", + "src": "5607:14:26" + } + ], + "id": 5946, + "name": "ModifierInvocation", + "src": "5607:14:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", + "typeString": "literal_string \"Panic button already disabled\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 5948, + "name": "Identifier", + "src": "5636:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5692, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 5949, + "name": "Identifier", + "src": "5657:12:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5940, + "type": "address", + "value": "_operatorContract" + }, + "id": 5950, + "name": "Identifier", + "src": "5670:17:26" + } + ], + "id": 5951, + "name": "IndexAccess", + "src": "5657:31:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 5952, + "name": "ElementaryTypeNameExpression", + "src": "5692:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 5953, + "name": "Literal", + "src": "5700:1:26" + } + ], + "id": 5954, + "name": "FunctionCall", + "src": "5692:10:26" + } + ], + "id": 5955, + "name": "BinaryOperation", + "src": "5657:45:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "50616e696320627574746f6e20616c72656164792064697361626c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Panic button already disabled\"", + "value": "Panic button already disabled" + }, + "id": 5956, + "name": "Literal", + "src": "5716:31:26" + } + ], + "id": 5957, + "name": "FunctionCall", + "src": "5636:121:26" + } + ], + "id": 5958, + "name": "ExpressionStatement", + "src": "5636:121:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5692, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 5959, + "name": "Identifier", + "src": "5768:12:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5940, + "type": "address", + "value": "_operatorContract" + }, + "id": 5960, + "name": "Identifier", + "src": "5781:17:26" + } + ], + "id": 5961, + "name": "IndexAccess", + "src": "5768:31:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 5962, + "name": "ElementaryTypeNameExpression", + "src": "5802:7:26" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 5963, + "name": "Literal", + "src": "5810:1:26" + } + ], + "id": 5964, + "name": "FunctionCall", + "src": "5802:10:26" + } + ], + "id": 5965, + "name": "Assignment", + "src": "5768:44:26" + } + ], + "id": 5966, + "name": "ExpressionStatement", + "src": "5768:44:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5730, + "type": "function (address)", + "value": "OperatorContractPanicButtonDisabled" + }, + "id": 5967, + "name": "Identifier", + "src": "5828:35:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5940, + "type": "address", + "value": "_operatorContract" + }, + "id": 5968, + "name": "Identifier", + "src": "5864:17:26" + } + ], + "id": 5969, + "name": "FunctionCall", + "src": "5828:54:26" + } + ], + "id": 5970, + "name": "EmitStatement", + "src": "5823:59:26" + } + ], + "id": 5971, + "name": "Block", + "src": "5626:263:26" + } + ], + "id": 5972, + "name": "FunctionDefinition", + "src": "5462:427:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setOperatorContractUpgrader", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_serviceContract", + "scope": 5993, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5973, + "name": "ElementaryTypeName", + "src": "5941:7:26" + } + ], + "id": 5974, + "name": "VariableDeclaration", + "src": "5941:24:26" + }, + { + "attributes": { + "constant": false, + "name": "_operatorContractUpgrader", + "scope": 5993, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5975, + "name": "ElementaryTypeName", + "src": "5975:7:26" + } + ], + "id": 5976, + "name": "VariableDeclaration", + "src": "5975:33:26" + } + ], + "id": 5977, + "name": "ParameterList", + "src": "5931:83:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 5980, + "name": "ParameterList", + "src": "6037:0:26" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5760, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 5978, + "name": "Identifier", + "src": "6022:14:26" + } + ], + "id": 5979, + "name": "ModifierInvocation", + "src": "6022:14:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5698, + "type": "mapping(address => address)", + "value": "operatorContractUpgraders" + }, + "id": 5981, + "name": "Identifier", + "src": "6047:25:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5974, + "type": "address", + "value": "_serviceContract" + }, + "id": 5982, + "name": "Identifier", + "src": "6073:16:26" + } + ], + "id": 5983, + "name": "IndexAccess", + "src": "6047:43:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5976, + "type": "address", + "value": "_operatorContractUpgrader" + }, + "id": 5984, + "name": "Identifier", + "src": "6093:25:26" + } + ], + "id": 5985, + "name": "Assignment", + "src": "6047:71:26" + } + ], + "id": 5986, + "name": "ExpressionStatement", + "src": "6047:71:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5742, + "type": "function (address,address)", + "value": "OperatorContractUpgraderUpdated" + }, + "id": 5987, + "name": "Identifier", + "src": "6133:31:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5974, + "type": "address", + "value": "_serviceContract" + }, + "id": 5988, + "name": "Identifier", + "src": "6178:16:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5976, + "type": "address", + "value": "_operatorContractUpgrader" + }, + "id": 5989, + "name": "Identifier", + "src": "6208:25:26" + } + ], + "id": 5990, + "name": "FunctionCall", + "src": "6133:110:26" + } + ], + "id": 5991, + "name": "EmitStatement", + "src": "6128:115:26" + } + ], + "id": 5992, + "name": "Block", + "src": "6037:213:26" + } + ], + "id": 5993, + "name": "FunctionDefinition", + "src": "5895:355:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setServiceContractUpgrader", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 6014, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5994, + "name": "ElementaryTypeName", + "src": "6301:7:26" + } + ], + "id": 5995, + "name": "VariableDeclaration", + "src": "6301:25:26" + }, + { + "attributes": { + "constant": false, + "name": "_serviceContractUpgrader", + "scope": 6014, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 5996, + "name": "ElementaryTypeName", + "src": "6336:7:26" + } + ], + "id": 5997, + "name": "VariableDeclaration", + "src": "6336:32:26" + } + ], + "id": 5998, + "name": "ParameterList", + "src": "6291:83:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 6001, + "name": "ParameterList", + "src": "6397:0:26" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5760, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 5999, + "name": "Identifier", + "src": "6382:14:26" + } + ], + "id": 6000, + "name": "ModifierInvocation", + "src": "6382:14:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5702, + "type": "mapping(address => address)", + "value": "serviceContractUpgraders" + }, + "id": 6002, + "name": "Identifier", + "src": "6407:24:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5995, + "type": "address", + "value": "_operatorContract" + }, + "id": 6003, + "name": "Identifier", + "src": "6432:17:26" + } + ], + "id": 6004, + "name": "IndexAccess", + "src": "6407:43:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5997, + "type": "address", + "value": "_serviceContractUpgrader" + }, + "id": 6005, + "name": "Identifier", + "src": "6453:24:26" + } + ], + "id": 6006, + "name": "Assignment", + "src": "6407:70:26" + } + ], + "id": 6007, + "name": "ExpressionStatement", + "src": "6407:70:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5748, + "type": "function (address,address)", + "value": "ServiceContractUpgraderUpdated" + }, + "id": 6008, + "name": "Identifier", + "src": "6492:30:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5995, + "type": "address", + "value": "_operatorContract" + }, + "id": 6009, + "name": "Identifier", + "src": "6536:17:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5997, + "type": "address", + "value": "_serviceContractUpgrader" + }, + "id": 6010, + "name": "Identifier", + "src": "6567:24:26" + } + ], + "id": 6011, + "name": "FunctionCall", + "src": "6492:109:26" + } + ], + "id": 6012, + "name": "EmitStatement", + "src": "6487:114:26" + } + ], + "id": 6013, + "name": "Block", + "src": "6397:211:26" + } + ], + "id": 6014, + "name": "FunctionDefinition", + "src": "6256:352:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "approveOperatorContract", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 6042, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6015, + "name": "ElementaryTypeName", + "src": "6647:7:26" + } + ], + "id": 6016, + "name": "VariableDeclaration", + "src": "6647:24:26" + } + ], + "id": 6017, + "name": "ParameterList", + "src": "6646:26:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 6023, + "name": "ParameterList", + "src": "6764:0:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5814, + "type": "modifier (address)", + "value": "onlyForNewContract" + }, + "id": 6018, + "name": "Identifier", + "src": "6696:18:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6016, + "type": "address", + "value": "operatorContract" + }, + "id": 6019, + "name": "Identifier", + "src": "6715:16:26" + } + ], + "id": 6020, + "name": "ModifierInvocation", + "src": "6696:36:26" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5772, + "type": "modifier ()", + "value": "onlyRegistryKeeper" + }, + "id": 6021, + "name": "Identifier", + "src": "6741:18:26" + } + ], + "id": 6022, + "name": "ModifierInvocation", + "src": "6741:18:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5706, + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": "operatorContracts" + }, + "id": 6024, + "name": "Identifier", + "src": "6774:17:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6016, + "type": "address", + "value": "operatorContract" + }, + "id": 6025, + "name": "Identifier", + "src": "6792:16:26" + } + ], + "id": 6026, + "name": "IndexAccess", + "src": "6774:35:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "Approved", + "referencedDeclaration": null, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5684, + "type": "type(enum KeepRegistry.ContractStatus)", + "value": "ContractStatus" + }, + "id": 6027, + "name": "Identifier", + "src": "6812:14:26" + } + ], + "id": 6028, + "name": "MemberAccess", + "src": "6812:23:26" + } + ], + "id": 6029, + "name": "Assignment", + "src": "6774:61:26" + } + ], + "id": 6030, + "name": "ExpressionStatement", + "src": "6774:61:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5692, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 6031, + "name": "Identifier", + "src": "6845:12:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6016, + "type": "address", + "value": "operatorContract" + }, + "id": 6032, + "name": "Identifier", + "src": "6858:16:26" + } + ], + "id": 6033, + "name": "IndexAccess", + "src": "6845:30:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5694, + "type": "address", + "value": "defaultPanicButton" + }, + "id": 6034, + "name": "Identifier", + "src": "6878:18:26" + } + ], + "id": 6035, + "name": "Assignment", + "src": "6845:51:26" + } + ], + "id": 6036, + "name": "ExpressionStatement", + "src": "6845:51:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5710, + "type": "function (address)", + "value": "OperatorContractApproved" + }, + "id": 6037, + "name": "Identifier", + "src": "6911:24:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6016, + "type": "address", + "value": "operatorContract" + }, + "id": 6038, + "name": "Identifier", + "src": "6936:16:26" + } + ], + "id": 6039, + "name": "FunctionCall", + "src": "6911:42:26" + } + ], + "id": 6040, + "name": "EmitStatement", + "src": "6906:47:26" + } + ], + "id": 6041, + "name": "Block", + "src": "6764:196:26" + } + ], + "id": 6042, + "name": "FunctionDefinition", + "src": "6614:346:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "disableOperatorContract", + "scope": 6120, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 6065, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6043, + "name": "ElementaryTypeName", + "src": "6999:7:26" + } + ], + "id": 6044, + "name": "VariableDeclaration", + "src": "6999:24:26" + } + ], + "id": 6045, + "name": "ParameterList", + "src": "6998:26:26" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 6052, + "name": "ParameterList", + "src": "7136:0:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5827, + "type": "modifier (address)", + "value": "onlyForApprovedContract" + }, + "id": 6046, + "name": "Identifier", + "src": "7048:23:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6044, + "type": "address", + "value": "operatorContract" + }, + "id": 6047, + "name": "Identifier", + "src": "7072:16:26" + } + ], + "id": 6048, + "name": "ModifierInvocation", + "src": "7048:41:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5801, + "type": "modifier (address)", + "value": "onlyPanicButton" + }, + "id": 6049, + "name": "Identifier", + "src": "7098:15:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6044, + "type": "address", + "value": "operatorContract" + }, + "id": 6050, + "name": "Identifier", + "src": "7114:16:26" + } + ], + "id": 6051, + "name": "ModifierInvocation", + "src": "7098:33:26" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5706, + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": "operatorContracts" + }, + "id": 6053, + "name": "Identifier", + "src": "7146:17:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6044, + "type": "address", + "value": "operatorContract" + }, + "id": 6054, + "name": "Identifier", + "src": "7164:16:26" + } + ], + "id": 6055, + "name": "IndexAccess", + "src": "7146:35:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "Disabled", + "referencedDeclaration": null, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5684, + "type": "type(enum KeepRegistry.ContractStatus)", + "value": "ContractStatus" + }, + "id": 6056, + "name": "Identifier", + "src": "7184:14:26" + } + ], + "id": 6057, + "name": "MemberAccess", + "src": "7184:23:26" + } + ], + "id": 6058, + "name": "Assignment", + "src": "7146:61:26" + } + ], + "id": 6059, + "name": "ExpressionStatement", + "src": "7146:61:26" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 5714, + "type": "function (address)", + "value": "OperatorContractDisabled" + }, + "id": 6060, + "name": "Identifier", + "src": "7222:24:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6044, + "type": "address", + "value": "operatorContract" + }, + "id": 6061, + "name": "Identifier", + "src": "7247:16:26" + } + ], + "id": 6062, + "name": "FunctionCall", + "src": "7222:42:26" + } + ], + "id": 6063, + "name": "EmitStatement", + "src": "7217:47:26" + } + ], + "id": 6064, + "name": "Block", + "src": "7136:135:26" + } + ], + "id": 6065, + "name": "FunctionDefinition", + "src": "6966:305:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "isNewOperatorContract", + "scope": 6120, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 6080, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6066, + "name": "ElementaryTypeName", + "src": "7308:7:26" + } + ], + "id": 6067, + "name": "VariableDeclaration", + "src": "7308:24:26" + } + ], + "id": 6068, + "name": "ParameterList", + "src": "7307:26:26" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 6080, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 6069, + "name": "ElementaryTypeName", + "src": "7379:4:26" + } + ], + "id": 6070, + "name": "VariableDeclaration", + "src": "7379:4:26" + } + ], + "id": 6071, + "name": "ParameterList", + "src": "7378:6:26" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 6071 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5706, + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": "operatorContracts" + }, + "id": 6072, + "name": "Identifier", + "src": "7406:17:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6067, + "type": "address", + "value": "operatorContract" + }, + "id": 6073, + "name": "Identifier", + "src": "7424:16:26" + } + ], + "id": 6074, + "name": "IndexAccess", + "src": "7406:35:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "New", + "referencedDeclaration": null, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5684, + "type": "type(enum KeepRegistry.ContractStatus)", + "value": "ContractStatus" + }, + "id": 6075, + "name": "Identifier", + "src": "7445:14:26" + } + ], + "id": 6076, + "name": "MemberAccess", + "src": "7445:18:26" + } + ], + "id": 6077, + "name": "BinaryOperation", + "src": "7406:57:26" + } + ], + "id": 6078, + "name": "Return", + "src": "7399:64:26" + } + ], + "id": 6079, + "name": "Block", + "src": "7389:81:26" + } + ], + "id": 6080, + "name": "FunctionDefinition", + "src": "7277:193:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "isApprovedOperatorContract", + "scope": 6120, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 6095, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6081, + "name": "ElementaryTypeName", + "src": "7512:7:26" + } + ], + "id": 6082, + "name": "VariableDeclaration", + "src": "7512:24:26" + } + ], + "id": 6083, + "name": "ParameterList", + "src": "7511:26:26" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 6095, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 6084, + "name": "ElementaryTypeName", + "src": "7583:4:26" + } + ], + "id": 6085, + "name": "VariableDeclaration", + "src": "7583:4:26" + } + ], + "id": 6086, + "name": "ParameterList", + "src": "7582:6:26" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 6086 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_ContractStatus_$5684", + "typeString": "enum KeepRegistry.ContractStatus" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5706, + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": "operatorContracts" + }, + "id": 6087, + "name": "Identifier", + "src": "7610:17:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6082, + "type": "address", + "value": "operatorContract" + }, + "id": 6088, + "name": "Identifier", + "src": "7628:16:26" + } + ], + "id": 6089, + "name": "IndexAccess", + "src": "7610:35:26" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "Approved", + "referencedDeclaration": null, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5684, + "type": "type(enum KeepRegistry.ContractStatus)", + "value": "ContractStatus" + }, + "id": 6090, + "name": "Identifier", + "src": "7649:14:26" + } + ], + "id": 6091, + "name": "MemberAccess", + "src": "7649:23:26" + } + ], + "id": 6092, + "name": "BinaryOperation", + "src": "7610:62:26" + } + ], + "id": 6093, + "name": "Return", + "src": "7603:69:26" + } + ], + "id": 6094, + "name": "Block", + "src": "7593:86:26" + } + ], + "id": 6095, + "name": "FunctionDefinition", + "src": "7476:203:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "operatorContractUpgraderFor", + "scope": 6120, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_serviceContract", + "scope": 6107, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6096, + "name": "ElementaryTypeName", + "src": "7722:7:26" + } + ], + "id": 6097, + "name": "VariableDeclaration", + "src": "7722:24:26" + } + ], + "id": 6098, + "name": "ParameterList", + "src": "7721:26:26" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 6107, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6099, + "name": "ElementaryTypeName", + "src": "7793:7:26" + } + ], + "id": 6100, + "name": "VariableDeclaration", + "src": "7793:7:26" + } + ], + "id": 6101, + "name": "ParameterList", + "src": "7792:9:26" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 6101 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5698, + "type": "mapping(address => address)", + "value": "operatorContractUpgraders" + }, + "id": 6102, + "name": "Identifier", + "src": "7823:25:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6097, + "type": "address", + "value": "_serviceContract" + }, + "id": 6103, + "name": "Identifier", + "src": "7849:16:26" + } + ], + "id": 6104, + "name": "IndexAccess", + "src": "7823:43:26" + } + ], + "id": 6105, + "name": "Return", + "src": "7816:50:26" + } + ], + "id": 6106, + "name": "Block", + "src": "7806:67:26" + } + ], + "id": 6107, + "name": "FunctionDefinition", + "src": "7685:188:26" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "serviceContractUpgraderFor", + "scope": 6120, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 6119, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6108, + "name": "ElementaryTypeName", + "src": "7915:7:26" + } + ], + "id": 6109, + "name": "VariableDeclaration", + "src": "7915:25:26" + } + ], + "id": 6110, + "name": "ParameterList", + "src": "7914:27:26" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 6119, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6111, + "name": "ElementaryTypeName", + "src": "7987:7:26" + } + ], + "id": 6112, + "name": "VariableDeclaration", + "src": "7987:7:26" + } + ], + "id": 6113, + "name": "ParameterList", + "src": "7986:9:26" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 6113 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 5702, + "type": "mapping(address => address)", + "value": "serviceContractUpgraders" + }, + "id": 6114, + "name": "Identifier", + "src": "8017:24:26" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6109, + "type": "address", + "value": "_operatorContract" + }, + "id": 6115, + "name": "Identifier", + "src": "8042:17:26" + } + ], + "id": 6116, + "name": "IndexAccess", + "src": "8017:43:26" + } + ], + "id": 6117, + "name": "Return", + "src": "8010:50:26" + } + ], + "id": 6118, + "name": "Block", + "src": "8000:67:26" + } + ], + "id": 6119, + "name": "FunctionDefinition", + "src": "7879:188:26" + } + ], + "id": 6120, + "name": "ContractDefinition", + "src": "120:7949:26" + } + ], + "id": 6121, + "name": "SourceUnit", + "src": "0:8070:26" + }, + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang" + }, + "networks": { + "11155111": { + "events": { + "0x06f6f3a56d213caa17abfd21597ab6f8660771e05f9d430505ce755a2fdbb551": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "defaultPanicButton", + "type": "address" + } + ], + "name": "DefaultPanicButtonUpdated", + "type": "event" + }, + "0x9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "governance", + "type": "address" + } + ], + "name": "GovernanceUpdated", + "type": "event" + }, + "0xb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractApproved", + "type": "event" + }, + "0x61e8cab67fc6f073d7e3bbd8d936b519daf95f5655e8b22563c63eaba75f8fa3": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractDisabled", + "type": "event" + }, + "0x825c13d61db27b3c0dae8523f70310e87c2dfd99ea7023664547208322ff679c": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractPanicButtonDisabled", + "type": "event" + }, + "0x5f94d794a8a48b75e2ca89133a5b8748d14217648260c5247e57e3d314fd52a7": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "panicButton", + "type": "address" + } + ], + "name": "OperatorContractPanicButtonUpdated", + "type": "event" + }, + "0x6f5a686a46a4dd38461a6a5ce54c3b8dd7b989914b5a0748c8d6669c79477852": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "serviceContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "OperatorContractUpgraderUpdated", + "type": "event" + }, + "0xe5ecd8c922f03a416959a48c633d1bfdd1615ea46923a0a3e5d65ec90a38e038": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "registryKeeper", + "type": "address" + } + ], + "name": "RegistryKeeperUpdated", + "type": "event" + }, + "0x067d7db72df8e5428d719a48ef14b072cdb3942706bfc6becc7198a316d73b78": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "keeper", + "type": "address" + } + ], + "name": "ServiceContractUpgraderUpdated", + "type": "event" + } + }, + "links": {}, + "address": "0x22647FfAe391540d584599818CA22fdF18890753", + "transactionHash": "0xd2331365137c15daabaaf9e62f5345ed9088410462cec1f28f9c45050ab53467" + } + }, + "schemaVersion": "3.4.8", + "updatedAt": "2023-09-12T08:42:13.375Z", + "networkType": "ethereum", + "devdoc": { + "methods": {}, + "title": "KeepRegistry" + }, + "userdoc": { + "methods": {}, + "notice": "Governance owned registry of approved contracts and roles." + } +} diff --git a/external/sepolia/KeepToken.json b/external/sepolia/KeepToken.json new file mode 100644 index 00000000..f8cfdf06 --- /dev/null +++ b/external/sepolia/KeepToken.json @@ -0,0 +1,2811 @@ +{ + "contractName": "KeepToken", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "INITIAL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "SYMBOL", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_extraData", + "type": "bytes" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INITIAL_SUPPLY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NAME\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"SYMBOL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Standard ERC20Burnable token\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"approveAndCall(address,uint256,bytes)\":{\"params\":{\"_extraData\":\"Extra information to send to the approved contract.\",\"_spender\":\"The address authorized to spend.\",\"_value\":\"The max amount they can spend.\"}},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. * See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"See {ERC20-_burnFrom}.\"},\"constructor\":{\"details\":\"Gives msg.sender all of existing tokens.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}},\"title\":\"KEEP Token\"},\"userdoc\":{\"methods\":{\"approveAndCall(address,uint256,bytes)\":{\"notice\":\"Set allowance for other address and notify. Allows `_spender` to spend no more than `_value` tokens on your behalf and then ping the contract about it.\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/KeepToken.sol\":\"KeepToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x65a4078c03875c25413a068ce9cfdd7e68a90f8786612d1189c89341e6e3b802\",\"urls\":[\"bzz-raw://45c0d95495b944fbb1aa09d900b0ab530903a432125ab8fddfa05064a7988991\",\"dweb:/ipfs/Qma2VeknkKA1THeubGzshWFk44BktXkXP1UKp9Un2uDSsu\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0x9b94356691f3cbf90a5d83ae3fdf6a5a662bb004d2bd8b034160d60221807e64\",\"urls\":[\"bzz-raw://14a9d33db455302b8bb9fdb28998efefbe5a1cb41b29e31391609f646b2ab351\",\"dweb:/ipfs/Qmd4wFr6GEMZnnxgXeq3gmp7cs8tqDuHp3TVNhCbjnux2V\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzz-raw://28d03f328e19e4099d5013de0649afaeaabac1a614e130767ab1cb4aca9775b6\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"project:/contracts/KeepToken.sol\":{\"keccak256\":\"0x42abcd9c9c67d8d83b91a01e42abde3355b3a67fb7c510d7d8b63b5e23d3defe\",\"urls\":[\"bzz-raw://ef26e4ad4042c74e230a343f9e69c2d142b581e4a2c7ee27ec51a1f7e9f91a68\",\"dweb:/ipfs/QmfJ9cEpzj2WQ5upvizC16pthvC2vQP8geFeUATFb4ov2G\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f4b45455020546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4b45455000000000000000000000000000000000000000000000000000000000815250601282600390805190602001906200009892919062000347565b508160049080519060200190620000b192919062000347565b5080600560006101000a81548160ff021916908360ff160217905550505050620000ee336b033b2e3c9fd0803ce8000000620000f460201b60201c565b620003f6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620001b481600254620002be60201b620014611790919060201c565b60028190555062000212816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002be60201b620014611790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808284019050838110156200033d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200038a57805160ff1916838001178555620003bb565b82800160010185558215620003bb579182015b82811115620003ba5782518255916020019190600101906200039d565b5b509050620003ca9190620003ce565b5090565b620003f391905b80821115620003ef576000816000905550600101620003d5565b5090565b90565b61195780620004066000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d71461054e578063a9059cbb146105b4578063cae9ca511461061a578063dd62ed3e14610717578063f76f8d781461078f57610116565b806370a08231146103a257806379cc6790146103fa57806395d89b4114610448578063a3f4df7e146104cb57610116565b80632e0f2625116100e95780632e0f2625146102a85780632ff2e9dc146102cc578063313ce567146102ea578063395093511461030e57806342966c681461037457610116565b806306fdde031461011b578063095ea7b31461019e57806318160ddd1461020457806323b872dd14610222575b600080fd5b610123610812565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610163578082015181840152602081019050610148565b50505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ea600480360360408110156101b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108b4565b604051808215151515815260200191505060405180910390f35b61020c6108d2565b6040518082815260200191505060405180910390f35b61028e6004803603606081101561023857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108dc565b604051808215151515815260200191505060405180910390f35b6102b06109b5565b604051808260ff1660ff16815260200191505060405180910390f35b6102d46109ba565b6040518082815260200191505060405180910390f35b6102f26109ca565b604051808260ff1660ff16815260200191505060405180910390f35b61035a6004803603604081101561032457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e1565b604051808215151515815260200191505060405180910390f35b6103a06004803603602081101561038a57600080fd5b8101908080359060200190929190505050610a94565b005b6103e4600480360360208110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aa8565b6040518082815260200191505060405180910390f35b6104466004803603604081101561041057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af0565b005b610450610afe565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610490578082015181840152602081019050610475565b50505050905090810190601f1680156104bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104d3610ba0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105135780820151818401526020810190506104f8565b50505050905090810190601f1680156105405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61059a6004803603604081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd9565b604051808215151515815260200191505060405180910390f35b610600600480360360408110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca6565b604051808215151515815260200191505060405180910390f35b6106fd6004803603606081101561063057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067757600080fd5b82018360208201111561068957600080fd5b803590602001918460018302840111640100000000831117156106ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610cc4565b604051808215151515815260200191505060405180910390f35b6107796004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e2c565b6040518082815260200191505060405180910390f35b610797610eb3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d75780820151818401526020810190506107bc565b50505050905090810190601f1680156108045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108aa5780601f1061087f576101008083540402835291602001916108aa565b820191906000526020600020905b81548152906001019060200180831161088d57829003601f168201915b5050505050905090565b60006108c86108c1610eec565b8484610ef4565b6001905092915050565b6000600254905090565b60006108e98484846110eb565b6109aa846108f5610eec565b6109a58560405180606001604052806028815260200161184860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095b610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b6000600560009054906101000a900460ff16905090565b6000610a8a6109ee610eec565b84610a8585600160006109ff610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b610ef4565b6001905092915050565b610aa5610a9f610eec565b826114e9565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610afa82826116a1565b5050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b965780601f10610b6b57610100808354040283529160200191610b96565b820191906000526020600020905b815481529060010190602001808311610b7957829003601f168201915b5050505050905090565b6040518060400160405280600a81526020017f4b45455020546f6b656e0000000000000000000000000000000000000000000081525081565b6000610c9c610be6610eec565b84610c97856040518060600160405280602581526020016118fe6025913960016000610c10610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b6001905092915050565b6000610cba610cb3610eec565b84846110eb565b6001905092915050565b600080849050610cd485856108b4565b15610e23578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610db2578082015181840152602081019050610d97565b50505050905090810190601f168015610ddf5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610e0157600080fd5b505af1158015610e15573d6000803e3d6000fd5b505050506001915050610e25565b505b9392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600481526020017f4b4545500000000000000000000000000000000000000000000000000000000081525081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806118da6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118006022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806118b56025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117bb6023913960400191505060405180910390fd5b61126281604051806060016040528060268152602001611822602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112f5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114135780820151818401526020810190506113f8565b50505050905090810190601f1680156114405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118946021913960400191505060405180910390fd5b6115da816040518060600160405280602281526020016117de602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116318160025461177090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6116ab82826114e9565b61176c826116b7610eec565b6117678460405180606001604052806024815260200161187060249139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061171d610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b5050565b60006117b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113a1565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582062a8022795cdd33f6a780bff96fff436a005b6449d7676f71c97c01cb511a6b864736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d71461054e578063a9059cbb146105b4578063cae9ca511461061a578063dd62ed3e14610717578063f76f8d781461078f57610116565b806370a08231146103a257806379cc6790146103fa57806395d89b4114610448578063a3f4df7e146104cb57610116565b80632e0f2625116100e95780632e0f2625146102a85780632ff2e9dc146102cc578063313ce567146102ea578063395093511461030e57806342966c681461037457610116565b806306fdde031461011b578063095ea7b31461019e57806318160ddd1461020457806323b872dd14610222575b600080fd5b610123610812565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610163578082015181840152602081019050610148565b50505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ea600480360360408110156101b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108b4565b604051808215151515815260200191505060405180910390f35b61020c6108d2565b6040518082815260200191505060405180910390f35b61028e6004803603606081101561023857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108dc565b604051808215151515815260200191505060405180910390f35b6102b06109b5565b604051808260ff1660ff16815260200191505060405180910390f35b6102d46109ba565b6040518082815260200191505060405180910390f35b6102f26109ca565b604051808260ff1660ff16815260200191505060405180910390f35b61035a6004803603604081101561032457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e1565b604051808215151515815260200191505060405180910390f35b6103a06004803603602081101561038a57600080fd5b8101908080359060200190929190505050610a94565b005b6103e4600480360360208110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aa8565b6040518082815260200191505060405180910390f35b6104466004803603604081101561041057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af0565b005b610450610afe565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610490578082015181840152602081019050610475565b50505050905090810190601f1680156104bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104d3610ba0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105135780820151818401526020810190506104f8565b50505050905090810190601f1680156105405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61059a6004803603604081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd9565b604051808215151515815260200191505060405180910390f35b610600600480360360408110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca6565b604051808215151515815260200191505060405180910390f35b6106fd6004803603606081101561063057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067757600080fd5b82018360208201111561068957600080fd5b803590602001918460018302840111640100000000831117156106ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610cc4565b604051808215151515815260200191505060405180910390f35b6107796004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e2c565b6040518082815260200191505060405180910390f35b610797610eb3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d75780820151818401526020810190506107bc565b50505050905090810190601f1680156108045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108aa5780601f1061087f576101008083540402835291602001916108aa565b820191906000526020600020905b81548152906001019060200180831161088d57829003601f168201915b5050505050905090565b60006108c86108c1610eec565b8484610ef4565b6001905092915050565b6000600254905090565b60006108e98484846110eb565b6109aa846108f5610eec565b6109a58560405180606001604052806028815260200161184860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095b610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b6000600560009054906101000a900460ff16905090565b6000610a8a6109ee610eec565b84610a8585600160006109ff610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b610ef4565b6001905092915050565b610aa5610a9f610eec565b826114e9565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610afa82826116a1565b5050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b965780601f10610b6b57610100808354040283529160200191610b96565b820191906000526020600020905b815481529060010190602001808311610b7957829003601f168201915b5050505050905090565b6040518060400160405280600a81526020017f4b45455020546f6b656e0000000000000000000000000000000000000000000081525081565b6000610c9c610be6610eec565b84610c97856040518060600160405280602581526020016118fe6025913960016000610c10610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b6001905092915050565b6000610cba610cb3610eec565b84846110eb565b6001905092915050565b600080849050610cd485856108b4565b15610e23578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610db2578082015181840152602081019050610d97565b50505050905090810190601f168015610ddf5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610e0157600080fd5b505af1158015610e15573d6000803e3d6000fd5b505050506001915050610e25565b505b9392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600481526020017f4b4545500000000000000000000000000000000000000000000000000000000081525081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806118da6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118006022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806118b56025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117bb6023913960400191505060405180910390fd5b61126281604051806060016040528060268152602001611822602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112f5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114135780820151818401526020810190506113f8565b50505050905090810190601f1680156114405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118946021913960400191505060405180910390fd5b6115da816040518060600160405280602281526020016117de602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116318160025461177090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6116ab82826114e9565b61176c826116b7610eec565b6117678460405180606001604052806024815260200161187060249139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061171d610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b5050565b60006117b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113a1565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582062a8022795cdd33f6a780bff96fff436a005b6449d7676f71c97c01cb511a6b864736f6c63430005110032", + "sourceMap": "480:1362:27:-;;;906:109;8:9:-1;5:2;;;30:1;27;20:12;5:2;906:109:27;941:4;;;;;;;;;;;;;;;;;947:6;;;;;;;;;;;;;;;;;662:2;512:4:9;504:5;:12;;;;;;;;;;;;:::i;:::-;;536:6;526:7;:16;;;;;;;;;;;;:::i;:::-;;564:8;552:9;;:20;;;;;;;;;;;;;;;;;;416:163;;;975:33:27;981:10;799:6;975:5;;;:33;;:::i;:::-;480:1362;;5962:302:7;6056:1;6037:21;;:7;:21;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;;;;;:24;;;;:::i;:::-;6105:12;:39;;;;6175:30;6198:6;6175:9;:18;6185:7;6175:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;6154:9;:18;6164:7;6154:18;;;;;;;;;;;;;;;:51;;;;6241:7;6220:37;;6237:1;6220:37;;;6250:6;6220:37;;;;;;;;;;;;;;;;;;5962:302;;:::o;834:176:5:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;480:1362:27:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "480:1362:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;480:1362:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;644:81:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;629:35:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;758:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1472:81:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;439:81:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;439:81:8;;;;;;;;;;;;;;;;;:::i;:::-;;1706:108:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;577:101:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;577:101:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;838:85:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;838:85:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;537:42:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;537:42:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:258:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1393:447:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1393:447:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1393:447:27;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1393:447:27;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1393:447:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1393:447:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;585:38:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;585:38:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:9;681:13;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:7:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;629:35:27:-;662:2;629:35;:::o;758:47::-;799:6;758:47;:::o;1472:81:9:-;1513:5;1537:9;;;;;;;;;;;1530:16;;1472:81;:::o;3802:207:7:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;439:81:8:-;486:27;492:12;:10;:12::i;:::-;506:6;486:5;:27::i;:::-;439:81;:::o;1706:108:7:-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;577:101:8:-;645:26;655:7;664:6;645:9;:26::i;:::-;577:101;;:::o;838:85:9:-;877:13;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:85;:::o;537:42:27:-;;;;;;;;;;;;;;;;;;;:::o;4496:258:7:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;1393:447:27:-;1522:12;1546:22;1586:8;1546:49;;1609:25;1617:8;1627:6;1609:7;:25::i;:::-;1605:229;;;1650:7;:23;;;1691:10;1719:6;1751:4;1774:10;1650:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1650:148:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1650:148:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1650:148:27;;;;1819:4;1812:11;;;;;1605:229;1393:447;;;;;;;:::o;2230:132:7:-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;585:38:27:-;;;;;;;;;;;;;;;;;;;:::o;788:96:1:-;833:15;867:10;860:17;;788:96;:::o;7351:332:7:-;7461:1;7444:19;;:5;:19;;;;7436:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7541:1;7522:21;;:7;:21;;;;7514:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7623:6;7593:11;:18;7605:5;7593:18;;;;;;;;;;;;;;;:27;7612:7;7593:27;;;;;;;;;;;;;;;:36;;;;7660:7;7644:32;;7653:5;7644:32;;;7669:6;7644:32;;;;;;;;;;;;;;;;;;7351:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:5:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6584:342:7:-;6678:1;6659:21;;:7;:21;;;;6651:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6750:68;6773:6;6750:68;;;;;;;;;;;;;;;;;:9;:18;6760:7;6750:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;6729:9;:18;6739:7;6729:18;;;;;;;;;;;;;;;:89;;;;6843:24;6860:6;6843:12;;:16;;:24;;;;:::i;:::-;6828:12;:39;;;;6908:1;6882:37;;6891:7;6882:37;;;6912:6;6882:37;;;;;;;;;;;;;;;;;;6584:342;;:::o;7861:229::-;7932:22;7938:7;7947:6;7932:5;:22::i;:::-;7964:119;7973:7;7982:12;:10;:12::i;:::-;7996:86;8035:6;7996:86;;;;;;;;;;;;;;;;;:11;:20;8008:7;7996:20;;;;;;;;;;;;;;;:34;8017:12;:10;:12::i;:::-;7996:34;;;;;;;;;;;;;;;;:38;;:86;;;;;:::i;:::-;7964:8;:119::i;:::-;7861:229;;:::o;1274:134:5:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o", + "source": "pragma solidity 0.5.17;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\";\n\n/// @dev Interface of recipient contract for approveAndCall pattern.\ninterface tokenRecipient {\n function receiveApproval(\n address _from,\n uint256 _value,\n address _token,\n bytes calldata _extraData\n ) external;\n}\n\n/// @title KEEP Token\n/// @dev Standard ERC20Burnable token\ncontract KeepToken is ERC20Burnable, ERC20Detailed {\n string public constant NAME = \"KEEP Token\";\n string public constant SYMBOL = \"KEEP\";\n uint8 public constant DECIMALS = 18; // The number of digits after the decimal place when displaying token values on-screen.\n uint256 public constant INITIAL_SUPPLY = 10**27; // 1 billion tokens, 18 decimal places.\n\n /// @dev Gives msg.sender all of existing tokens.\n constructor() public ERC20Detailed(NAME, SYMBOL, DECIMALS) {\n _mint(msg.sender, INITIAL_SUPPLY);\n }\n\n /// @notice Set allowance for other address and notify.\n /// Allows `_spender` to spend no more than `_value` tokens\n /// on your behalf and then ping the contract about it.\n /// @param _spender The address authorized to spend.\n /// @param _value The max amount they can spend.\n /// @param _extraData Extra information to send to the approved contract.\n function approveAndCall(\n address _spender,\n uint256 _value,\n bytes memory _extraData\n ) public returns (bool success) {\n tokenRecipient spender = tokenRecipient(_spender);\n if (approve(_spender, _value)) {\n spender.receiveApproval(\n msg.sender,\n _value,\n address(this),\n _extraData\n );\n return true;\n }\n }\n}\n", + "sourcePath": "/Users/michalina/workspace2/keep-core/solidity-v1/contracts/KeepToken.sol", + "ast": { + "absolutePath": "project:/contracts/KeepToken.sol", + "exportedSymbols": { + "KeepToken": [6208], + "tokenRecipient": [6136] + }, + "id": 6209, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6122, + "literals": ["solidity", "0.5", ".17"], + "nodeType": "PragmaDirective", + "src": "0:23:27" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "id": 6123, + "nodeType": "ImportDirective", + "scope": 6209, + "sourceUnit": 1024, + "src": "25:71:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "id": 6124, + "nodeType": "ImportDirective", + "scope": 6209, + "sourceUnit": 1082, + "src": "97:71:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@dev Interface of recipient contract for approveAndCall pattern.", + "fullyImplemented": false, + "id": 6136, + "linearizedBaseContracts": [6136], + "name": "tokenRecipient", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 6135, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "receiveApproval", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6126, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 6135, + "src": "304:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "304:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6128, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 6135, + "src": "327:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "327:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6130, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 6135, + "src": "351:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6129, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "351:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6132, + "name": "_extraData", + "nodeType": "VariableDeclaration", + "scope": 6135, + "src": "375:25:27", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6131, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "375:5:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "294:112:27" + }, + "returnParameters": { + "id": 6134, + "nodeType": "ParameterList", + "parameters": [], + "src": "415:0:27" + }, + "scope": 6136, + "src": "270:146:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 6209, + "src": "239:179:27" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6137, + "name": "ERC20Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1023, + "src": "502:13:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "id": 6138, + "nodeType": "InheritanceSpecifier", + "src": "502:13:27" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6139, + "name": "ERC20Detailed", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1081, + "src": "517:13:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Detailed_$1081", + "typeString": "contract ERC20Detailed" + } + }, + "id": 6140, + "nodeType": "InheritanceSpecifier", + "src": "517:13:27" + } + ], + "contractDependencies": [64, 989, 1023, 1081, 1150], + "contractKind": "contract", + "documentation": "@title KEEP Token\n @dev Standard ERC20Burnable token", + "fullyImplemented": true, + "id": 6208, + "linearizedBaseContracts": [6208, 1081, 1023, 989, 1150, 64], + "name": "KeepToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 6143, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 6208, + "src": "537:42:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 6141, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "537:6:27", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4b45455020546f6b656e", + "id": 6142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "567:12:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5bd5b25213f8ed00c4212a1ed70b62617987e94979746b839bc5d419491f2cd2", + "typeString": "literal_string \"KEEP Token\"" + }, + "value": "KEEP Token" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 6146, + "name": "SYMBOL", + "nodeType": "VariableDeclaration", + "scope": 6208, + "src": "585:38:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 6144, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "585:6:27", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4b454550", + "id": 6145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "617:6:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cc1c7d1875340db4414c4b13e888160517f4e3358e62546848352d867e16bb21", + "typeString": "literal_string \"KEEP\"" + }, + "value": "KEEP" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 6149, + "name": "DECIMALS", + "nodeType": "VariableDeclaration", + "scope": 6208, + "src": "629:35:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6147, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "629:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 6148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "662:2:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 6154, + "name": "INITIAL_SUPPLY", + "nodeType": "VariableDeclaration", + "scope": 6208, + "src": "758:47:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6150, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "758:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + }, + "id": 6153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 6151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "799:2:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 6152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "803:2:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "799:6:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 6168, + "nodeType": "Block", + "src": "965:50:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6163, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "981:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "981:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 6165, + "name": "INITIAL_SUPPLY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6154, + "src": "993:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6162, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 873, + "src": "975:5:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "975:33:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6167, + "nodeType": "ExpressionStatement", + "src": "975:33:27" + } + ] + }, + "documentation": "@dev Gives msg.sender all of existing tokens.", + "id": 6169, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 6157, + "name": "NAME", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6143, + "src": "941:4:27", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 6158, + "name": "SYMBOL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6146, + "src": "947:6:27", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 6159, + "name": "DECIMALS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6149, + "src": "955:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 6160, + "modifierName": { + "argumentTypes": null, + "id": 6156, + "name": "ERC20Detailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1081, + "src": "927:13:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$1081_$", + "typeString": "type(contract ERC20Detailed)" + } + }, + "nodeType": "ModifierInvocation", + "src": "927:37:27" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6155, + "nodeType": "ParameterList", + "parameters": [], + "src": "917:2:27" + }, + "returnParameters": { + "id": 6161, + "nodeType": "ParameterList", + "parameters": [], + "src": "965:0:27" + }, + "scope": 6208, + "src": "906:109:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6206, + "nodeType": "Block", + "src": "1536:304:27", + "statements": [ + { + "assignments": [6181], + "declarations": [ + { + "constant": false, + "id": 6181, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 6206, + "src": "1546:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_tokenRecipient_$6136", + "typeString": "contract tokenRecipient" + }, + "typeName": { + "contractScope": null, + "id": 6180, + "name": "tokenRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6136, + "src": "1546:14:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_tokenRecipient_$6136", + "typeString": "contract tokenRecipient" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6185, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6183, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6171, + "src": "1586:8:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6182, + "name": "tokenRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6136, + "src": "1571:14:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_tokenRecipient_$6136_$", + "typeString": "type(contract tokenRecipient)" + } + }, + "id": 6184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1571:24:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_tokenRecipient_$6136", + "typeString": "contract tokenRecipient" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1546:49:27" + }, + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6187, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6171, + "src": "1617:8:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6188, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6173, + "src": "1627:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6186, + "name": "approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "1609:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 6189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1609:25:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 6205, + "nodeType": "IfStatement", + "src": "1605:229:27", + "trueBody": { + "id": 6204, + "nodeType": "Block", + "src": "1636:198:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6193, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "1691:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1691:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 6195, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6173, + "src": "1719:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6197, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28212, + "src": "1751:4:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_KeepToken_$6208", + "typeString": "contract KeepToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_KeepToken_$6208", + "typeString": "contract KeepToken" + } + ], + "id": 6196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1743:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 6198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1743:13:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6199, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6175, + "src": "1774:10:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 6190, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6181, + "src": "1650:7:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_tokenRecipient_$6136", + "typeString": "contract tokenRecipient" + } + }, + "id": 6192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "receiveApproval", + "nodeType": "MemberAccess", + "referencedDeclaration": 6135, + "src": "1650:23:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,bytes memory) external" + } + }, + "id": 6200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1650:148:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6201, + "nodeType": "ExpressionStatement", + "src": "1650:148:27" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 6202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1819:4:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 6179, + "id": 6203, + "nodeType": "Return", + "src": "1812:11:27" + } + ] + } + } + ] + }, + "documentation": "@notice Set allowance for other address and notify.\n Allows `_spender` to spend no more than `_value` tokens\n on your behalf and then ping the contract about it.\n @param _spender The address authorized to spend.\n @param _value The max amount they can spend.\n @param _extraData Extra information to send to the approved contract.", + "id": 6207, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approveAndCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6171, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 6207, + "src": "1426:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1426:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6173, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 6207, + "src": "1452:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6172, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1452:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6175, + "name": "_extraData", + "nodeType": "VariableDeclaration", + "scope": 6207, + "src": "1476:23:27", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6174, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1476:5:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1416:89:27" + }, + "returnParameters": { + "id": 6179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6178, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 6207, + "src": "1522:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6177, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1522:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1521:14:27" + }, + "scope": 6208, + "src": "1393:447:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6209, + "src": "480:1362:27" + } + ], + "src": "0:1843:27" + }, + "legacyAST": { + "attributes": { + "absolutePath": "project:/contracts/KeepToken.sol", + "exportedSymbols": { + "KeepToken": [6208], + "tokenRecipient": [6136] + } + }, + "children": [ + { + "attributes": { + "literals": ["solidity", "0.5", ".17"] + }, + "id": 6122, + "name": "PragmaDirective", + "src": "0:23:27" + }, + { + "attributes": { + "SourceUnit": 1024, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "scope": 6209, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 6123, + "name": "ImportDirective", + "src": "25:71:27" + }, + { + "attributes": { + "SourceUnit": 1082, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "scope": 6209, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 6124, + "name": "ImportDirective", + "src": "97:71:27" + }, + { + "attributes": { + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "interface", + "documentation": "@dev Interface of recipient contract for approveAndCall pattern.", + "fullyImplemented": false, + "linearizedBaseContracts": [6136], + "name": "tokenRecipient", + "scope": 6209 + }, + "children": [ + { + "attributes": { + "body": null, + "documentation": null, + "implemented": false, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "receiveApproval", + "scope": 6136, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_from", + "scope": 6135, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6125, + "name": "ElementaryTypeName", + "src": "304:7:27" + } + ], + "id": 6126, + "name": "VariableDeclaration", + "src": "304:13:27" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "scope": 6135, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 6127, + "name": "ElementaryTypeName", + "src": "327:7:27" + } + ], + "id": 6128, + "name": "VariableDeclaration", + "src": "327:14:27" + }, + { + "attributes": { + "constant": false, + "name": "_token", + "scope": 6135, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6129, + "name": "ElementaryTypeName", + "src": "351:7:27" + } + ], + "id": 6130, + "name": "VariableDeclaration", + "src": "351:14:27" + }, + { + "attributes": { + "constant": false, + "name": "_extraData", + "scope": 6135, + "stateVariable": false, + "storageLocation": "calldata", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 6131, + "name": "ElementaryTypeName", + "src": "375:5:27" + } + ], + "id": 6132, + "name": "VariableDeclaration", + "src": "375:25:27" + } + ], + "id": 6133, + "name": "ParameterList", + "src": "294:112:27" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 6134, + "name": "ParameterList", + "src": "415:0:27" + } + ], + "id": 6135, + "name": "FunctionDefinition", + "src": "270:146:27" + } + ], + "id": 6136, + "name": "ContractDefinition", + "src": "239:179:27" + }, + { + "attributes": { + "contractDependencies": [64, 989, 1023, 1081, 1150], + "contractKind": "contract", + "documentation": "@title KEEP Token\n @dev Standard ERC20Burnable token", + "fullyImplemented": true, + "linearizedBaseContracts": [6208, 1081, 1023, 989, 1150, 64], + "name": "KeepToken", + "scope": 6209 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ERC20Burnable", + "referencedDeclaration": 1023, + "type": "contract ERC20Burnable" + }, + "id": 6137, + "name": "UserDefinedTypeName", + "src": "502:13:27" + } + ], + "id": 6138, + "name": "InheritanceSpecifier", + "src": "502:13:27" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ERC20Detailed", + "referencedDeclaration": 1081, + "type": "contract ERC20Detailed" + }, + "id": 6139, + "name": "UserDefinedTypeName", + "src": "517:13:27" + } + ], + "id": 6140, + "name": "InheritanceSpecifier", + "src": "517:13:27" + }, + { + "attributes": { + "constant": true, + "name": "NAME", + "scope": 6208, + "stateVariable": true, + "storageLocation": "default", + "type": "string", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 6141, + "name": "ElementaryTypeName", + "src": "537:6:27" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4b45455020546f6b656e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"KEEP Token\"", + "value": "KEEP Token" + }, + "id": 6142, + "name": "Literal", + "src": "567:12:27" + } + ], + "id": 6143, + "name": "VariableDeclaration", + "src": "537:42:27" + }, + { + "attributes": { + "constant": true, + "name": "SYMBOL", + "scope": 6208, + "stateVariable": true, + "storageLocation": "default", + "type": "string", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string" + }, + "id": 6144, + "name": "ElementaryTypeName", + "src": "585:6:27" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4b454550", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"KEEP\"", + "value": "KEEP" + }, + "id": 6145, + "name": "Literal", + "src": "617:6:27" + } + ], + "id": 6146, + "name": "VariableDeclaration", + "src": "585:38:27" + }, + { + "attributes": { + "constant": true, + "name": "DECIMALS", + "scope": 6208, + "stateVariable": true, + "storageLocation": "default", + "type": "uint8", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint8", + "type": "uint8" + }, + "id": 6147, + "name": "ElementaryTypeName", + "src": "629:5:27" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3138", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 18", + "value": "18" + }, + "id": 6148, + "name": "Literal", + "src": "662:2:27" + } + ], + "id": 6149, + "name": "VariableDeclaration", + "src": "629:35:27" + }, + { + "attributes": { + "constant": true, + "name": "INITIAL_SUPPLY", + "scope": 6208, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 6150, + "name": "ElementaryTypeName", + "src": "758:7:27" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + }, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "operator": "**", + "type": "int_const 1000000000000000000000000000" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3130", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 10", + "value": "10" + }, + "id": 6151, + "name": "Literal", + "src": "799:2:27" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3237", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 27", + "value": "27" + }, + "id": 6152, + "name": "Literal", + "src": "803:2:27" + } + ], + "id": 6153, + "name": "BinaryOperation", + "src": "799:6:27" + } + ], + "id": 6154, + "name": "VariableDeclaration", + "src": "758:47:27" + }, + { + "attributes": { + "documentation": "@dev Gives msg.sender all of existing tokens.", + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "name": "", + "scope": 6208, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 6155, + "name": "ParameterList", + "src": "917:2:27" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 6161, + "name": "ParameterList", + "src": "965:0:27" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1081, + "type": "type(contract ERC20Detailed)", + "value": "ERC20Detailed" + }, + "id": 6156, + "name": "Identifier", + "src": "927:13:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6143, + "type": "string memory", + "value": "NAME" + }, + "id": 6157, + "name": "Identifier", + "src": "941:4:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6146, + "type": "string memory", + "value": "SYMBOL" + }, + "id": 6158, + "name": "Identifier", + "src": "947:6:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6149, + "type": "uint8", + "value": "DECIMALS" + }, + "id": 6159, + "name": "Identifier", + "src": "955:8:27" + } + ], + "id": 6160, + "name": "ModifierInvocation", + "src": "927:37:27" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 873, + "type": "function (address,uint256)", + "value": "_mint" + }, + "id": 6162, + "name": "Identifier", + "src": "975:5:27" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 6163, + "name": "Identifier", + "src": "981:3:27" + } + ], + "id": 6164, + "name": "MemberAccess", + "src": "981:10:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6154, + "type": "uint256", + "value": "INITIAL_SUPPLY" + }, + "id": 6165, + "name": "Identifier", + "src": "993:14:27" + } + ], + "id": 6166, + "name": "FunctionCall", + "src": "975:33:27" + } + ], + "id": 6167, + "name": "ExpressionStatement", + "src": "975:33:27" + } + ], + "id": 6168, + "name": "Block", + "src": "965:50:27" + } + ], + "id": 6169, + "name": "FunctionDefinition", + "src": "906:109:27" + }, + { + "attributes": { + "documentation": "@notice Set allowance for other address and notify.\n Allows `_spender` to spend no more than `_value` tokens\n on your behalf and then ping the contract about it.\n @param _spender The address authorized to spend.\n @param _value The max amount they can spend.\n @param _extraData Extra information to send to the approved contract.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "approveAndCall", + "scope": 6208, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_spender", + "scope": 6207, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 6170, + "name": "ElementaryTypeName", + "src": "1426:7:27" + } + ], + "id": 6171, + "name": "VariableDeclaration", + "src": "1426:16:27" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "scope": 6207, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 6172, + "name": "ElementaryTypeName", + "src": "1452:7:27" + } + ], + "id": 6173, + "name": "VariableDeclaration", + "src": "1452:14:27" + }, + { + "attributes": { + "constant": false, + "name": "_extraData", + "scope": 6207, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 6174, + "name": "ElementaryTypeName", + "src": "1476:5:27" + } + ], + "id": 6175, + "name": "VariableDeclaration", + "src": "1476:23:27" + } + ], + "id": 6176, + "name": "ParameterList", + "src": "1416:89:27" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "success", + "scope": 6207, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 6177, + "name": "ElementaryTypeName", + "src": "1522:4:27" + } + ], + "id": 6178, + "name": "VariableDeclaration", + "src": "1522:12:27" + } + ], + "id": 6179, + "name": "ParameterList", + "src": "1521:14:27" + }, + { + "children": [ + { + "attributes": { + "assignments": [6181] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "spender", + "scope": 6206, + "stateVariable": false, + "storageLocation": "default", + "type": "contract tokenRecipient", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "tokenRecipient", + "referencedDeclaration": 6136, + "type": "contract tokenRecipient" + }, + "id": 6180, + "name": "UserDefinedTypeName", + "src": "1546:14:27" + } + ], + "id": 6181, + "name": "VariableDeclaration", + "src": "1546:22:27" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "contract tokenRecipient", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 6136, + "type": "type(contract tokenRecipient)", + "value": "tokenRecipient" + }, + "id": 6182, + "name": "Identifier", + "src": "1571:14:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6171, + "type": "address", + "value": "_spender" + }, + "id": 6183, + "name": "Identifier", + "src": "1586:8:27" + } + ], + "id": 6184, + "name": "FunctionCall", + "src": "1571:24:27" + } + ], + "id": 6185, + "name": "VariableDeclarationStatement", + "src": "1546:49:27" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 682, + "type": "function (address,uint256) returns (bool)", + "value": "approve" + }, + "id": 6186, + "name": "Identifier", + "src": "1609:7:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6171, + "type": "address", + "value": "_spender" + }, + "id": 6187, + "name": "Identifier", + "src": "1617:8:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6173, + "type": "uint256", + "value": "_value" + }, + "id": 6188, + "name": "Identifier", + "src": "1627:6:27" + } + ], + "id": 6189, + "name": "FunctionCall", + "src": "1609:25:27" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "receiveApproval", + "referencedDeclaration": 6135, + "type": "function (address,uint256,address,bytes memory) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6181, + "type": "contract tokenRecipient", + "value": "spender" + }, + "id": 6190, + "name": "Identifier", + "src": "1650:7:27" + } + ], + "id": 6192, + "name": "MemberAccess", + "src": "1650:23:27" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 6193, + "name": "Identifier", + "src": "1691:3:27" + } + ], + "id": 6194, + "name": "MemberAccess", + "src": "1691:10:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6173, + "type": "uint256", + "value": "_value" + }, + "id": 6195, + "name": "Identifier", + "src": "1719:6:27" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_KeepToken_$6208", + "typeString": "contract KeepToken" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 6196, + "name": "ElementaryTypeNameExpression", + "src": "1743:7:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28212, + "type": "contract KeepToken", + "value": "this" + }, + "id": 6197, + "name": "Identifier", + "src": "1751:4:27" + } + ], + "id": 6198, + "name": "FunctionCall", + "src": "1743:13:27" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 6175, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 6199, + "name": "Identifier", + "src": "1774:10:27" + } + ], + "id": 6200, + "name": "FunctionCall", + "src": "1650:148:27" + } + ], + "id": 6201, + "name": "ExpressionStatement", + "src": "1650:148:27" + }, + { + "attributes": { + "functionReturnParameters": 6179 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 6202, + "name": "Literal", + "src": "1819:4:27" + } + ], + "id": 6203, + "name": "Return", + "src": "1812:11:27" + } + ], + "id": 6204, + "name": "Block", + "src": "1636:198:27" + } + ], + "id": 6205, + "name": "IfStatement", + "src": "1605:229:27" + } + ], + "id": 6206, + "name": "Block", + "src": "1536:304:27" + } + ], + "id": 6207, + "name": "FunctionDefinition", + "src": "1393:447:27" + } + ], + "id": 6208, + "name": "ContractDefinition", + "src": "480:1362:27" + } + ], + "id": 6209, + "name": "SourceUnit", + "src": "0:1843:27" + }, + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang" + }, + "networks": { + "11155111": { + "events": {}, + "links": {}, + "address": "0xa07f4E37C2E7089Ea3AFffbe51A6A281833a4D14", + "transactionHash": "0x44191b3e2a0bfbacca64d01739cd98f91ed47e34cbe3853e31535e8dc6542f51" + } + }, + "schemaVersion": "3.4.8", + "updatedAt": "2023-09-12T08:40:37.348Z", + "networkType": "ethereum", + "devdoc": { + "details": "Standard ERC20Burnable token", + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address." + }, + "approveAndCall(address,uint256,bytes)": { + "params": { + "_extraData": "Extra information to send to the approved contract.", + "_spender": "The address authorized to spend.", + "_value": "The max amount they can spend." + } + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "burn(uint256)": { + "details": "Destroys `amount` tokens from the caller. * See {ERC20-_burn}." + }, + "burnFrom(address,uint256)": { + "details": "See {ERC20-_burnFrom}." + }, + "constructor": { + "details": "Gives msg.sender all of existing tokens." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + } + }, + "title": "KEEP Token" + }, + "userdoc": { + "methods": { + "approveAndCall(address,uint256,bytes)": { + "notice": "Set allowance for other address and notify. Allows `_spender` to spend no more than `_value` tokens on your behalf and then ping the contract about it." + } + } + } +} diff --git a/external/sepolia/KeepTokenStaking.json b/external/sepolia/KeepTokenStaking.json new file mode 100644 index 00000000..dfbab92d --- /dev/null +++ b/external/sepolia/KeepTokenStaking.json @@ -0,0 +1,41590 @@ +{ + "contractName": "TokenStaking", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ERC20Burnable", + "name": "_token", + "type": "address" + }, + { + "internalType": "contract TokenGrant", + "name": "_tokenGrant", + "type": "address" + }, + { + "internalType": "contract TokenStakingEscrow", + "name": "_escrow", + "type": "address" + }, + { + "internalType": "contract KeepRegistry", + "name": "_registry", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_initializationPeriod", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + } + ], + "name": "ExpiredLockReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + } + ], + "name": "LockReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "authorizer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "OperatorStaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "RecoveredStake", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "StakeDelegated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "until", + "type": "uint256" + } + ], + "name": "StakeLocked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "StakeOwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensSeized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensSlashed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newAmount", + "type": "uint256" + } + ], + "name": "TopUpCompleted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "topUp", + "type": "uint256" + } + ], + "name": "TopUpInitiated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "undelegatedAt", + "type": "uint256" + } + ], + "name": "Undelegated", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "authorizeOperatorContract", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "authorizerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "beneficiaryOf", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "delegatedAuthoritySource", + "type": "address" + } + ], + "name": "claimDelegatedAuthority", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "deployedAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "getAuthoritySource", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initializationPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "isApprovedOperatorContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "isAuthorizedForOperator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "minimumStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "undelegationPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_extraData", + "type": "bytes" + } + ], + "name": "receiveApproval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "commitTopUp", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "cancelStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "undelegate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_undelegationTimestamp", + "type": "uint256" + } + ], + "name": "undelegateAt", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "recoverStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "getDelegationInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "undelegatedAt", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "lockStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "unlockStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "releaseExpiredLock", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isStakeLocked", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "getLocks", + "outputs": [ + { + "internalType": "address[]", + "name": "creators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "expirations", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amountToSlash", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "misbehavedOperators", + "type": "address[]" + } + ], + "name": "slash", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amountToSeize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardMultiplier", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tattletale", + "type": "address" + }, + { + "internalType": "address[]", + "name": "misbehavedOperators", + "type": "address[]" + } + ], + "name": "seize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferStakeOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "eligibleStake", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "activeStake", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "staker", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "hasMinimumStake", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ERC20Burnable\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"contract TokenGrant\",\"name\":\"_tokenGrant\",\"type\":\"address\"},{\"internalType\":\"contract TokenStakingEscrow\",\"name\":\"_escrow\",\"type\":\"address\"},{\"internalType\":\"contract KeepRegistry\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_initializationPeriod\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lockCreator\",\"type\":\"address\"}],\"name\":\"ExpiredLockReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lockCreator\",\"type\":\"address\"}],\"name\":\"LockReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"RecoveredStake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakeDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lockCreator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"until\",\"type\":\"uint256\"}],\"name\":\"StakeLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"StakeOwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSeized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSlashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAmount\",\"type\":\"uint256\"}],\"name\":\"TopUpCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"topUp\",\"type\":\"uint256\"}],\"name\":\"TopUpInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"undelegatedAt\",\"type\":\"uint256\"}],\"name\":\"Undelegated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"authorizeOperatorContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"authorizerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"beneficiaryOf\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"cancelStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatedAuthoritySource\",\"type\":\"address\"}],\"name\":\"claimDelegatedAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"commitTopUp\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"deployedAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"eligibleStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"getAuthoritySource\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"getDelegationInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"undelegatedAt\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLocks\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"creators\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"expirations\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"hasMinimumStake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initializationPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"isApprovedOperatorContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"isAuthorizedForOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isStakeLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"lockStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minimumStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"receiveApproval\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"recoverStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"releaseExpiredLock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToSeize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tattletale\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"misbehavedOperators\",\"type\":\"address[]\"}],\"name\":\"seize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToSlash\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"misbehavedOperators\",\"type\":\"address[]\"}],\"name\":\"slash\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferStakeOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"undelegate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_undelegationTimestamp\",\"type\":\"uint256\"}],\"name\":\"undelegateAt\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"undelegationPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"unlockStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"activeStake(address,address)\":{\"params\":{\"_operator\":\"address of stake operator.\",\"_operatorContract\":\"address of operator contract.\"},\"return\":\"an uint256 representing the eligible stake balance.\"},\"authorizeOperatorContract(address,address)\":{\"params\":{\"_operator\":\"address of stake operator.\",\"_operatorContract\":\"address of operator contract.\"}},\"authorizerOf(address)\":{\"return\":\"Authorizer address.\"},\"balanceOf(address)\":{\"params\":{\"_address\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount staked by the passed address.\"},\"beneficiaryOf(address)\":{\"return\":\"Beneficiary address.\"},\"cancelStake(address)\":{\"params\":{\"_operator\":\"Address of the stake operator.\"}},\"claimDelegatedAuthority(address)\":{\"details\":\"If `delegatedAuthoritySource` is an approved operator contract and recognizes the claimant, this relationship will be recorded in `delegatedAuthority`. Later, the claimant can slash, seize, place locks etc. on operators that have authorized the `delegatedAuthoritySource`. If the `delegatedAuthoritySource` is disabled with the panic button, any recipients of delegated authority from it will also be disabled.\"},\"commitTopUp(address)\":{\"params\":{\"_operator\":\"The operator with a pending top-up that is getting committed.\"}},\"constructor\":{\"params\":{\"_escrow\":\"Escrow dedicated for this staking contract.\",\"_initializationPeriod\":\"To avoid certain attacks on work selection, recently created operators must wait for a specific period of time before being eligible for work selection.\",\"_registry\":\"Keep contract registry contract.\",\"_token\":\"KEEP token contract.\",\"_tokenGrant\":\"KEEP token grant contract.\"}},\"eligibleStake(address,address)\":{\"params\":{\"_operator\":\"address of stake operator.\",\"_operatorContract\":\"address of operator contract.\"},\"return\":\"an uint256 representing the eligible stake balance.\"},\"getDelegationInfo(address)\":{\"params\":{\"_operator\":\"Operator address.\"},\"return\":\"amount The amount of tokens the given operator delegated.createdAt The time when the stake has been delegated.undelegatedAt The time when undelegation has been requested. If undelegation has not been requested, 0 is returned.\"},\"getLocks(address)\":{\"return\":\"creators The addresses of operator contracts that have placed a lock on the operator.expirations The expiration times of the locks placed on the operator.\"},\"hasMinimumStake(address,address)\":{\"params\":{\"operatorContract\":\"Operator contract's address\",\"staker\":\"Staker's address\"},\"return\":\"True if has enough active stake to participate in the network, false otherwise.\"},\"isApprovedOperatorContract(address)\":{\"params\":{\"_operatorContract\":\"address of operator contract.\"},\"return\":\"True if operator contract is approved, false if operator contract has not been approved or if it was disabled by the panic button.\"},\"isAuthorizedForOperator(address,address)\":{\"params\":{\"_operator\":\"address of stake operator.\",\"_operatorContract\":\"address of operator contract.\"}},\"lockStake(address,uint256)\":{\"params\":{\"duration\":\"Lock duration in seconds.\",\"operator\":\"Operator address.\"}},\"ownerOf(address)\":{\"return\":\"Stake owner address.\"},\"receiveApproval(address,uint256,address,bytes)\":{\"details\":\"Requires that the provided token contract be the same one linked to this contract.\",\"params\":{\"_extraData\":\"Data for stake delegation. This byte array must have the following values concatenated: - Beneficiary address (20 bytes), ignored for a top-up - Operator address (20 bytes) - Authorizer address (20 bytes), ignored for a top-up - Grant ID (32 bytes) - required only when called by TokenStakingEscrow\",\"_from\":\"The owner of the tokens who approved them to transfer.\",\"_token\":\"Token contract address.\",\"_value\":\"Approved amount for the transfer and stake.\"}},\"recoverStake(address)\":{\"params\":{\"_operator\":\"Operator address.\"}},\"releaseExpiredLock(address,address)\":{\"details\":\"Necessary for removing locks placed by contracts that have been disabled by the panic button. Also applicable to prevent inadvertent DoS of `recoverStake` if too many operator contracts have failed to clean up their locks.\"},\"seize(uint256,uint256,address,address[])\":{\"params\":{\"amountToSeize\":\"Token amount to seize from every misbehaved operator.\",\"misbehavedOperators\":\"Array of addresses to seize the tokens from.\",\"rewardMultiplier\":\"Reward adjustment in percentage. Min 1% and 100% max.\",\"tattletale\":\"Address to receive the 5% reward.\"}},\"slash(uint256,address[])\":{\"params\":{\"amountToSlash\":\"Token amount to slash from every misbehaved operator.\",\"misbehavedOperators\":\"Array of addresses to seize the tokens from.\"}},\"transferStakeOwnership(address,address)\":{\"params\":{\"newOwner\":\"Address of the new staking relationship owner.\",\"operator\":\"Address of the stake operator.\"}},\"undelegate(address)\":{\"params\":{\"_operator\":\"Address of the stake operator.\"}},\"undelegateAt(address,uint256)\":{\"params\":{\"_operator\":\"Address of the stake operator.\",\"_undelegationTimestamp\":\"The timestamp undelegation is to start at.\"}},\"unlockStake(address)\":{\"details\":\"Only for operator contracts. To remove expired or disabled locks, use `releaseExpiredLocks`. The authorization check ensures that the caller must have been able to place a lock on the operator sometime in the past. We don't need to check for current approval status of the caller because unlocking stake cannot harm the operator nor interfere with other operator contracts. Therefore even disabled operator contracts may freely unlock stake.\",\"params\":{\"operator\":\"Operator address.\"}}},\"title\":\"TokenStaking\"},\"userdoc\":{\"methods\":{\"activeStake(address,address)\":{\"notice\":\"Gets the active stake balance of the specified address. An active stake is a stake that passed the initialization period, and may be in the process of undelegation but has not been released yet, either because the undelegation period is not over, or because the operator contract has an active lock on the operator. Also, the operator had to approve the specified operator contract. /// The difference between eligible stake is that active stake does not make the operator eligible for work selection but it may be still finishing earlier work until the stake is released. Operator with a minimum required amount of active stake can join the network but cannot be selected to any new work. \"},\"authorizeOperatorContract(address,address)\":{\"notice\":\"Authorizes operator contract to access staked token balance of the provided operator. Can only be executed by stake operator authorizer. Contracts using delegated authority cannot be authorized with `authorizeOperatorContract`. Instead, authorize `getAuthoritySource(_operatorContract)`.\"},\"authorizerOf(address)\":{\"notice\":\"Gets the authorizer for the specified operator address.\"},\"balanceOf(address)\":{\"notice\":\"Gets the stake balance of the specified address.\"},\"beneficiaryOf(address)\":{\"notice\":\"Gets the beneficiary for the specified operator address.\"},\"cancelStake(address)\":{\"notice\":\"Cancels stake of tokens within the operator initialization period without being subjected to the token lockup for the undelegation period. This can be used to undo mistaken delegation to the wrong operator address.\"},\"claimDelegatedAuthority(address)\":{\"notice\":\"Grant the sender the same authority as `delegatedAuthoritySource`\"},\"commitTopUp(address)\":{\"notice\":\"Commits pending top-up for the provided operator. If the top-up did not pass the initialization period, the function fails.\"},\"constructor\":\"Creates a token staking contract for a provided Standard ERC20Burnable token.\",\"eligibleStake(address,address)\":{\"notice\":\"Gets the eligible stake balance of the specified address. An eligible stake is a stake that passed the initialization period and is not currently undelegating. Also, the operator had to approve the specified operator contract. /// Operator with a minimum required amount of eligible stake can join the network and participate in new work selection. \"},\"getAuthoritySource(address)\":{\"notice\":\"Get the source of the operator contract's authority. If the contract uses delegated authority, returns the original source of the delegated authority. If the contract doesn't use delegated authority, returns the contract itself. Authorize `getAuthoritySource(operatorContract)` to grant `operatorContract` the authority to penalize an operator.\"},\"getDelegationInfo(address)\":{\"notice\":\"Gets stake delegation info for the given operator.\"},\"getLocks(address)\":{\"notice\":\"Get the locks placed on the operator.\"},\"hasMinimumStake(address,address)\":{\"notice\":\"Checks if the specified account has enough active stake to become network operator and that the specified operator contract has been authorized for potential slashing. /// Having the required minimum of active stake makes the operator eligible to join the network. If the active stake is not currently undelegating, operator is also eligible for work selection. \"},\"isApprovedOperatorContract(address)\":{\"notice\":\"Checks if the operator contract is authorized in the registry. If the contract uses delegated authority it checks authorization of the source contract.\"},\"isAuthorizedForOperator(address,address)\":{\"notice\":\"Checks if operator contract has access to the staked token balance of the provided operator.\"},\"isStakeLocked(address)\":{\"notice\":\"Check whether the operator has any active locks that haven't expired yet and whose creators aren't disabled by the panic button.\"},\"lockStake(address,uint256)\":{\"notice\":\"Locks given operator stake for the specified duration. Locked stake may not be recovered until the lock expires or is released, even if the normal undelegation period has passed. Only previously authorized operator contract can lock the stake.\"},\"minimumStake()\":{\"notice\":\"Returns minimum amount of KEEP that allows sMPC cluster client to participate in the Keep network. Expressed as number with 18-decimal places. Initial minimum stake is higher than the final and lowered periodically based on the amount of steps and the length of the minimum stake schedule in seconds.\"},\"ownerOf(address)\":{\"notice\":\"Gets the stake owner for the specified operator address.\"},\"receiveApproval(address,uint256,address,bytes)\":{\"notice\":\"Receives approval of token transfer and stakes the approved amount or adds the approved amount to an existing delegation (a \\u201ctop-up\\u201d). In case of a top-up, it is expected that the operator stake is not undelegated and that the top-up is performed from the same source of tokens as the initial delegation. That is, if the tokens were delegated from a grant, top-up has to be performed from the same grant. If the delegation was done using liquid tokens, only liquid tokens from the same owner can be used to top-up the stake. Top-up can not be cancelled so it is important to be careful with the amount of KEEP added to the stake.\"},\"recoverStake(address)\":{\"notice\":\"Recovers staked tokens and transfers them back to the owner. Recovering tokens can only be performed when the operator finished undelegating.\"},\"releaseExpiredLock(address,address)\":{\"notice\":\"Removes the lock of the specified operator contract if the lock has expired or the contract has been disabled.\"},\"seize(uint256,uint256,address,address[])\":{\"notice\":\"Seize provided token amount from every member in the misbehaved operators array. The tattletale is rewarded with 5% of the total seized amount scaled by the reward adjustment parameter and the rest 95% is burned.\"},\"slash(uint256,address[])\":{\"notice\":\"Slash provided token amount from every member in the misbehaved operators array and burn 100% of all the tokens.\"},\"transferStakeOwnership(address,address)\":{\"notice\":\"Allows the current staking relationship owner to transfer the ownership to someone else.\"},\"undelegate(address)\":{\"notice\":\"Undelegates staked tokens. You will be able to recover your stake by calling `recoverStake()` with operator address once undelegation period is over.\"},\"undelegateAt(address,uint256)\":{\"notice\":\"Set an undelegation time for staked tokens. Undelegation will begin at the specified timestamp. You will be able to recover your stake by calling `recoverStake()` with operator address once undelegation period is over.\"},\"undelegationPeriod()\":{\"notice\":\"Returns the current value of the undelegation period. The staking contract guarantees that an undelegated operator\\u2019s stakes will stay locked for a period of time after undelegation, and thus available as collateral for any work the operator is engaged in. The undelegation period is two weeks for the first two months and two months after that.\"},\"unlockStake(address)\":{\"notice\":\"Removes a lock the caller had previously placed on the operator.\"}},\"notice\":\"A token staking contract for a specified standard ERC20Burnable token. A holder of the specified token can stake delegate its tokens to this contract and recover the stake after undelegation period is over.\"}},\"settings\":{\"compilationTarget\":{\"project:/contracts/TokenStaking.sol\":\"TokenStaking\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xecd8ab29d9a5771c3964d0cd1788c4a5098a0081b20fb275da850a22b1c59806\",\"urls\":[\"bzz-raw://696a75bc2c55407ce8251ccc7d19ecb1b7b2be1796a160a6524312babcc7e3d4\",\"dweb:/ipfs/QmQViKEp3y99h9uhRssE29TmjBKRnFMaoz3eJZ4eggggg2\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x65a4078c03875c25413a068ce9cfdd7e68a90f8786612d1189c89341e6e3b802\",\"urls\":[\"bzz-raw://45c0d95495b944fbb1aa09d900b0ab530903a432125ab8fddfa05064a7988991\",\"dweb:/ipfs/Qma2VeknkKA1THeubGzshWFk44BktXkXP1UKp9Un2uDSsu\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0x9b94356691f3cbf90a5d83ae3fdf6a5a662bb004d2bd8b034160d60221807e64\",\"urls\":[\"bzz-raw://14a9d33db455302b8bb9fdb28998efefbe5a1cb41b29e31391609f646b2ab351\",\"dweb:/ipfs/Qmd4wFr6GEMZnnxgXeq3gmp7cs8tqDuHp3TVNhCbjnux2V\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzz-raw://28d03f328e19e4099d5013de0649afaeaabac1a614e130767ab1cb4aca9775b6\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\",\"urls\":[\"bzz-raw://7d8ec81683520c06baeef3f7e06cd82bd6fd5fa611f26857f475f6c829540aff\",\"dweb:/ipfs/QmTDkFzKnrpiV1UKnSoiZAHPuguWzokrr4pFbSPvyaSo56\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x70df50e240407aa50915ad14f61b1a901fa335b37de20955b99ed647be756af0\",\"urls\":[\"bzz-raw://9404711f3206610c08ea97fa52c7b6b4d2e9d536e96fc4b7210aa7e24f796c36\",\"dweb:/ipfs/QmZDzpVzjoap13SuPEq5pVCrmdjoKVZnTsQPLKXAbynTTW\"]},\"project:/contracts/Authorizations.sol\":{\"keccak256\":\"0x340bb3d18b59fde20dce41ecd5128d891f871a274f8384a89f14754cd293c3cf\",\"urls\":[\"bzz-raw://b9084255d117f6f6307247a0bebc87387a2e5c7a7eec420ff976736ab9417af4\",\"dweb:/ipfs/QmZ7tx4ued84cXNmi7mmvaEAhcpNCWeisiivnbM4aSHeFw\"]},\"project:/contracts/GrantStakingPolicy.sol\":{\"keccak256\":\"0x433e1f5c70af09ca1b9fac5e602be3ffec7e8e50b34b07f5141bd14e8cca0674\",\"urls\":[\"bzz-raw://d0b4ad0aa3c174856ca32c3ffd7685141873b9549f941894cca8118b5ae99275\",\"dweb:/ipfs/QmdMA1csXSSQHmnsSQs2tmeDJ6zdoKdyD2EneKJfM9VtRj\"]},\"project:/contracts/KeepRegistry.sol\":{\"keccak256\":\"0xbc0e44a838bae38c1d11db28b5bfcfdfd79394d423ce6fd85dcb90a6420e1f10\",\"urls\":[\"bzz-raw://74b140b3a4547cc742785c613e2927bc3592e71f0f42eff5112462a9985083cb\",\"dweb:/ipfs/QmQLsNVWAcgHhtoJAfiXjipYaksfLpcoaa45c2LvRh9hfg\"]},\"project:/contracts/KeepToken.sol\":{\"keccak256\":\"0x42abcd9c9c67d8d83b91a01e42abde3355b3a67fb7c510d7d8b63b5e23d3defe\",\"urls\":[\"bzz-raw://ef26e4ad4042c74e230a343f9e69c2d142b581e4a2c7ee27ec51a1f7e9f91a68\",\"dweb:/ipfs/QmfJ9cEpzj2WQ5upvizC16pthvC2vQP8geFeUATFb4ov2G\"]},\"project:/contracts/ManagedGrant.sol\":{\"keccak256\":\"0x3f0f6e2107f6154a619b02dbc694c9e3341005dd0879a10e7f105d2a540a1158\",\"urls\":[\"bzz-raw://f6559e8ad8bea87d1d7a1f333935c8e42d7979e2de47f1a34a7cb7121f35f021\",\"dweb:/ipfs/QmSKdVqS9AiEQ2UjtpPGnz3UBgaVA6enGadZHjqsxaSnHj\"]},\"project:/contracts/StakeDelegatable.sol\":{\"keccak256\":\"0x328b20a9f89222294dd8aaff19097bcbe427e211f7e8006ffb107d5813ce7522\",\"urls\":[\"bzz-raw://65316b2733aa23fac341170a9d668a78ddef663d59c7fa6aa68ad4b1c98c3e03\",\"dweb:/ipfs/QmShjVArh35v93n5erjbZMxHnBcctNS3tkgd1jRqTNWaEA\"]},\"project:/contracts/TokenGrant.sol\":{\"keccak256\":\"0x8aa80561282a5e4eeb3de864e7d3425314f45442c7aa8af3ba8991f13de8f3fe\",\"urls\":[\"bzz-raw://e7d993377146c0fa2b494cbb03120e781d5b50f08866b542bcb483f2bf7f607e\",\"dweb:/ipfs/QmR4MWgYhyZRhQZfgqEL2yd2FebgLx9Nabr9mGwRU5hzPz\"]},\"project:/contracts/TokenGrantStake.sol\":{\"keccak256\":\"0x55f16cd0566659da7db27f136f13db4d5b9be5d970ae481caf50ae1066339758\",\"urls\":[\"bzz-raw://289afc90c055062a781434e4a15adec36e22a85caf6a0f923d44dbdccab3abad\",\"dweb:/ipfs/Qme5dAkEGG5gkydFsCAKURU7a4PGKwwEL4iutBpoJyEqFX\"]},\"project:/contracts/TokenSender.sol\":{\"keccak256\":\"0xd2209f6cb3122bf4b6367ff80dcd24a108885e37fd86a87d127467c5782ae12f\",\"urls\":[\"bzz-raw://c0496338c50a4e29eea1702780b7887418f5df4a251c3512308f109187a20d71\",\"dweb:/ipfs/QmP6seRmXzSf59g8iAFEvbwmtcQyU4x8H523auAM9KhujG\"]},\"project:/contracts/TokenStaking.sol\":{\"keccak256\":\"0x285142cb59dea7e8ed3291eee412e49522bab77108805e24cadbf7bc4cac5966\",\"urls\":[\"bzz-raw://e046efc9d63d925b77d01be60d7f75b755ab1dc2c84c44a17198dc748debef6f\",\"dweb:/ipfs/QmNc2X9Cby4T1LzHCELKhfS6qe33wgXgLzWzssGyDGJ99R\"]},\"project:/contracts/TokenStakingEscrow.sol\":{\"keccak256\":\"0x046fc3b328b1b9ecb8a85b595dcdc5a1519ffcf1c49e72d8ffab675b29fa7ef6\",\"urls\":[\"bzz-raw://36c5ea56265974bcf13ecb6cf7425169f71d287754436ecbea6f1ef8344dfe3e\",\"dweb:/ipfs/QmVkeiBXzEMpPuGoer9n2JWoxV7DHjkVPfYsF5Nh4uPqTM\"]},\"project:/contracts/libraries/RolesLookup.sol\":{\"keccak256\":\"0x3f5750a8cf219f35fc5d2233c4db2812083f8e53949b315b44ad342c70bec4c7\",\"urls\":[\"bzz-raw://47a0350004b4fc99bf22c07684129665111512603fd167bd87da91bd027a87b7\",\"dweb:/ipfs/Qmd6EfqiMrg4xbrQcs1Zk6aZ4YW1d1egfrXfr45HVUoXaR\"]},\"project:/contracts/libraries/grant/UnlockingSchedule.sol\":{\"keccak256\":\"0xf1704afe7ae23810b02ec5f64a752a2217dcc6a03d0be6422372a3b106156e69\",\"urls\":[\"bzz-raw://4792dee0044b1748d80e083387911f417e0367001a5aa649b7e59a2e7507a8d5\",\"dweb:/ipfs/QmWNgFNmFUiRQvKCEiyJed8wCF8GzmMw315GrhPGsMWetw\"]},\"project:/contracts/libraries/staking/GrantStaking.sol\":{\"keccak256\":\"0x281e5716582e26b3c4ee63aad71f130c2b9b40be94a337826872b45daf4c0afe\",\"urls\":[\"bzz-raw://4e17a1ca3b362f303bdc09205db719e8e49b5a49e17ac576a0ab310f07fa63b6\",\"dweb:/ipfs/QmcvQHF1mUuMiwfBM3op55zmYuJCpffCU3yT7pUax7yjyh\"]},\"project:/contracts/libraries/staking/LockUtils.sol\":{\"keccak256\":\"0x8bde6802329174c60343acdb2ac9914a05a7bc7c1c0ce4e981d3f797f6190dab\",\"urls\":[\"bzz-raw://1c847315d4a132e7363b3eba918ea7e44921a65e82580e61885400d921cbd8d3\",\"dweb:/ipfs/Qmdg7ECyE3r4Q1n3fQWFtBJvMDMj6kvzKQMpPCGfQFwNnP\"]},\"project:/contracts/libraries/staking/Locks.sol\":{\"keccak256\":\"0x60c93b4a1964e06087ddb6ebd6e20b80728e24cc24956a952eb7d1267be45fe0\",\"urls\":[\"bzz-raw://912540915aaa83a10be70b22b9f67197e63df48fcb60a4c92819da628a1844e5\",\"dweb:/ipfs/QmeYjotXEQruDqZCxh7tUhfLM34Bvq6n2gbGVsd7aaQbaG\"]},\"project:/contracts/libraries/staking/MinimumStakeSchedule.sol\":{\"keccak256\":\"0xf99053f84873f54d036ebffac7245aa899227ef3673ed1b9dc86bde6add76fbf\",\"urls\":[\"bzz-raw://1f8bc44e7058fbbc9410495651dce3b358834022ae0fd2c66824e404cbbe0b17\",\"dweb:/ipfs/QmV3csHqadQ5gdQiFRUSP64t8a11q8Znbr8Szstm7hiN1G\"]},\"project:/contracts/libraries/staking/TopUps.sol\":{\"keccak256\":\"0x2454e61ed5f91ec7d086cc5555ce50e5b402cb3a96e19480840ceb51ea5c6a00\",\"urls\":[\"bzz-raw://37e118f637389cefb040c241c3af268b4a9847ac86ca455c6fa59effd2925ad7\",\"dweb:/ipfs/QmdWwcDwXpREsx15mGqMmu9z64gqAbvaY1PN1j6mG578XR\"]},\"project:/contracts/utils/AddressArrayUtils.sol\":{\"keccak256\":\"0x4f05678830599afa325ec43ac007f6a17e66037a66d258cb46294bfcf4572dcd\",\"urls\":[\"bzz-raw://1704df5b46bb2868337bfaaf6472eba5466b60d1963495c0683cb4b062e1565f\",\"dweb:/ipfs/QmVVN4uF8dzGsGYAvtqJF3Ut8Ssfmx4LGGhksT1Gr3JV4i\"]},\"project:/contracts/utils/BytesLib.sol\":{\"keccak256\":\"0xad3f2453f490e1f74fcb3c278f82e26e75f074eaeaa023168c687d96f0b35b9d\",\"urls\":[\"bzz-raw://001f36244a08a9f306415c25b0812bd0a37389e878fbad3a682d59301d9da0c8\",\"dweb:/ipfs/QmXurBXY19xmJKL6ABDqwn6BKwuBgW2qxiM6V58EHB5s3s\"]},\"project:/contracts/utils/OperatorParams.sol\":{\"keccak256\":\"0xba9b216c249d6c30081b23ec0322104ce729b9c51adc8fd8c80a38dba09461b0\",\"urls\":[\"bzz-raw://a8602b066c13018255a685a77aa637eb91305d30f856a20efd3bd9d1dbcffed2\",\"dweb:/ipfs/QmRYxLLEgN5p2MLp29DGYFq3J3BYhV2RiZC2dahVgkcmfD\"]},\"project:/contracts/utils/PercentUtils.sol\":{\"keccak256\":\"0x696b15997a739e6c47c5bc29e1f9023998bb188405221a6b337377bca4ab3f68\",\"urls\":[\"bzz-raw://e93e2287fe6b6e1c5cc45ebc92b9d682e19a5b1302e00cb037391da753282bbf\",\"dweb:/ipfs/QmRXmEopRWNaL7mvY5nTyNNob3EPHF67R6Nxhm3F4VsDoo\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162005f6c38038062005f6c833981810160405260a08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426004819055505050505050615d9280620001da6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639557e0bb1161010f578063e064172e116100a2578063f165478311610071578063f165478314610d58578063fab46d6614610dbc578063fb1677b114610e22578063fdd1f98614610ea6576101e5565b8063e064172e14610c5c578063eae4c19f14610ca0578063ec5ffac214610cbe578063ef1f966114610cdc576101e5565b8063ba7bffd3116100de578063ba7bffd314610aac578063cbe945dc14610b30578063d98f233d14610bb4578063da8be86414610c18576101e5565b80639557e0bb1461095a578063a590ae36146109d2578063aed1ec7214610a16578063afff33ef14610a34576101e5565b80635139a6c511610187578063719f308911610156578063719f30891461065657806384d57689146107375780638e49aa7a146107935780638f4ffcb114610855576101e5565b80635139a6c514610528578063525835f9146105765780635fce5b17146105ba57806370a08231146105fe576101e5565b806320018d27116101c357806320018d27146103d657806321e1625e1461043a578063335e91a1146104885780634a1ce599146104e4576101e5565b806309055e90146101ea57806310a63ec0146102d657806314afd79e14610352575b600080fd5b6102d46004803603608081101561020057600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025157600080fd5b82018360208201111561026357600080fd5b8035906020019184602083028401116401000000008311171561028557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ec4565b005b610338600480360360408110156102ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611487565b604051808215151515815260200191505060405180910390f35b6103946004803603602081101561036857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610438600480360360408110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611511565b005b6104866004803603604081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116f3565b005b6104ca6004803603602081101561049e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119d5565b604051808215151515815260200191505060405180910390f35b610526600480360360208110156104fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ad3565b005b6105746004803603604081101561053e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bf0565b005b6105b86004803603602081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061209c565b005b6105fc600480360360208110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246a565b005b6106406004803603602081101561061457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125c8565b6040518082815260200191505060405180910390f35b6106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061261c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106df5780820151818401526020810190506106c4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610721578082015181840152602081019050610706565b5050505090500194505050505060405180910390f35b6107796004803603602081101561074d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612816565b604051808215151515815260200191505060405180910390f35b610853600480360360408110156107a957600080fd5b8101908080359060200190929190803590602001906401000000008111156107d057600080fd5b8201836020820111156107e257600080fd5b8035906020019184602083028401116401000000008311171561080457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612901565b005b6109586004803603608081101561086b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156108d257600080fd5b8201836020820111156108e457600080fd5b8035906020019184600183028401116401000000008311171561090657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612e38565b005b6109bc6004803603604081101561097057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613052565b6040518082815260200191505060405180910390f35b610a14600480360360208110156109e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130e1565b005b610a1e61330b565b6040518082815260200191505060405180910390f35b610a9660048036036040811015610a4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613311565b6040518082815260200191505060405180910390f35b610aee60048036036020811015610ac257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061339e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b7260048036036020811015610b4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061340a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c1660048036036040811015610bca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134bf565b005b610c5a60048036036020811015610c2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135c9565b005b610c9e60048036036020811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135d6565b005b610ca861396d565b6040518082815260200191505060405180910390f35b610cc6613973565b6040518082815260200191505060405180910390f35b610d3e60048036036040811015610cf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613987565b604051808215151515815260200191505060405180910390f35b610dba60048036036040811015610d6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a22565b005b610dfe60048036036020811015610dd257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c89565b60405180848152602001838152602001828152602001935050505060405180910390f35b610e6460048036036020811015610e3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ce6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610eae613d52565b6040518082815260200191505060405180910390f35b33610ece81612816565b610f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b600080610f4c3361340a565b905060008090505b8451811015611366576000858281518110610f6b57fe5b602002602001015190506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506110c081613d85565b611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b61113d828233613dad565b156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5374616b652069732072656c656173656400000000000000000000000000000081525060200191505060405180910390fd5b60006111bb82613ebe565b90508a811015611287576111d88187613ed890919063ffffffff16565b95506111ee600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d3826040518082815260200191505060405180910390a2611356565b61129a8b87613ed890919063ffffffff16565b95506112c16112b28c83613f8590919063ffffffff16565b83613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d38c6040518082815260200191505060405180910390a25b5050508080600101915050610f54565b50600061138f87611381600586613fcf90919063ffffffff16565b613fcf90919063ffffffff16565b90506113de8682600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613fff9092919063ffffffff16565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c6861142f8386613f8590919063ffffffff16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561146557600080fd5b505af1158015611479573d6000803e3d6000fd5b505050505050505050505050565b6000611491613973565b61149b8484613052565b1015905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f53c9cc0a3dd0a95beb5f7bf6f604aecacd38455e718ebce597fb058856166fef60405160405180910390a35050565b336116fd81612816565b61176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b6117798333613987565b6117eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061183b81613d85565b6118ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b6118b6816140d0565b15611929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e64656c65676174696e67207374616b65000000000000000000000000000081525060200191505060405180910390fd5b600a73__Locks_________________________________63f5d13cd0909186866040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060006040518083038186803b1580156119b757600080fd5b505af41580156119cb573d6000803e3d6000fd5b5050505050505050565b6000600a73__Locks_________________________________6361e15686909184306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611a9157600080fd5b505af4158015611aa5573d6000803e3d6000fd5b505050506040513d6020811015611abb57600080fd5b81019080805190602001909291905050509050919050565b611add8133613987565b611b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600a73__Locks_________________________________63075e89949091836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b158015611bd557600080fd5b505af4158015611be9573d6000803e3d6000fd5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cb75750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611dd55750600973__GrantStaking__________________________63283338ed909184600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d9957600080fd5b505af4158015611dad573d6000803e3d6000fd5b505050506040513d6020811015611dc357600080fd5b81019080805190602001909291905050505b611e47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050428210158015611eb95750611eb6600554611ea8836140f6565b613ed890919063ffffffff16565b82115b611f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c69642074696d657374616d7000000000000000000000000000000081525060200191505060405180910390fd5b6000611f368261410d565b90506000811480611f4657508281115b80611f7d57508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b611fef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f70657261746f72206d6179206e6f7420706f7374706f6e650000000000000081525060200191505060405180910390fd5b612002838361412090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508373ffffffffffffffffffffffffffffffffffffffff167f4ae68879209bc4b489a38251122202a3653305e3d95a27baf7a5681410c90b38846040518082815260200191505060405180910390a250505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060006120ee8261410d565b1415612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420756e64656c656761746564000000000000000000000000000000000081525060200191505060405180910390fd5b61216b81614145565b6121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5374696c6c20756e64656c65676174696e67000000000000000000000000000081525060200191505060405180910390fd5b6121e6826119d5565b15612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4c6f636b6564207374616b65000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061226482613ebe565b9050612339600b73__TopUps________________________________63b171f47b9091866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156122ef57600080fd5b505af4158015612303573d6000803e3d6000fd5b505050506040513d602081101561231957600080fd5b810190808051906020019092919050505082613ed890919063ffffffff16565b905061234f600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612402600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483614184565b7fd8d7d3f648c98e58aaabbb17253dc4a04c610cf9d36f0a42400015b56d74107283604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600b73__TopUps________________________________6360be99f8909183600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546005546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060206040518083038186803b15801561254457600080fd5b505af4158015612558573d6000803e3d6000fd5b505050506040513d602081101561256e57600080fd5b8101908080519060200190929190505050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b6000612615600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613ebe565b9050919050565b606080600a73__Locks_________________________________637b5e35e19091856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b1580156126a557600080fd5b505af41580156126b9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060408110156126e357600080fd5b810190808051604051939291908464010000000082111561270357600080fd5b8382019150602082018581111561271957600080fd5b825186602082028301116401000000008211171561273657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561276d578082015181840152602081019050612752565b505050509050016040526020018051604051939291908464010000000082111561279657600080fd5b838201915060208201858111156127ac57600080fd5b82518660208202830111640100000000821117156127c957600080fd5b8083526020830192505050908051906020019060200280838360005b838110156128005780820151818401526020810190506127e5565b5050505090500160405250505091509150915091565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384d5768961285f8461340a565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128bf57600080fd5b505afa1580156128d3573d6000803e3d6000fd5b505050506040513d60208110156128e957600080fd5b81019080805190602001909291905050509050919050565b3361290b81612816565b61297d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b6000806129893361340a565b905060008090505b8451811015612da35760008582815181106129a857fe5b602002602001015190506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612aad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050612afd81613d85565b612b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b612b7a828233613dad565b15612bed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5374616b652069732072656c656173656400000000000000000000000000000081525060200191505060405180910390fd5b6000612bf882613ebe565b905088811015612cc457612c158187613ed890919063ffffffff16565b9550612c2b600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c826040518082815260200191505060405180910390a2612d93565b612cd78987613ed890919063ffffffff16565b9550612cfe612cef8a83613f8590919063ffffffff16565b83613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c8a6040518082815260200191505060405180910390a25b5050508080600101915050612991565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612e1957600080fd5b505af1158015612e2d573d6000803e3d6000fd5b505050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612efb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e7265636f676e697a656420746f6b656e000000000000000000000000000081525060200191505060405180910390fd5b603c81511015612f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436f727275707465642064656c65676174696f6e20646174610000000000000081525060200191505060405180910390fd5b612fc2843085600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614505909392919063ffffffff16565b6000612fd860148361460b90919063ffffffff16565b90506000613027600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546140f6565b141561303e576130398585838561469e565b61304b565b61304a85858385614bd1565b5b5050505050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506130a48484613987565b80156130b557506130b481613d85565b5b80156130c957506130c7848285613dad565b155b156130da576130d781613ebe565b91505b5092915050565b806130eb81612816565b61315d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663d870c034336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b505050506040513d602081101561320657600080fd5b8101908080519060200190929190505050613289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f556e7265636f676e697a656420636c61696d616e74000000000000000000000081525060200191505060405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60055481565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506133638484613987565b8015613374575061337381613d85565b5b80156133865750613384816140d0565b155b156133975761339481613ebe565b91505b5092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134ad57829150506134ba565b6134b68161340a565b9150505b919050565b600a73__Locks_________________________________6318bc8f0190918484306040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060006040518083038186803b1580156135ad57600080fd5b505af41580156135c1573d6000803e3d6000fd5b505050505050565b6135d38142611bf0565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806136a257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806137c05750600973__GrantStaking__________________________63283338ed909184600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561378457600080fd5b505af4158015613798573d6000803e3d6000fd5b505050506040513d60208110156137ae57600080fd5b81019080805190602001909291905050505b613832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061388281613d85565b156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e697469616c697a6564207374616b6500000000000000000000000000000081525060200191505060405180910390fd5b600061390082613ebe565b9050613916600083613f6090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613967838583614184565b50505050565b60045481565b6000613982635ea79a7e615616565b905090565b60008060006139958461340a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b80613a2c81612816565b613a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16613abe84613ce6565b73ffffffffffffffffffffffffffffffffffffffff1614613b47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4e6f74206f70657261746f7220617574686f72697a657200000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16613b678361340a565b73ffffffffffffffffffffffffffffffffffffffff1614613bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f44656c65676174656420617574686f726974792075736564000000000000000081525060200191505060405180910390fd5b60016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000806000613cd9600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546156c1565b9250925092509193909250565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000613d6c624f1a00600454613ed890919063ffffffff16565b4210613d7b57624f1a00613d80565b621275005b905090565b6000613da4600554613d96846140f6565b613ed890919063ffffffff16565b42119050919050565b6000613db883614145565b8015613eb55750600a73__Locks_________________________________63d4224f9a909186856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015613e7957600080fd5b505af4158015613e8d573d6000803e3d6000fd5b505050506040513d6020811015613ea357600080fd5b81019080805190602001909291905050505b90509392505050565b60006001608060020a03604060020283901c169050919050565b600080828401905083811015613f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000613f7d82613f6f856140f6565b613f788661410d565b6156ee565b905092915050565b6000613fc783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615805565b905092915050565b6000613ff76064613fe984866158c590919063ffffffff16565b61594b90919063ffffffff16565b905092915050565b6140cb838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615995565b505050565b6000806140dc8361410d565b9050600081141580156140ee57508042115b915050919050565b60006001604060020a03604083901c169050919050565b60006001604060020a0382169050919050565b600061413d61412e84613ebe565b614137856140f6565b846156ee565b905092915050565b6000806141518361410d565b90506000811415801561417c575061417961416a613d52565b82613ed890919063ffffffff16565b42115b915050919050565b600973__GrantStaking__________________________63ae4ae2db9091846040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561420a57600080fd5b505af415801561421e573d6000803e3d6000fd5b505050506040513d602081101561423457600080fd5b8101908080519060200190929190505050156144b257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cae9ca51600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168385600973__GrantStaking__________________________63548756ca9091896040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561433357600080fd5b505af4158015614347573d6000803e3d6000fd5b505050506040513d602081101561435d57600080fd5b8101908080519060200190929190505050604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561444757808201518184015260208101905061442c565b50505050905090810190601f1680156144745780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561449557600080fd5b505af11580156144a9573d6000803e3d6000fd5b50505050614500565b6144ff8382600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613fff9092919063ffffffff16565b5b505050565b614605848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615995565b50505050565b6000806014830190508281118015614624575080845110155b614679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cf26021913960400191505060405180910390fd5b60006c0100000000000000000000000084602087010151049050809250505092915050565b6146a6613973565b83101561471b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4c657373207468616e20746865206d696e696d756d207374616b65000000000081525060200191505060405180910390fd5b600061473160008361460b90919063ffffffff16565b9050600061474960288461460b90919063ffffffff16565b90506040518060800160405280614762874260006156ee565b81526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600973__GrantStaking__________________________63adb3e4c59091600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a89896040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a5e578082015181840152602081019050614a43565b50505050905090810190601f168015614a8b5780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b158015614aac57600080fd5b505af4158015614ac0573d6000803e3d6000fd5b505050506040513d6040811015614ad657600080fd5b81019080805190602001909291908051906020019092919050505050508373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f83455714d30de40b1396056e44480074130d2ac0a2a7bd7cb1dfcd6d619e172460405160405180910390a38073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f175a298cbf37645403c82164f78783abb2869a97657c362fe979817d3184cc51886040518082815260200191505060405180910390a4505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632496bfb3856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614c8957600080fd5b505afa158015614c9d573d6000803e3d6000fd5b505050506040513d6020811015614cb357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161480614d3357508473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b9050600973__GrantStaking__________________________63ae4ae2db9091856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614dbb57600080fd5b505af4158015614dcf573d6000803e3d6000fd5b505050506040513d6020811015614de557600080fd5b8101908080519060200190929190505050156151cb5780614e6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d7573742062652066726f6d2061206772616e7400000000000000000000000081525060200191505060405180910390fd5b6000600973__GrantStaking__________________________63548756ca9091866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614ef657600080fd5b505af4158015614f0a573d6000803e3d6000fd5b505050506040513d6020811015614f2057600080fd5b810190808051906020019092919050505090506000600973__GrantStaking__________________________63adb3e4c59091600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8a8a6040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156150b957808201518184015260208101905061509e565b50505050905090810190601f1680156150e65780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b15801561510757600080fd5b505af415801561511b573d6000803e3d6000fd5b505050506040513d604081101561513157600080fd5b8101908080519060200190929190805190602001909291905050509150508181146151c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f74207468652073616d65206772616e74000000000000000000000000000081525060200191505060405180910390fd5b5050615343565b801561523f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4d757374206e6f742062652066726f6d2061206772616e74000000000000000081525060200191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f74207468652073616d65206f776e6572000000000000000000000000000081525060200191505060405180910390fd5b5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061539381613d85565b61550957600b73__TopUps________________________________63fea2b7189091878785600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060206040518083038186803b15801561548357600080fd5b505af4158015615497573d6000803e3d6000fd5b505050506040513d60208110156154ad57600080fd5b8101908080519060200190929190505050600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061560e565b600b73__TopUps________________________________63fd9a58f29091878785600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060006040518083038186803b1580156155f557600080fd5b505af4158015615609573d6000803e3d6000fd5b505050505b505050505050565b600061562f6303c2670083613ed890919063ffffffff16565b4210156156ae5760006156746303c267006156666156568642613f8590919063ffffffff16565b600a6158c590919063ffffffff16565b61594b90919063ffffffff16565b90506156a661568d82600a613f8590919063ffffffff16565b69021e19e0c9bab24000006158c590919063ffffffff16565b9150506156bc565b69021e19e0c9bab240000090505b919050565b60008060006156cf84613ebe565b92506156da846140f6565b91506156e58461410d565b90509193909250565b60006001608060020a0384111561576d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f75696e74313238206f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6001604060020a0382841711156157ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f75696e743634206f766572666c6f77000000000000000000000000000000000081525060200191505060405180910390fd5b81604084901b604060020286901b171790509392505050565b60008383111582906158b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561587757808201518184015260208101905061585c565b50505050905090810190601f1680156158a45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808314156158d85760009050615945565b60008284029050828482816158e957fe5b0414615940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615d136021913960400191505060405180910390fd5b809150505b92915050565b600061598d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615be0565b905092915050565b6159b48273ffffffffffffffffffffffffffffffffffffffff16615ca6565b615a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310615a755780518252602082019150602081019050602083039250615a52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615ad7576040519150601f19603f3d011682016040523d82523d6000602084013e615adc565b606091505b509150915081615b54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115615bda57808060200190516020811015615b7357600080fd5b8101908080519060200190929190505050615bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615d34602a913960400191505060405180910390fd5b5b50505050565b60008083118290615c8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615c51578082015181840152602081019050615c36565b50505050905090810190601f168015615c7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615c9857fe5b049050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015615ce85750808214155b9250505091905056fe4164647265737320636f6e76657273696f6e206f7574206f6620626f756e64732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a53415a466c1329c0dce2f58f65f6948e1ec4a6c1c647d3a33615b313bd8757a64736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639557e0bb1161010f578063e064172e116100a2578063f165478311610071578063f165478314610d58578063fab46d6614610dbc578063fb1677b114610e22578063fdd1f98614610ea6576101e5565b8063e064172e14610c5c578063eae4c19f14610ca0578063ec5ffac214610cbe578063ef1f966114610cdc576101e5565b8063ba7bffd3116100de578063ba7bffd314610aac578063cbe945dc14610b30578063d98f233d14610bb4578063da8be86414610c18576101e5565b80639557e0bb1461095a578063a590ae36146109d2578063aed1ec7214610a16578063afff33ef14610a34576101e5565b80635139a6c511610187578063719f308911610156578063719f30891461065657806384d57689146107375780638e49aa7a146107935780638f4ffcb114610855576101e5565b80635139a6c514610528578063525835f9146105765780635fce5b17146105ba57806370a08231146105fe576101e5565b806320018d27116101c357806320018d27146103d657806321e1625e1461043a578063335e91a1146104885780634a1ce599146104e4576101e5565b806309055e90146101ea57806310a63ec0146102d657806314afd79e14610352575b600080fd5b6102d46004803603608081101561020057600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025157600080fd5b82018360208201111561026357600080fd5b8035906020019184602083028401116401000000008311171561028557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ec4565b005b610338600480360360408110156102ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611487565b604051808215151515815260200191505060405180910390f35b6103946004803603602081101561036857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610438600480360360408110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611511565b005b6104866004803603604081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116f3565b005b6104ca6004803603602081101561049e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119d5565b604051808215151515815260200191505060405180910390f35b610526600480360360208110156104fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ad3565b005b6105746004803603604081101561053e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bf0565b005b6105b86004803603602081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061209c565b005b6105fc600480360360208110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246a565b005b6106406004803603602081101561061457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125c8565b6040518082815260200191505060405180910390f35b6106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061261c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106df5780820151818401526020810190506106c4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610721578082015181840152602081019050610706565b5050505090500194505050505060405180910390f35b6107796004803603602081101561074d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612816565b604051808215151515815260200191505060405180910390f35b610853600480360360408110156107a957600080fd5b8101908080359060200190929190803590602001906401000000008111156107d057600080fd5b8201836020820111156107e257600080fd5b8035906020019184602083028401116401000000008311171561080457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612901565b005b6109586004803603608081101561086b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156108d257600080fd5b8201836020820111156108e457600080fd5b8035906020019184600183028401116401000000008311171561090657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612e38565b005b6109bc6004803603604081101561097057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613052565b6040518082815260200191505060405180910390f35b610a14600480360360208110156109e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130e1565b005b610a1e61330b565b6040518082815260200191505060405180910390f35b610a9660048036036040811015610a4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613311565b6040518082815260200191505060405180910390f35b610aee60048036036020811015610ac257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061339e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b7260048036036020811015610b4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061340a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c1660048036036040811015610bca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134bf565b005b610c5a60048036036020811015610c2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135c9565b005b610c9e60048036036020811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135d6565b005b610ca861396d565b6040518082815260200191505060405180910390f35b610cc6613973565b6040518082815260200191505060405180910390f35b610d3e60048036036040811015610cf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613987565b604051808215151515815260200191505060405180910390f35b610dba60048036036040811015610d6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a22565b005b610dfe60048036036020811015610dd257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c89565b60405180848152602001838152602001828152602001935050505060405180910390f35b610e6460048036036020811015610e3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ce6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610eae613d52565b6040518082815260200191505060405180910390f35b33610ece81612816565b610f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b600080610f4c3361340a565b905060008090505b8451811015611366576000858281518110610f6b57fe5b602002602001015190506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506110c081613d85565b611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b61113d828233613dad565b156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5374616b652069732072656c656173656400000000000000000000000000000081525060200191505060405180910390fd5b60006111bb82613ebe565b90508a811015611287576111d88187613ed890919063ffffffff16565b95506111ee600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d3826040518082815260200191505060405180910390a2611356565b61129a8b87613ed890919063ffffffff16565b95506112c16112b28c83613f8590919063ffffffff16565b83613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d38c6040518082815260200191505060405180910390a25b5050508080600101915050610f54565b50600061138f87611381600586613fcf90919063ffffffff16565b613fcf90919063ffffffff16565b90506113de8682600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613fff9092919063ffffffff16565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c6861142f8386613f8590919063ffffffff16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561146557600080fd5b505af1158015611479573d6000803e3d6000fd5b505050505050505050505050565b6000611491613973565b61149b8484613052565b1015905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f53c9cc0a3dd0a95beb5f7bf6f604aecacd38455e718ebce597fb058856166fef60405160405180910390a35050565b336116fd81612816565b61176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b6117798333613987565b6117eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061183b81613d85565b6118ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b6118b6816140d0565b15611929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e64656c65676174696e67207374616b65000000000000000000000000000081525060200191505060405180910390fd5b600a73__Locks_________________________________63f5d13cd0909186866040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060006040518083038186803b1580156119b757600080fd5b505af41580156119cb573d6000803e3d6000fd5b5050505050505050565b6000600a73__Locks_________________________________6361e15686909184306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611a9157600080fd5b505af4158015611aa5573d6000803e3d6000fd5b505050506040513d6020811015611abb57600080fd5b81019080805190602001909291905050509050919050565b611add8133613987565b611b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600a73__Locks_________________________________63075e89949091836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b158015611bd557600080fd5b505af4158015611be9573d6000803e3d6000fd5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cb75750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611dd55750600973__GrantStaking__________________________63283338ed909184600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d9957600080fd5b505af4158015611dad573d6000803e3d6000fd5b505050506040513d6020811015611dc357600080fd5b81019080805190602001909291905050505b611e47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050428210158015611eb95750611eb6600554611ea8836140f6565b613ed890919063ffffffff16565b82115b611f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c69642074696d657374616d7000000000000000000000000000000081525060200191505060405180910390fd5b6000611f368261410d565b90506000811480611f4657508281115b80611f7d57508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b611fef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f70657261746f72206d6179206e6f7420706f7374706f6e650000000000000081525060200191505060405180910390fd5b612002838361412090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508373ffffffffffffffffffffffffffffffffffffffff167f4ae68879209bc4b489a38251122202a3653305e3d95a27baf7a5681410c90b38846040518082815260200191505060405180910390a250505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060006120ee8261410d565b1415612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420756e64656c656761746564000000000000000000000000000000000081525060200191505060405180910390fd5b61216b81614145565b6121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5374696c6c20756e64656c65676174696e67000000000000000000000000000081525060200191505060405180910390fd5b6121e6826119d5565b15612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4c6f636b6564207374616b65000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061226482613ebe565b9050612339600b73__TopUps________________________________63b171f47b9091866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156122ef57600080fd5b505af4158015612303573d6000803e3d6000fd5b505050506040513d602081101561231957600080fd5b810190808051906020019092919050505082613ed890919063ffffffff16565b905061234f600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612402600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483614184565b7fd8d7d3f648c98e58aaabbb17253dc4a04c610cf9d36f0a42400015b56d74107283604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600b73__TopUps________________________________6360be99f8909183600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546005546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060206040518083038186803b15801561254457600080fd5b505af4158015612558573d6000803e3d6000fd5b505050506040513d602081101561256e57600080fd5b8101908080519060200190929190505050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b6000612615600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613ebe565b9050919050565b606080600a73__Locks_________________________________637b5e35e19091856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b1580156126a557600080fd5b505af41580156126b9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060408110156126e357600080fd5b810190808051604051939291908464010000000082111561270357600080fd5b8382019150602082018581111561271957600080fd5b825186602082028301116401000000008211171561273657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561276d578082015181840152602081019050612752565b505050509050016040526020018051604051939291908464010000000082111561279657600080fd5b838201915060208201858111156127ac57600080fd5b82518660208202830111640100000000821117156127c957600080fd5b8083526020830192505050908051906020019060200280838360005b838110156128005780820151818401526020810190506127e5565b5050505090500160405250505091509150915091565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384d5768961285f8461340a565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128bf57600080fd5b505afa1580156128d3573d6000803e3d6000fd5b505050506040513d60208110156128e957600080fd5b81019080805190602001909291905050509050919050565b3361290b81612816565b61297d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b6000806129893361340a565b905060008090505b8451811015612da35760008582815181106129a857fe5b602002602001015190506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612aad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050612afd81613d85565b612b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b612b7a828233613dad565b15612bed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5374616b652069732072656c656173656400000000000000000000000000000081525060200191505060405180910390fd5b6000612bf882613ebe565b905088811015612cc457612c158187613ed890919063ffffffff16565b9550612c2b600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c826040518082815260200191505060405180910390a2612d93565b612cd78987613ed890919063ffffffff16565b9550612cfe612cef8a83613f8590919063ffffffff16565b83613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c8a6040518082815260200191505060405180910390a25b5050508080600101915050612991565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612e1957600080fd5b505af1158015612e2d573d6000803e3d6000fd5b505050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612efb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e7265636f676e697a656420746f6b656e000000000000000000000000000081525060200191505060405180910390fd5b603c81511015612f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436f727275707465642064656c65676174696f6e20646174610000000000000081525060200191505060405180910390fd5b612fc2843085600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614505909392919063ffffffff16565b6000612fd860148361460b90919063ffffffff16565b90506000613027600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546140f6565b141561303e576130398585838561469e565b61304b565b61304a85858385614bd1565b5b5050505050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506130a48484613987565b80156130b557506130b481613d85565b5b80156130c957506130c7848285613dad565b155b156130da576130d781613ebe565b91505b5092915050565b806130eb81612816565b61315d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663d870c034336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b505050506040513d602081101561320657600080fd5b8101908080519060200190929190505050613289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f556e7265636f676e697a656420636c61696d616e74000000000000000000000081525060200191505060405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60055481565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506133638484613987565b8015613374575061337381613d85565b5b80156133865750613384816140d0565b155b156133975761339481613ebe565b91505b5092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134ad57829150506134ba565b6134b68161340a565b9150505b919050565b600a73__Locks_________________________________6318bc8f0190918484306040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060006040518083038186803b1580156135ad57600080fd5b505af41580156135c1573d6000803e3d6000fd5b505050505050565b6135d38142611bf0565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806136a257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806137c05750600973__GrantStaking__________________________63283338ed909184600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561378457600080fd5b505af4158015613798573d6000803e3d6000fd5b505050506040513d60208110156137ae57600080fd5b81019080805190602001909291905050505b613832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061388281613d85565b156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e697469616c697a6564207374616b6500000000000000000000000000000081525060200191505060405180910390fd5b600061390082613ebe565b9050613916600083613f6090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613967838583614184565b50505050565b60045481565b6000613982635ea79a7e615616565b905090565b60008060006139958461340a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b80613a2c81612816565b613a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16613abe84613ce6565b73ffffffffffffffffffffffffffffffffffffffff1614613b47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4e6f74206f70657261746f7220617574686f72697a657200000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16613b678361340a565b73ffffffffffffffffffffffffffffffffffffffff1614613bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f44656c65676174656420617574686f726974792075736564000000000000000081525060200191505060405180910390fd5b60016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000806000613cd9600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546156c1565b9250925092509193909250565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000613d6c624f1a00600454613ed890919063ffffffff16565b4210613d7b57624f1a00613d80565b621275005b905090565b6000613da4600554613d96846140f6565b613ed890919063ffffffff16565b42119050919050565b6000613db883614145565b8015613eb55750600a73__Locks_________________________________63d4224f9a909186856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015613e7957600080fd5b505af4158015613e8d573d6000803e3d6000fd5b505050506040513d6020811015613ea357600080fd5b81019080805190602001909291905050505b90509392505050565b60006001608060020a03604060020283901c169050919050565b600080828401905083811015613f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000613f7d82613f6f856140f6565b613f788661410d565b6156ee565b905092915050565b6000613fc783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615805565b905092915050565b6000613ff76064613fe984866158c590919063ffffffff16565b61594b90919063ffffffff16565b905092915050565b6140cb838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615995565b505050565b6000806140dc8361410d565b9050600081141580156140ee57508042115b915050919050565b60006001604060020a03604083901c169050919050565b60006001604060020a0382169050919050565b600061413d61412e84613ebe565b614137856140f6565b846156ee565b905092915050565b6000806141518361410d565b90506000811415801561417c575061417961416a613d52565b82613ed890919063ffffffff16565b42115b915050919050565b600973__GrantStaking__________________________63ae4ae2db9091846040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561420a57600080fd5b505af415801561421e573d6000803e3d6000fd5b505050506040513d602081101561423457600080fd5b8101908080519060200190929190505050156144b257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cae9ca51600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168385600973__GrantStaking__________________________63548756ca9091896040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561433357600080fd5b505af4158015614347573d6000803e3d6000fd5b505050506040513d602081101561435d57600080fd5b8101908080519060200190929190505050604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561444757808201518184015260208101905061442c565b50505050905090810190601f1680156144745780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561449557600080fd5b505af11580156144a9573d6000803e3d6000fd5b50505050614500565b6144ff8382600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613fff9092919063ffffffff16565b5b505050565b614605848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615995565b50505050565b6000806014830190508281118015614624575080845110155b614679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cf26021913960400191505060405180910390fd5b60006c0100000000000000000000000084602087010151049050809250505092915050565b6146a6613973565b83101561471b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4c657373207468616e20746865206d696e696d756d207374616b65000000000081525060200191505060405180910390fd5b600061473160008361460b90919063ffffffff16565b9050600061474960288461460b90919063ffffffff16565b90506040518060800160405280614762874260006156ee565b81526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600973__GrantStaking__________________________63adb3e4c59091600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a89896040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a5e578082015181840152602081019050614a43565b50505050905090810190601f168015614a8b5780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b158015614aac57600080fd5b505af4158015614ac0573d6000803e3d6000fd5b505050506040513d6040811015614ad657600080fd5b81019080805190602001909291908051906020019092919050505050508373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f83455714d30de40b1396056e44480074130d2ac0a2a7bd7cb1dfcd6d619e172460405160405180910390a38073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f175a298cbf37645403c82164f78783abb2869a97657c362fe979817d3184cc51886040518082815260200191505060405180910390a4505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632496bfb3856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614c8957600080fd5b505afa158015614c9d573d6000803e3d6000fd5b505050506040513d6020811015614cb357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161480614d3357508473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b9050600973__GrantStaking__________________________63ae4ae2db9091856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614dbb57600080fd5b505af4158015614dcf573d6000803e3d6000fd5b505050506040513d6020811015614de557600080fd5b8101908080519060200190929190505050156151cb5780614e6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d7573742062652066726f6d2061206772616e7400000000000000000000000081525060200191505060405180910390fd5b6000600973__GrantStaking__________________________63548756ca9091866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614ef657600080fd5b505af4158015614f0a573d6000803e3d6000fd5b505050506040513d6020811015614f2057600080fd5b810190808051906020019092919050505090506000600973__GrantStaking__________________________63adb3e4c59091600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8a8a6040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156150b957808201518184015260208101905061509e565b50505050905090810190601f1680156150e65780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b15801561510757600080fd5b505af415801561511b573d6000803e3d6000fd5b505050506040513d604081101561513157600080fd5b8101908080519060200190929190805190602001909291905050509150508181146151c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f74207468652073616d65206772616e74000000000000000000000000000081525060200191505060405180910390fd5b5050615343565b801561523f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4d757374206e6f742062652066726f6d2061206772616e74000000000000000081525060200191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f74207468652073616d65206f776e6572000000000000000000000000000081525060200191505060405180910390fd5b5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061539381613d85565b61550957600b73__TopUps________________________________63fea2b7189091878785600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060206040518083038186803b15801561548357600080fd5b505af4158015615497573d6000803e3d6000fd5b505050506040513d60208110156154ad57600080fd5b8101908080519060200190929190505050600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061560e565b600b73__TopUps________________________________63fd9a58f29091878785600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060006040518083038186803b1580156155f557600080fd5b505af4158015615609573d6000803e3d6000fd5b505050505b505050505050565b600061562f6303c2670083613ed890919063ffffffff16565b4210156156ae5760006156746303c267006156666156568642613f8590919063ffffffff16565b600a6158c590919063ffffffff16565b61594b90919063ffffffff16565b90506156a661568d82600a613f8590919063ffffffff16565b69021e19e0c9bab24000006158c590919063ffffffff16565b9150506156bc565b69021e19e0c9bab240000090505b919050565b60008060006156cf84613ebe565b92506156da846140f6565b91506156e58461410d565b90509193909250565b60006001608060020a0384111561576d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f75696e74313238206f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6001604060020a0382841711156157ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f75696e743634206f766572666c6f77000000000000000000000000000000000081525060200191505060405180910390fd5b81604084901b604060020286901b171790509392505050565b60008383111582906158b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561587757808201518184015260208101905061585c565b50505050905090810190601f1680156158a45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808314156158d85760009050615945565b60008284029050828482816158e957fe5b0414615940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615d136021913960400191505060405180910390fd5b809150505b92915050565b600061598d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615be0565b905092915050565b6159b48273ffffffffffffffffffffffffffffffffffffffff16615ca6565b615a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310615a755780518252602082019150602081019050602083039250615a52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615ad7576040519150601f19603f3d011682016040523d82523d6000602084013e615adc565b606091505b509150915081615b54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115615bda57808060200190516020811015615b7357600080fd5b8101908080519060200190929190505050615bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615d34602a913960400191505060405180910390fd5b5b50505050565b60008083118290615c8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615c51578082015181840152602081019050615c36565b50505050905090810190601f168015615c7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615c9857fe5b049050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015615ce85750808214155b9250505091905056fe4164647265737320636f6e76657273696f6e206f7574206f6620626f756e64732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a53415a466c1329c0dce2f58f65f6948e1ec4a6c1c647d3a33615b313bd8757a64736f6c63430005110032", + "sourceMap": "2690:30370:39:-;;;5191:433;8:9:-1;5:2;;;30:1;27;20:12;5:2;5191:433:39;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5191:433:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:9;4296::15;4285:8;;:20;;;;;;;;;;;;;;;;;;4232:80;5429:6:39;5421:5;;:14;;;;;;;;;;;;;;;;;;5458:11;5445:10;;:24;;;;;;;;;;;;;;;;;;5488:7;5479:6;;:16;;;;;;;;;;;;;;;;;;5516:9;5505:8;;:20;;;;;;;;;;;;;;;;;;5558:21;5535:20;:44;;;;5602:15;5589:10;:28;;;;5191:433;;;;;2690:30370;;;;;;", + "deployedSourceMap": "2690:30370:39:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2690:30370:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19725:1738;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19725:1738:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;19725:1738:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19725:1738:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;19725:1738:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19725:1738:39;;;;;;;;;;;;;;;:::i;:::-;;25574:201;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25574:201:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2744:116:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2744:116:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21708:264:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21708:264:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14689:501;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14689:501:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16779:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16779:136:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15830:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15830:206:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;11163:1494;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11163:1494:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12880:762;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12880:762:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;9257:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9257:227:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;2485:143:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2485:143:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17179:190:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17179:190:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17179:190:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17179:190:39;;;;;;;;;;;;;;;;;;;7252:258:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7252:258:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17675:1490:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17675:1490:39;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17675:1490:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17675:1490:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17675:1490:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;17675:1490:39;;;;;;;;;;;;;;;:::i;:::-;;8060:948;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8060:948:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8060:948:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8060:948:39;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8060:948:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8060:948:39;;;;;;;;;;;;;;;:::i;:::-;;24451:484;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24451:484:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6442:402:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6442:402:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;4044:35:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22578:870;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22578:870:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2976:164:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2976:164:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7925:362:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7925:362:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16437:175:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16437:175:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10658:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10658:103:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;9793:629;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9793:629:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;4013:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5971:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5674:216:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5674:216:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4954:482;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4954:482:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14042:265:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14042:265:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3254:126:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3254:126:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6513:162:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19725:1738;19921:10;4110:44:15;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19943:25:39;19978:23;20004:30;20023:10;20004:18;:30::i;:::-;19978:56;;20049:9;20061:1;20049:13;;20044:1187;20068:19;:26;20064:1;:30;20044:1187;;;20115:16;20134:19;20154:1;20134:22;;;;;;;;;;;;;;20115:41;;20195:14;:31;20210:15;20195:31;;;;;;;;;;;;;;;:41;20227:8;20195:41;;;;;;;;;;;;;;;;;;;;;;;;;20170:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20299:22;20324:9;:19;20334:8;20324:19;;;;;;;;;;;;;;;:32;;;20299:57;;20378:30;20393:14;20378;:30::i;:::-;20370:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20468:54;20485:8;20495:14;20511:10;20468:16;:54::i;:::-;20467:55;20442:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20588:21;20612:26;:14;:24;:26::i;:::-;20588:50;;20673:13;20657;:29;20653:568;;;20726:36;20748:13;20726:17;:21;;:36;;;;:::i;:::-;20706:56;;20815:27;20840:1;20815:14;:24;;:27;;;;:::i;:::-;20780:9;:19;20790:8;20780:19;;;;;;;;;;;;;;;:32;;:62;;;;20878:8;20865:37;;;20888:13;20865:37;;;;;;;;;;;;;;;;;;20653:568;;;20961:36;20983:13;20961:17;:21;;:36;;;;:::i;:::-;20941:56;;21050:96;21096:32;21114:13;21096;:17;;:32;;;;:::i;:::-;21050:14;:24;;:96;;;;:::i;:::-;21015:9;:19;21025:8;21015:19;;;;;;;;;;;;;;;:32;;:131;;;;21182:8;21169:37;;;21192:13;21169:37;;;;;;;;;;;;;;;;;;20653:568;20044:1187;;;20096:3;;;;;;;20044:1187;;;;21241:24;21280:56;21319:16;21281:28;21307:1;21281:17;:25;;:28;;;;:::i;:::-;21280:38;;:56;;;;:::i;:::-;21241:95;;21347:48;21366:10;21378:16;21347:5;;;;;;;;;;;:18;;;;:48;;;;;:::i;:::-;21405:5;;;;;;;;;;;:10;;;21416:39;21438:16;21416:17;:21;;:39;;;;:::i;:::-;21405:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21405:51:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21405:51:39;;;;4218:1:15;;;19725:1738:39;;;;;:::o;25574:201::-;25686:4;25754:14;:12;:14::i;:::-;25713:37;25725:6;25733:16;25713:11;:37::i;:::-;:55;;25706:62;;25574:201;;;;:::o;2744:116:34:-;2801:7;2827:9;:20;2837:9;2827:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;2820:33;;2744:116;;;:::o;21708:264:39:-;21815:9;:19;21825:8;21815:19;;;;;;;;;;;;;;;:25;;;;;;;;;;;;21801:39;;:10;:39;;;21793:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21897:8;21869:9;:19;21879:8;21869:19;;;;;;;;;;;;;;;:25;;;:36;;;;;;;;;;;;;;;;;;21956:8;21920:45;;21946:8;21920:45;;;;;;;;;;;;21708:264;;:::o;14689:501::-;14796:10;4110:44:15;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14843:45:39;14867:8;14877:10;14843:23;:45::i;:::-;14822:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14939:22;14964:9;:19;14974:8;14964:19;;;;;;;;;;;;;;;:32;;;14939:57;;15015:30;15030:14;15015;:30::i;:::-;15007:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15083:31;15099:14;15083:15;:31::i;:::-;15082:32;15074:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15148:5;:15;;;;15164:8;15174;15148:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15148:35:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15148:35:39;;;;4218:1:15;14689:501:39;;;:::o;16779:136::-;16841:4;16864:5;:19;;;;16884:8;16902:4;16864:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16864:44:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16864:44:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16864:44:39;;;;;;;;;;;;;;;;16857:51;;16779:136;;;:::o;15830:206::-;15907:45;15931:8;15941:10;15907:23;:45::i;:::-;15886:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16002:5;:17;;;;16020:8;16002:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16002:27:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16002:27:39;;;;15830:206;:::o;11163:1494::-;11300:9;11286:23;;:10;:23;;;:83;;;;11343:9;:20;11353:9;11343:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;11329:40;;:10;:40;;;11286:83;:152;;;;11389:12;:26;;;;11416:9;11427:10;;;;;;;;;;;11389:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11389:49:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11389:49:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11389:49:39;;;;;;;;;;;;;;;;11286:152;11265:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11488:17;11508:9;:20;11518:9;11508:20;;;;;;;;;;;;;;;:33;;;11488:53;;11598:15;11572:22;:41;;:160;;;;;11674:58;11711:20;;11674:32;:9;:30;:32::i;:::-;:36;;:58;;;;:::i;:::-;11633:22;:99;11572:160;11551:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11785:37;11837:36;:9;:34;:36::i;:::-;11785:88;;11984:1;11951:29;:34;:175;;;;12104:22;12072:29;:54;11951:175;:461;;;;12403:9;12389:23;;:10;:23;;;;11951:461;11883:580;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12509:80;12557:22;12509:9;:34;;:80;;;;:::i;:::-;12473:9;:20;12483:9;12473:20;;;;;;;;;;;;;;;:33;;:116;;;;12616:9;12604:46;;;12627:22;12604:46;;;;;;;;;;;;;;;;;;11163:1494;;;;:::o;12880:762::-;12938:22;12963:9;:20;12973:9;12963:20;;;;;;;;;;;;;;;:33;;;12938:58;;13072:1;13027:41;:14;:39;:41::i;:::-;:46;;13006:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13132:39;13156:14;13132:23;:39::i;:::-;13124:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13213:24;13227:9;13213:13;:24::i;:::-;13212:25;13204:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13265:14;13282:26;:14;:24;:26::i;:::-;13265:43;;13410:36;13421:6;:13;;;;13435:9;13421:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13421:24:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13421:24:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13421:24:39;;;;;;;;;;;;;;;;13410:6;:10;;:36;;;;:::i;:::-;13401:45;;13493:27;13518:1;13493:14;:24;;:27;;;;:::i;:::-;13457:9;:20;13467:9;13457:20;;;;;;;;;;;;;;;:33;;:63;;;;13530:64;13548:9;:20;13558:9;13548:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;13576:9;13587:6;13530:17;:64::i;:::-;13610:25;13625:9;13610:25;;;;;;;;;;;;;;;;;;;;;;12880:762;;;:::o;9257:227::-;9350:6;:13;;;;9377:9;9400;:20;9410:9;9400:20;;;;;;;;;;;;;;;:33;;;9447:20;;9350:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9350:127:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9350:127:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9350:127:39;;;;;;;;;;;;;;;;9314:9;:20;9324:9;9314:20;;;;;;;;;;;;;;;:33;;:163;;;;9257:227;:::o;2485:143:34:-;2543:15;2577:44;:9;:19;2587:8;2577:19;;;;;;;;;;;;;;;:32;;;:42;:44::i;:::-;2570:51;;2485:143;;;:::o;17179:190:39:-;17260:25;17287:28;17338:5;:14;;;;17353:8;17338:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17338:24:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17338:24:39;;;;;;39:16:-1;36:1;17:17;2:54;17338:24:39;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17338:24:39;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17338:24:39;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17338:24:39;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17338:24:39;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17338:24:39;;;;;;;;;;;17331:31;;;;17179:190;;;:::o;7252:258:15:-;7360:4;7399:8;;;;;;;;;;;:35;;;7452:37;7471:17;7452:18;:37::i;:::-;7399:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7399:104:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7399:104:15;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7399:104:15;;;;;;;;;;;;;;;;7380:123;;7252:258;;;:::o;17675:1490:39:-;17803:10;4110:44:15;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17829:25:39;17864:23;17890:30;17909:10;17890:18;:30::i;:::-;17864:56;;17935:9;17947:1;17935:13;;17930:1189;17954:19;:26;17950:1;:30;17930:1189;;;18001:16;18020:19;18040:1;18020:22;;;;;;;;;;;;;;18001:41;;18081:14;:31;18096:15;18081:31;;;;;;;;;;;;;;;:41;18113:8;18081:41;;;;;;;;;;;;;;;;;;;;;;;;;18056:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18185:22;18210:9;:19;18220:8;18210:19;;;;;;;;;;;;;;;:32;;;18185:57;;18264:30;18279:14;18264;:30::i;:::-;18256:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18354:54;18371:8;18381:14;18397:10;18354:16;:54::i;:::-;18353:55;18328:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18474:21;18498:26;:14;:24;:26::i;:::-;18474:50;;18559:13;18543;:29;18539:570;;;18612:36;18634:13;18612:17;:21;;:36;;;;:::i;:::-;18592:56;;18701:27;18726:1;18701:14;:24;;:27;;;;:::i;:::-;18666:9;:19;18676:8;18666:19;;;;;;;;;;;;;;;:32;;:62;;;;18765:8;18751:38;;;18775:13;18751:38;;;;;;;;;;;;;;;;;;18539:570;;;18848:36;18870:13;18848:17;:21;;:36;;;;:::i;:::-;18828:56;;18937:96;18983:32;19001:13;18983;:17;;:32;;;;:::i;:::-;18937:14;:24;;:96;;;;:::i;:::-;18902:9;:19;18912:8;18902:19;;;;;;;;;;;;;;;:32;;:131;;;;19070:8;19056:38;;;19080:13;19056:38;;;;;;;;;;;;;;;;;;18539:570;17930:1189;;;17982:3;;;;;;;17930:1189;;;;19129:5;;;;;;;;;;;:10;;;19140:17;19129:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19129:29:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19129:29:39;;;;4218:1:15;;17675:1490:39;;;:::o;8060:948::-;8245:5;;;;;;;;;;;8220:30;;8234:6;8220:30;;;8212:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8312:2;8291:10;:17;:23;;8283:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8400:52;8423:5;8438:4;8445:6;8400:5;;;;;;;;;;;:22;;;;:52;;;;;;:::i;:::-;8463:16;8482:24;8503:2;8482:10;:20;;:24;;;;:::i;:::-;8463:43;;8650:1;8591:55;:9;:19;8601:8;8591:19;;;;;;;;;;;;;;;:32;;;:53;:55::i;:::-;:60;8587:415;;;8804:45;8813:5;8820:6;8828:8;8838:10;8804:8;:45::i;:::-;8587:415;;;8949:42;8955:5;8962:6;8970:8;8980:10;8949:5;:42::i;:::-;8587:415;8060:948;;;;;:::o;24451:484::-;24563:15;24594:22;24619:9;:20;24629:9;24619:20;;;;;;;;;;;;;;;:33;;;24594:58;;24679:53;24703:9;24714:17;24679:23;:53::i;:::-;:99;;;;;24748:30;24763:14;24748;:30::i;:::-;24679:99;:178;;;;;24795:62;24812:9;24823:14;24839:17;24795:16;:62::i;:::-;24794:63;24679:178;24662:267;;;24892:26;:14;:24;:26::i;:::-;24882:36;;24662:267;24451:484;;;;;:::o;6442:402:15:-;6561:24;4110:44;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6641:24;6622:59;;;6699:10;6622:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6622:101:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6622:101:15;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6622:101:15;;;;;;;;;;;;;;;;6601:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6813:24;6780:18;:30;6799:10;6780:30;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;6442:402;;:::o;4044:35:39:-;;;;:::o;22578:870::-;22692:15;22723:22;22748:9;:20;22758:9;22748:20;;;;;;;;;;;;;;;:33;;;22723:58;;23223:53;23247:9;23258:17;23223:23;:53::i;:::-;:99;;;;;23292:30;23307:14;23292;:30::i;:::-;23223:99;:147;;;;;23339:31;23355:14;23339:15;:31::i;:::-;23338:32;23223:147;23206:236;;;23405:26;:14;:24;:26::i;:::-;23395:36;;23206:236;22578:870;;;;;:::o;2976:164:34:-;3063:15;3101:9;:20;3111:9;3101:20;;;;;;;;;;;;;;;:32;;;;;;;;;;;;3094:39;;2976:164;;;:::o;7925:362:15:-;8024:7;8047:32;8082:18;:36;8101:16;8082:36;;;;;;;;;;;;;;;;;;;;;;;;;8047:71;;8168:1;8132:38;;:24;:38;;;8128:92;;;8193:16;8186:23;;;;;8128:92;8236:44;8255:24;8236:18;:44::i;:::-;8229:51;;;7925:362;;;;:::o;16437:175:39:-;16538:5;:24;;;;16563:8;16573:16;16599:4;16538:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16538:67:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16538:67:39;;;;16437:175;;:::o;10658:103::-;10714:40;10727:9;10738:15;10714:12;:40::i;:::-;10658:103;:::o;9793:629::-;9850:13;9866:9;:20;9876:9;9866:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;9850:42;;9937:5;9923:19;;:10;:19;;;:62;;;;9976:9;9962:23;;:10;:23;;;9923:62;:131;;;;10005:12;:26;;;;10032:9;10043:10;;;;;;;;;;;10005:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10005:49:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10005:49:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10005:49:39;;;;;;;;;;;;;;;;9923:131;9902:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10104:22;10129:9;:20;10139:9;10129:20;;;;;;;;;;;;;;;:33;;;10104:58;;10182:30;10197:14;10182;:30::i;:::-;10181:31;10173:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10245:14;10262:26;:14;:24;:26::i;:::-;10245:43;;10334:27;10359:1;10334:14;:24;;:27;;;;:::i;:::-;10298:9;:20;10308:9;10298:20;;;;;;;;;;;;;;;:33;;:63;;;;10372:43;10390:5;10397:9;10408:6;10372:17;:43::i;:::-;9793:629;;;;:::o;4013:25::-;;;;:::o;5971:133::-;6016:7;6042:55;4660:10;6042:28;:55::i;:::-;6035:62;;5971:133;:::o;5674:216:15:-;5796:4;5819:14;:53;5834:37;5853:17;5834:18;:37::i;:::-;5819:53;;;;;;;;;;;;;;;:64;5873:9;5819:64;;;;;;;;;;;;;;;;;;;;;;;;;5812:71;;5674:216;;;;:::o;4954:482::-;5093:17;4110:44;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5170:10;5143:37;;:23;5156:9;5143:12;:23::i;:::-;:37;;;5122:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5301:17;5260:58;;:37;5279:17;5260:18;:37::i;:::-;:58;;;5239:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5425:4;5378:14;:33;5393:17;5378:33;;;;;;;;;;;;;;;:44;5412:9;5378:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;4954:482;;;:::o;14042:265:39:-;14146:14;14174:17;14205:21;14258:42;:9;:20;14268:9;14258:20;;;;;;;;;;;;;;;:33;;;:40;:42::i;:::-;14251:49;;;;;;14042:265;;;;;:::o;3254:126:34:-;3316:7;3342:9;:20;3352:9;3342:20;;;;;;;;;;;;;;;:31;;;;;;;;;;;;3335:38;;3254:126;;;:::o;6513:162:39:-;6564:7;6620:25;4451:7;6620:10;;:14;;:25;;;;:::i;:::-;6602:15;:43;:66;;4451:7;6602:66;;;4391:7;6602:66;6583:85;;6513:162;:::o;30763:236::-;30859:4;30928:64;30971:20;;30928:38;:15;:36;:38::i;:::-;:42;;:64;;;;:::i;:::-;30898:15;:94;30879:113;;30763:236;;;:::o;32071:299::-;32221:4;32256:40;32280:15;32256:23;:40::i;:::-;:107;;;;;32312:5;:21;;;;32334:9;32345:17;32312:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32312:51:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32312:51:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32312:51:39;;;;;;;;;;;;;;;;32256:107;32237:126;;32071:299;;;;;:::o;2228:140:102:-;2292:7;1022:1;899:3;1003:1;:15;1002:21;859:2;1117:1;:19;2319:12;:28;;2318:43;2311:50;;2228:140;;;:::o;834:176:5:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2374:303:102:-;2478:7;2520:150;2542:6;2566:34;2587:12;2566:20;:34::i;:::-;2618:38;2643:12;2618:24;:38::i;:::-;2520:4;:150::i;:::-;2501:169;;2374:303;;;;:::o;1274:134:5:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;237:112:103:-;299:7;325:17;338:3;325:8;331:1;325;:5;;:8;;;;:::i;:::-;:12;;:17;;;;:::i;:::-;318:24;;237:112;;;;:::o;662:174:11:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:11;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:11;744:18;:85::i;:::-;662:174;;;:::o;31072:264:39:-;31169:4;31189:21;31213:42;:15;:40;:42::i;:::-;31189:66;;31290:1;31273:13;:18;;31272:57;;;;;31315:13;31297:15;:31;31272:57;31265:64;;;31072:264;;;:::o;2683:184:102:-;2782:7;965:1;859:2;943:1;:18;942:24;859:2;2813:12;:30;;2812:48;2805:55;;2683:184;;;:::o;3198:168::-;3301:7;965:1;859:2;943:1;:18;942:24;3331:12;:28;3324:35;;3198:168;;;:::o;3372:327::-;3504:7;3542:150;3564:23;3574:12;3564:9;:23::i;:::-;3605:34;3626:12;3605:20;:34::i;:::-;3657:21;3542:4;:150::i;:::-;3523:169;;3372:327;;;;:::o;31419:322:39:-;31524:4;31544:21;31568:42;:15;:40;:42::i;:::-;31544:66;;31657:1;31640:13;:18;;31639:95;;;;;31694:39;31712:20;:18;:20::i;:::-;31694:13;:17;;:39;;;;:::i;:::-;31676:15;:57;31639:95;31620:114;;;31419:322;;;:::o;32376:682::-;32508:12;:30;;;;32539:9;32508:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32508:41:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32508:41:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32508:41:39;;;;;;;;;;;;;;;;32504:548;;;32661:5;;;;;;;;;;;32641:42;;;32709:6;;;;;;;;;;;32734:7;32791:9;32822:12;:32;;;;32855:9;32822:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32822:43:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32822:43:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32822:43:39;;;;;;;;;;;;;;;;32759:124;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;32759:124:39;;;32641:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;32641:256:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32641:256:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32641:256:39;;;;32504:548;;;33006:35;33025:6;33033:7;33006:5;;;;;;;;;;;:18;;;;:35;;;;;:::i;:::-;32504:548;32376:682;;;:::o;842:202:11:-;942:95;961:5;991;:18;;;:27;;;;1020:4;1026:2;1030:5;968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;968:68:11;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;968:68:11;942:18;:95::i;:::-;842:202;;;;:::o;11990:535:100:-;12093:7;12116:17;12145:2;12136:6;:11;12116:31;;12190:6;12178:9;:18;:48;;;;;12217:9;12200:6;:13;:26;;12178:48;12157:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12295:19;12439:27;12413:6;12406:4;12398:6;12394:17;12390:30;12384:37;12363:117;12348:132;;12507:11;12500:18;;;;11990:535;;;;:::o;26180:839:39:-;26348:14;:12;:14::i;:::-;26338:6;:24;;26330:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26405:27;26451:23;26472:1;26451:10;:20;;:23;;;;:::i;:::-;26405:71;;26486:18;26507:24;26528:2;26507:10;:20;;:24;;;;:::i;:::-;26486:45;;26565:147;;;;;;;;26587:47;26607:6;26615:15;26632:1;26587:19;:47::i;:::-;26565:147;;;;26648:5;26565:147;;;;;;26667:11;26565:147;;;;;;26692:10;26565:147;;;;;26542:9;:20;26552:9;26542:20;;;;;;;;;;;;;;;:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26723:12;:39;;;;26776:10;;;;;;;;;;;26808:6;;;;;;;;;;;26829:5;26848:9;26871:10;26723:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26723:168:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26723:168:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26723:168:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26723:168:39;;;;;;;;;;;;;;;;;;;;;;;;;;;26929:9;26907:32;;26922:5;26907:32;;;;;;;;;;;;26993:10;26954:58;;26980:11;26954:58;;26969:9;26954:58;;;27005:6;26954:58;;;;;;;;;;;;;;;;;;26180:839;;;;;;:::o;28283:2408::-;28609:16;28686:5;28640:51;;28648:10;;;;;;;;;;;:22;;;28671:9;28648:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28648:33:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28648:33:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28648:33:39;;;;;;;;;;;;;;;;28640:51;;;:95;;;;28730:5;28711:24;;28719:6;;;;;;;;;;;28711:24;;;28640:95;28609:126;;28750:12;:30;;;;28781:9;28750:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28750:41:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28750:41:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28750:41:39;;;;;;;;;;;;;;;;28746:1163;;;28936:11;28928:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29171:23;29213:12;:32;;;;29246:9;29213:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29213:43:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29213:43:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29213:43:39;;;;;;;;;;;;;;;;29171:85;;29273:15;29308:12;:39;;;;29369:10;;;;;;;;;;;29409:6;;;;;;;;;;;29438:5;29465:9;29496:10;29308:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;29308:216:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29308:216:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29308:216:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29308:216:39;;;;;;;;;;;;;;;;;;;;;;;;;29270:254;;;29557:15;29546:7;:26;29538:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28746:1163;;;;;29778:11;29777:12;29769:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29870:5;29840:35;;:9;:20;29850:9;29840:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:35;;;29832:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28746:1163;29919:22;29944:9;:20;29954:9;29944:20;;;;;;;;;;;;;;;:33;;;29919:58;;29992:30;30007:14;29992;:30::i;:::-;29987:698;;30220:6;:22;;;;30260:6;30284:9;30311:14;30343:6;;;;;;;;;;;30220:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30220:143:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30220:143:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30220:143:39;;;;;;;;;;;;;;;;30184:9;:20;30194:9;30184:20;;;;;;;;;;;;;;;:33;;:179;;;;29987:698;;;30616:6;:15;;;;30632:6;30640:9;30651:14;30667:6;;;;;;;;;;;30616:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30616:58:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30616:58:39;;;;29987:698;28283:2408;;;;;;:::o;864:311:60:-;927:7;956:27;535:15;956:13;:17;;:27;;;;:::i;:::-;950:3;:33;946:202;;;999:19;1037:47;535:15;1037:33;1047:22;1055:13;1047:3;:7;;:22;;;;:::i;:::-;588:2;1037:9;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;999:85;;1105:32;1114:22;1124:11;588:2;1114:9;;:22;;;;:::i;:::-;627:12;1105:8;;:32;;;;:::i;:::-;1098:39;;;;;946:202;627:12;1157:11;;864:311;;;;:::o;1860:362:102:-;1958:14;1986:17;2017:21;2072:23;2082:12;2072:9;:23::i;:::-;2063:32;;2117:34;2138:12;2117:20;:34::i;:::-;2105:46;;2177:38;2202:12;2177:24;:38::i;:::-;2161:54;;1860:362;;;;;:::o;1143:711::-;1268:7;1022:1;899:3;1003:1;:15;1002:21;1389:6;:20;;1381:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:1;859:2;943:1;:18;942:24;1659:13;1647:9;:25;1646:44;;1625:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1833:13;859:2;1790:9;:27;;859:2;1117:1;:19;1751:6;:22;;1750:68;:96;1742:105;;1143:711;;;;;:::o;1732:187:5:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;2159:459::-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3150:46;;3073:130;;;;:::o;2666:1095:11:-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:11;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:11;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:11;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;3718:338:5:-;3804:7;3901:1;3897;:5;3904:12;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3889:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;3927:17;;4048:1;4041:8;;;3718:338;;;;;:::o;557:797:12:-;617:4;1062:16;1088:19;1110:66;1088:88;;;;1277:7;1265:20;1253:32;;1316:3;1304:15;;:8;:15;;:42;;;;;1335:11;1323:8;:23;;1304:42;1296:51;;;;557:797;;;:::o", + "source": "/**\n▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄\n▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n ▓▓▓▓▓▓ ▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓ ▐▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓\n ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▄▄▄▄ ▓▓▓▓▓▓▄▄▄▄ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓\n ▓▓▓▓▓▓▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓▀▀▀▀ ▓▓▓▓▓▓▀▀▀▀ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀\n ▓▓▓▓▓▓ ▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌\n▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓\n▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓\n\n Trust math, not hardware.\n*/\n\npragma solidity 0.5.17;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"./StakeDelegatable.sol\";\nimport \"./libraries/staking/MinimumStakeSchedule.sol\";\nimport \"./libraries/staking/GrantStaking.sol\";\nimport \"./libraries/staking/Locks.sol\";\nimport \"./libraries/staking/TopUps.sol\";\nimport \"./utils/PercentUtils.sol\";\nimport \"./utils/BytesLib.sol\";\nimport \"./Authorizations.sol\";\nimport \"./TokenStakingEscrow.sol\";\nimport \"./TokenSender.sol\";\n\n/// @title TokenStaking\n/// @notice A token staking contract for a specified standard ERC20Burnable token.\n/// A holder of the specified token can stake delegate its tokens to this contract\n/// and recover the stake after undelegation period is over.\ncontract TokenStaking is Authorizations, StakeDelegatable {\n using BytesLib for bytes;\n using SafeMath for uint256;\n using PercentUtils for uint256;\n using SafeERC20 for ERC20Burnable;\n using GrantStaking for GrantStaking.Storage;\n using Locks for Locks.Storage;\n using TopUps for TopUps.Storage;\n\n event StakeDelegated(address indexed owner, address indexed operator);\n event OperatorStaked(\n address indexed operator,\n address indexed beneficiary,\n address indexed authorizer,\n uint256 value\n );\n event StakeOwnershipTransferred(\n address indexed operator,\n address indexed newOwner\n );\n event TopUpInitiated(address indexed operator, uint256 topUp);\n event TopUpCompleted(address indexed operator, uint256 newAmount);\n event Undelegated(address indexed operator, uint256 undelegatedAt);\n event RecoveredStake(address operator);\n event TokensSlashed(address indexed operator, uint256 amount);\n event TokensSeized(address indexed operator, uint256 amount);\n event StakeLocked(\n address indexed operator,\n address lockCreator,\n uint256 until\n );\n event LockReleased(address indexed operator, address lockCreator);\n event ExpiredLockReleased(address indexed operator, address lockCreator);\n\n uint256 public deployedAt;\n uint256 public initializationPeriod; // varies between mainnet and testnet\n\n ERC20Burnable internal token;\n TokenGrant internal tokenGrant;\n TokenStakingEscrow internal escrow;\n\n GrantStaking.Storage internal grantStaking;\n Locks.Storage internal locks;\n TopUps.Storage internal topUps;\n\n uint256 internal constant twoWeeks = 1209600; // [sec]\n uint256 internal constant twoMonths = 5184000; // [sec]\n\n // 2020-04-28; the date of deploying KEEP token.\n // TX: 0xea22d72bc7de4c82798df7194734024a1f2fd57b173d0e065864ff4e9d3dc014\n uint256 internal constant minimumStakeScheduleStart = 1588042366;\n\n /// @notice Creates a token staking contract for a provided Standard ERC20Burnable token.\n /// @param _token KEEP token contract.\n /// @param _tokenGrant KEEP token grant contract.\n /// @param _escrow Escrow dedicated for this staking contract.\n /// @param _registry Keep contract registry contract.\n /// @param _initializationPeriod To avoid certain attacks on work selection, recently created\n /// operators must wait for a specific period of time before being eligible for work selection.\n constructor(\n ERC20Burnable _token,\n TokenGrant _tokenGrant,\n TokenStakingEscrow _escrow,\n KeepRegistry _registry,\n uint256 _initializationPeriod\n ) public Authorizations(_registry) {\n token = _token;\n tokenGrant = _tokenGrant;\n escrow = _escrow;\n registry = _registry;\n initializationPeriod = _initializationPeriod;\n deployedAt = block.timestamp;\n }\n\n /// @notice Returns minimum amount of KEEP that allows sMPC cluster client to\n /// participate in the Keep network. Expressed as number with 18-decimal places.\n /// Initial minimum stake is higher than the final and lowered periodically based\n /// on the amount of steps and the length of the minimum stake schedule in seconds.\n function minimumStake() public view returns (uint256) {\n return MinimumStakeSchedule.current(minimumStakeScheduleStart);\n }\n\n /// @notice Returns the current value of the undelegation period.\n /// The staking contract guarantees that an undelegated operator’s stakes\n /// will stay locked for a period of time after undelegation, and thus\n /// available as collateral for any work the operator is engaged in.\n /// The undelegation period is two weeks for the first two months and\n /// two months after that.\n function undelegationPeriod() public view returns (uint256) {\n return\n block.timestamp < deployedAt.add(twoMonths) ? twoWeeks : twoMonths;\n }\n\n /// @notice Receives approval of token transfer and stakes the approved\n /// amount or adds the approved amount to an existing delegation (a “top-up”).\n /// In case of a top-up, it is expected that the operator stake is not\n /// undelegated and that the top-up is performed from the same source of\n /// tokens as the initial delegation. That is, if the tokens were delegated\n /// from a grant, top-up has to be performed from the same grant. If the\n /// delegation was done using liquid tokens, only liquid tokens from the\n /// same owner can be used to top-up the stake.\n /// Top-up can not be cancelled so it is important to be careful with the\n /// amount of KEEP added to the stake.\n /// @dev Requires that the provided token contract be the same one linked to\n /// this contract.\n /// @param _from The owner of the tokens who approved them to transfer.\n /// @param _value Approved amount for the transfer and stake.\n /// @param _token Token contract address.\n /// @param _extraData Data for stake delegation. This byte array must have\n /// the following values concatenated:\n /// - Beneficiary address (20 bytes), ignored for a top-up\n /// - Operator address (20 bytes)\n /// - Authorizer address (20 bytes), ignored for a top-up\n /// - Grant ID (32 bytes) - required only when called by TokenStakingEscrow\n function receiveApproval(\n address _from,\n uint256 _value,\n address _token,\n bytes memory _extraData\n ) public {\n require(ERC20Burnable(_token) == token, \"Unrecognized token\");\n require(_extraData.length >= 60, \"Corrupted delegation data\");\n\n // Transfer tokens to this contract.\n token.safeTransferFrom(_from, address(this), _value);\n\n address operator = _extraData.toAddress(20);\n // See if there is an existing delegation for this operator...\n if (operators[operator].packedParams.getCreationTimestamp() == 0) {\n // If there is no existing delegation, delegate tokens using\n // beneficiary and authorizer passed in _extraData.\n delegate(_from, _value, operator, _extraData);\n } else {\n // If there is an existing delegation, top-up the stake.\n topUp(_from, _value, operator, _extraData);\n }\n }\n\n /// @notice Commits pending top-up for the provided operator. If the top-up\n /// did not pass the initialization period, the function fails.\n /// @param _operator The operator with a pending top-up that is getting\n /// committed.\n function commitTopUp(address _operator) public {\n operators[_operator].packedParams = topUps.commit(\n _operator,\n operators[_operator].packedParams,\n initializationPeriod\n );\n }\n\n /// @notice Cancels stake of tokens within the operator initialization period\n /// without being subjected to the token lockup for the undelegation period.\n /// This can be used to undo mistaken delegation to the wrong operator address.\n /// @param _operator Address of the stake operator.\n function cancelStake(address _operator) public {\n address owner = operators[_operator].owner;\n require(\n msg.sender == owner ||\n msg.sender == _operator ||\n grantStaking.canUndelegate(_operator, tokenGrant),\n \"Not authorized\"\n );\n uint256 operatorParams = operators[_operator].packedParams;\n\n require(!_isInitialized(operatorParams), \"Initialized stake\");\n\n uint256 amount = operatorParams.getAmount();\n operators[_operator].packedParams = operatorParams.setAmount(0);\n\n transferOrDeposit(owner, _operator, amount);\n }\n\n /// @notice Undelegates staked tokens. You will be able to recover your stake by calling\n /// `recoverStake()` with operator address once undelegation period is over.\n /// @param _operator Address of the stake operator.\n function undelegate(address _operator) public {\n undelegateAt(_operator, block.timestamp);\n }\n\n /// @notice Set an undelegation time for staked tokens.\n /// Undelegation will begin at the specified timestamp.\n /// You will be able to recover your stake by calling\n /// `recoverStake()` with operator address once undelegation period is over.\n /// @param _operator Address of the stake operator.\n /// @param _undelegationTimestamp The timestamp undelegation is to start at.\n function undelegateAt(address _operator, uint256 _undelegationTimestamp)\n public\n {\n require(\n msg.sender == _operator ||\n msg.sender == operators[_operator].owner ||\n grantStaking.canUndelegate(_operator, tokenGrant),\n \"Not authorized\"\n );\n uint256 oldParams = operators[_operator].packedParams;\n require(\n _undelegationTimestamp >= block.timestamp &&\n _undelegationTimestamp >\n oldParams.getCreationTimestamp().add(initializationPeriod),\n \"Invalid timestamp\"\n );\n uint256 existingUndelegationTimestamp =\n oldParams.getUndelegationTimestamp();\n require(\n // Undelegation not in progress OR\n existingUndelegationTimestamp == 0 ||\n // Undelegating sooner than previously set time OR\n existingUndelegationTimestamp > _undelegationTimestamp ||\n // We have already checked above that msg.sender is owner, grantee,\n // or operator. Only owner and grantee are eligible to postpone the\n // delegation so it is enough if we exclude operator here.\n msg.sender != _operator,\n \"Operator may not postpone\"\n );\n operators[_operator].packedParams = oldParams.setUndelegationTimestamp(\n _undelegationTimestamp\n );\n emit Undelegated(_operator, _undelegationTimestamp);\n }\n\n /// @notice Recovers staked tokens and transfers them back to the owner.\n /// Recovering tokens can only be performed when the operator finished\n /// undelegating.\n /// @param _operator Operator address.\n function recoverStake(address _operator) public {\n uint256 operatorParams = operators[_operator].packedParams;\n require(\n operatorParams.getUndelegationTimestamp() != 0,\n \"Not undelegated\"\n );\n require(_isUndelegatingFinished(operatorParams), \"Still undelegating\");\n require(!isStakeLocked(_operator), \"Locked stake\");\n\n uint256 amount = operatorParams.getAmount();\n\n // If there is a pending top-up, force-commit it before returning tokens.\n amount = amount.add(topUps.cancel(_operator));\n\n operators[_operator].packedParams = operatorParams.setAmount(0);\n transferOrDeposit(operators[_operator].owner, _operator, amount);\n\n emit RecoveredStake(_operator);\n }\n\n /// @notice Gets stake delegation info for the given operator.\n /// @param _operator Operator address.\n /// @return amount The amount of tokens the given operator delegated.\n /// @return createdAt The time when the stake has been delegated.\n /// @return undelegatedAt The time when undelegation has been requested.\n /// If undelegation has not been requested, 0 is returned.\n function getDelegationInfo(address _operator)\n public\n view\n returns (\n uint256 amount,\n uint256 createdAt,\n uint256 undelegatedAt\n )\n {\n return operators[_operator].packedParams.unpack();\n }\n\n /// @notice Locks given operator stake for the specified duration.\n /// Locked stake may not be recovered until the lock expires or is released,\n /// even if the normal undelegation period has passed.\n /// Only previously authorized operator contract can lock the stake.\n /// @param operator Operator address.\n /// @param duration Lock duration in seconds.\n function lockStake(address operator, uint256 duration)\n public\n onlyApprovedOperatorContract(msg.sender)\n {\n require(\n isAuthorizedForOperator(operator, msg.sender),\n \"Not authorized\"\n );\n\n uint256 operatorParams = operators[operator].packedParams;\n\n require(_isInitialized(operatorParams), \"Inactive stake\");\n require(!_isUndelegating(operatorParams), \"Undelegating stake\");\n\n locks.lockStake(operator, duration);\n }\n\n /// @notice Removes a lock the caller had previously placed on the operator.\n /// @dev Only for operator contracts.\n /// To remove expired or disabled locks, use `releaseExpiredLocks`.\n /// The authorization check ensures that the caller must have been able\n /// to place a lock on the operator sometime in the past.\n /// We don't need to check for current approval status of the caller\n /// because unlocking stake cannot harm the operator\n /// nor interfere with other operator contracts.\n /// Therefore even disabled operator contracts may freely unlock stake.\n /// @param operator Operator address.\n function unlockStake(address operator) public {\n require(\n isAuthorizedForOperator(operator, msg.sender),\n \"Not authorized\"\n );\n locks.releaseLock(operator);\n }\n\n /// @notice Removes the lock of the specified operator contract\n /// if the lock has expired or the contract has been disabled.\n /// @dev Necessary for removing locks placed by contracts\n /// that have been disabled by the panic button.\n /// Also applicable to prevent inadvertent DoS of `recoverStake`\n /// if too many operator contracts have failed to clean up their locks.\n function releaseExpiredLock(address operator, address operatorContract)\n public\n {\n locks.releaseExpiredLock(operator, operatorContract, address(this));\n }\n\n /// @notice Check whether the operator has any active locks\n /// that haven't expired yet\n /// and whose creators aren't disabled by the panic button.\n function isStakeLocked(address operator) public view returns (bool) {\n return locks.isStakeLocked(operator, address(this));\n }\n\n /// @notice Get the locks placed on the operator.\n /// @return creators The addresses of operator contracts\n /// that have placed a lock on the operator.\n /// @return expirations The expiration times\n /// of the locks placed on the operator.\n function getLocks(address operator)\n public\n view\n returns (address[] memory creators, uint256[] memory expirations)\n {\n return locks.getLocks(operator);\n }\n\n /// @notice Slash provided token amount from every member in the misbehaved\n /// operators array and burn 100% of all the tokens.\n /// @param amountToSlash Token amount to slash from every misbehaved operator.\n /// @param misbehavedOperators Array of addresses to seize the tokens from.\n function slash(uint256 amountToSlash, address[] memory misbehavedOperators)\n public\n onlyApprovedOperatorContract(msg.sender)\n {\n uint256 totalAmountToBurn;\n address authoritySource = getAuthoritySource(msg.sender);\n for (uint256 i = 0; i < misbehavedOperators.length; i++) {\n address operator = misbehavedOperators[i];\n require(\n authorizations[authoritySource][operator],\n \"Not authorized\"\n );\n\n uint256 operatorParams = operators[operator].packedParams;\n require(_isInitialized(operatorParams), \"Inactive stake\");\n\n require(\n !_isStakeReleased(operator, operatorParams, msg.sender),\n \"Stake is released\"\n );\n\n uint256 currentAmount = operatorParams.getAmount();\n\n if (currentAmount < amountToSlash) {\n totalAmountToBurn = totalAmountToBurn.add(currentAmount);\n operators[operator].packedParams = operatorParams.setAmount(0);\n emit TokensSlashed(operator, currentAmount);\n } else {\n totalAmountToBurn = totalAmountToBurn.add(amountToSlash);\n operators[operator].packedParams = operatorParams.setAmount(\n currentAmount.sub(amountToSlash)\n );\n emit TokensSlashed(operator, amountToSlash);\n }\n }\n\n token.burn(totalAmountToBurn);\n }\n\n /// @notice Seize provided token amount from every member in the misbehaved\n /// operators array. The tattletale is rewarded with 5% of the total seized\n /// amount scaled by the reward adjustment parameter and the rest 95% is burned.\n /// @param amountToSeize Token amount to seize from every misbehaved operator.\n /// @param rewardMultiplier Reward adjustment in percentage. Min 1% and 100% max.\n /// @param tattletale Address to receive the 5% reward.\n /// @param misbehavedOperators Array of addresses to seize the tokens from.\n function seize(\n uint256 amountToSeize,\n uint256 rewardMultiplier,\n address tattletale,\n address[] memory misbehavedOperators\n ) public onlyApprovedOperatorContract(msg.sender) {\n uint256 totalAmountToBurn;\n address authoritySource = getAuthoritySource(msg.sender);\n for (uint256 i = 0; i < misbehavedOperators.length; i++) {\n address operator = misbehavedOperators[i];\n require(\n authorizations[authoritySource][operator],\n \"Not authorized\"\n );\n\n uint256 operatorParams = operators[operator].packedParams;\n require(_isInitialized(operatorParams), \"Inactive stake\");\n\n require(\n !_isStakeReleased(operator, operatorParams, msg.sender),\n \"Stake is released\"\n );\n\n uint256 currentAmount = operatorParams.getAmount();\n\n if (currentAmount < amountToSeize) {\n totalAmountToBurn = totalAmountToBurn.add(currentAmount);\n operators[operator].packedParams = operatorParams.setAmount(0);\n emit TokensSeized(operator, currentAmount);\n } else {\n totalAmountToBurn = totalAmountToBurn.add(amountToSeize);\n operators[operator].packedParams = operatorParams.setAmount(\n currentAmount.sub(amountToSeize)\n );\n emit TokensSeized(operator, amountToSeize);\n }\n }\n\n uint256 tattletaleReward =\n (totalAmountToBurn.percent(5)).percent(rewardMultiplier);\n\n token.safeTransfer(tattletale, tattletaleReward);\n token.burn(totalAmountToBurn.sub(tattletaleReward));\n }\n\n /// @notice Allows the current staking relationship owner to transfer the\n /// ownership to someone else.\n /// @param operator Address of the stake operator.\n /// @param newOwner Address of the new staking relationship owner.\n function transferStakeOwnership(address operator, address newOwner) public {\n require(msg.sender == operators[operator].owner, \"Not authorized\");\n operators[operator].owner = newOwner;\n emit StakeOwnershipTransferred(operator, newOwner);\n }\n\n /// @notice Gets the eligible stake balance of the specified address.\n /// An eligible stake is a stake that passed the initialization period\n /// and is not currently undelegating. Also, the operator had to approve\n /// the specified operator contract.\n ///\n /// Operator with a minimum required amount of eligible stake can join the\n /// network and participate in new work selection.\n ///\n /// @param _operator address of stake operator.\n /// @param _operatorContract address of operator contract.\n /// @return an uint256 representing the eligible stake balance.\n function eligibleStake(address _operator, address _operatorContract)\n public\n view\n returns (uint256 balance)\n {\n uint256 operatorParams = operators[_operator].packedParams;\n // To be eligible for work selection, the operator must:\n // - have the operator contract authorized\n // - have the stake initialized\n // - must not be undelegating; keep in mind the `undelegatedAt` may be\n // set to a time in the future, to schedule undelegation in advance.\n // In this case the operator is still eligible until the timestamp\n // `undelegatedAt`.\n if (\n isAuthorizedForOperator(_operator, _operatorContract) &&\n _isInitialized(operatorParams) &&\n !_isUndelegating(operatorParams)\n ) {\n balance = operatorParams.getAmount();\n }\n }\n\n /// @notice Gets the active stake balance of the specified address.\n /// An active stake is a stake that passed the initialization period,\n /// and may be in the process of undelegation\n /// but has not been released yet,\n /// either because the undelegation period is not over,\n /// or because the operator contract has an active lock on the operator.\n /// Also, the operator had to approve the specified operator contract.\n ///\n /// The difference between eligible stake is that active stake does not make\n /// the operator eligible for work selection but it may be still finishing\n /// earlier work until the stake is released.\n /// Operator with a minimum required\n /// amount of active stake can join the network but cannot be selected to any\n /// new work.\n ///\n /// @param _operator address of stake operator.\n /// @param _operatorContract address of operator contract.\n /// @return an uint256 representing the eligible stake balance.\n function activeStake(address _operator, address _operatorContract)\n public\n view\n returns (uint256 balance)\n {\n uint256 operatorParams = operators[_operator].packedParams;\n if (\n isAuthorizedForOperator(_operator, _operatorContract) &&\n _isInitialized(operatorParams) &&\n !_isStakeReleased(_operator, operatorParams, _operatorContract)\n ) {\n balance = operatorParams.getAmount();\n }\n }\n\n /// @notice Checks if the specified account has enough active stake to become\n /// network operator and that the specified operator contract has been\n /// authorized for potential slashing.\n ///\n /// Having the required minimum of active stake makes the operator eligible\n /// to join the network. If the active stake is not currently undelegating,\n /// operator is also eligible for work selection.\n ///\n /// @param staker Staker's address\n /// @param operatorContract Operator contract's address\n /// @return True if has enough active stake to participate in the network,\n /// false otherwise.\n function hasMinimumStake(address staker, address operatorContract)\n public\n view\n returns (bool)\n {\n return activeStake(staker, operatorContract) >= minimumStake();\n }\n\n /// @notice Delegates tokens to a new operator using beneficiary and\n /// authorizer passed in _extraData parameter.\n /// @param _from The owner of the tokens who approved them to transfer.\n /// @param _value Approved amount for the transfer and stake.\n /// @param _operator The new operator address.\n /// @param _extraData Data for stake delegation as passed to receiveApproval.\n function delegate(\n address _from,\n uint256 _value,\n address _operator,\n bytes memory _extraData\n ) internal {\n require(_value >= minimumStake(), \"Less than the minimum stake\");\n\n address payable beneficiary = address(uint160(_extraData.toAddress(0)));\n address authorizer = _extraData.toAddress(40);\n\n operators[_operator] = Operator(\n OperatorParams.pack(_value, block.timestamp, 0),\n _from,\n beneficiary,\n authorizer\n );\n\n grantStaking.tryCapturingDelegationData(\n tokenGrant,\n address(escrow),\n _from,\n _operator,\n _extraData\n );\n\n emit StakeDelegated(_from, _operator);\n emit OperatorStaked(_operator, beneficiary, authorizer, _value);\n }\n\n /// @notice Performs top-up to an existing operator. Tokens added during\n /// stake initialization period are immediatelly added to the stake and\n /// stake initialization timer is reset to the current block. Tokens added\n /// in a top-up after the stake initialization period is over are not\n /// included in the operator stake until the initialization period for\n /// a top-up passes and top-up is committed. Operator must not have the stake\n /// undelegated. It is expected that the top-up is done from the same source\n /// of tokens as the initial delegation. That is, if the tokens were\n /// delegated from a grant, top-up has to be performed from the same grant.\n /// If the delegation was done using liquid tokens, only liquid tokens from\n /// the same owner can be used to top-up the stake.\n /// Top-up can not be cancelled so it is important to be careful with the\n /// amount of KEEP added to the stake.\n /// @param _from The owner of the tokens who approved them to transfer.\n /// @param _value Approved amount for the transfer and top-up to\n /// an existing stake.\n /// @param _operator The new operator address.\n /// @param _extraData Data for stake delegation as passed to receiveApproval\n function topUp(\n address _from,\n uint256 _value,\n address _operator,\n bytes memory _extraData\n ) internal {\n // Top-up comes from a grant if it's been initiated from TokenGrantStake\n // contract or if it's been initiated from TokenStakingEscrow by\n // redelegation.\n bool isFromGrant =\n address(tokenGrant.grantStakes(_operator)) == _from ||\n address(escrow) == _from;\n\n if (grantStaking.hasGrantDelegated(_operator)) {\n // Operator has grant delegated. We need to see if the top-up\n // is performed also from a grant.\n require(isFromGrant, \"Must be from a grant\");\n // If it is from a grant, we need to make sure it's from the same\n // grant as the original delegation. We do not want to mix unlocking\n // schedules.\n uint256 previousGrantId =\n grantStaking.getGrantForOperator(_operator);\n (, uint256 grantId) =\n grantStaking.tryCapturingDelegationData(\n tokenGrant,\n address(escrow),\n _from,\n _operator,\n _extraData\n );\n require(grantId == previousGrantId, \"Not the same grant\");\n } else {\n // Operator has no grant delegated. We need to see if the top-up\n // is performed from liquid tokens of the same owner.\n require(!isFromGrant, \"Must not be from a grant\");\n require(operators[_operator].owner == _from, \"Not the same owner\");\n }\n\n uint256 operatorParams = operators[_operator].packedParams;\n if (!_isInitialized(operatorParams)) {\n // If the stake is not yet initialized, we add tokens immediately\n // but we also reset stake initialization time counter.\n operators[_operator].packedParams = topUps.instantComplete(\n _value,\n _operator,\n operatorParams,\n escrow\n );\n } else {\n // If the stake is initialized, we do NOT add tokens immediately.\n // We initiate the top-up and will add tokens to the stake only\n // after the initialization period for a top-up passes.\n topUps.initiate(_value, _operator, operatorParams, escrow);\n }\n }\n\n /// @notice Is the operator with the given params initialized\n function _isInitialized(uint256 _operatorParams)\n internal\n view\n returns (bool)\n {\n return\n block.timestamp >\n _operatorParams.getCreationTimestamp().add(initializationPeriod);\n }\n\n /// @notice Is the operator with the given params undelegating\n function _isUndelegating(uint256 _operatorParams)\n internal\n view\n returns (bool)\n {\n uint256 undelegatedAt = _operatorParams.getUndelegationTimestamp();\n return (undelegatedAt != 0) && (block.timestamp > undelegatedAt);\n }\n\n /// @notice Has the operator with the given params finished undelegating\n function _isUndelegatingFinished(uint256 _operatorParams)\n internal\n view\n returns (bool)\n {\n uint256 undelegatedAt = _operatorParams.getUndelegationTimestamp();\n return\n (undelegatedAt != 0) &&\n (block.timestamp > undelegatedAt.add(undelegationPeriod()));\n }\n\n /// @notice Get whether the operator's stake is released\n /// as far as the operator contract is concerned.\n /// If the operator contract has a lock on the operator,\n /// the operator's stake is be released when the lock expires.\n /// Otherwise the stake is released when the operator finishes undelegating.\n function _isStakeReleased(\n address _operator,\n uint256 _operatorParams,\n address _operatorContract\n ) internal view returns (bool) {\n return\n _isUndelegatingFinished(_operatorParams) &&\n locks.isStakeReleased(_operator, _operatorContract);\n }\n\n function transferOrDeposit(\n address _owner,\n address _operator,\n uint256 _amount\n ) internal {\n if (grantStaking.hasGrantDelegated(_operator)) {\n // For tokens staked from a grant, transfer them to the escrow.\n TokenSender(address(token)).approveAndCall(\n address(escrow),\n _amount,\n abi.encode(\n _operator,\n grantStaking.getGrantForOperator(_operator)\n )\n );\n } else {\n // For liquid tokens staked, transfer them straight to the owner.\n token.safeTransfer(_owner, _amount);\n }\n }\n}\n", + "sourcePath": "/Users/michalina/workspace2/keep-core/solidity-v1/contracts/TokenStaking.sol", + "ast": { + "absolutePath": "project:/contracts/TokenStaking.sol", + "exportedSymbols": { + "TokenStaking": [12435] + }, + "id": 12436, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10973, + "literals": ["solidity", "0.5", ".17"], + "nodeType": "PragmaDirective", + "src": "1837:23:39" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "id": 10974, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 1024, + "src": "1862:71:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 10975, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 1371, + "src": "1934:67:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 10976, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 471, + "src": "2002:59:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/StakeDelegatable.sol", + "file": "./StakeDelegatable.sol", + "id": 10977, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 8890, + "src": "2062:32:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/libraries/staking/MinimumStakeSchedule.sol", + "file": "./libraries/staking/MinimumStakeSchedule.sol", + "id": 10978, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 20127, + "src": "2095:54:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/libraries/staking/GrantStaking.sol", + "file": "./libraries/staking/GrantStaking.sol", + "id": 10979, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 19500, + "src": "2150:46:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/libraries/staking/Locks.sol", + "file": "./libraries/staking/Locks.sol", + "id": 10980, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 20066, + "src": "2197:39:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/libraries/staking/TopUps.sol", + "file": "./libraries/staking/TopUps.sol", + "id": 10981, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 20408, + "src": "2237:40:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/utils/PercentUtils.sol", + "file": "./utils/PercentUtils.sol", + "id": 10982, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 28062, + "src": "2278:34:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/utils/BytesLib.sol", + "file": "./utils/BytesLib.sol", + "id": 10983, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 27493, + "src": "2313:30:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/Authorizations.sol", + "file": "./Authorizations.sol", + "id": 10984, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 1784, + "src": "2344:30:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/TokenStakingEscrow.sol", + "file": "./TokenStakingEscrow.sol", + "id": 10985, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 13400, + "src": "2375:34:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/TokenSender.sol", + "file": "./TokenSender.sol", + "id": 10986, + "nodeType": "ImportDirective", + "scope": 12436, + "sourceUnit": 10972, + "src": "2410:27:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10987, + "name": "Authorizations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1783, + "src": "2715:14:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Authorizations_$1783", + "typeString": "contract Authorizations" + } + }, + "id": 10988, + "nodeType": "InheritanceSpecifier", + "src": "2715:14:39" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10989, + "name": "StakeDelegatable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8889, + "src": "2731:16:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_StakeDelegatable_$8889", + "typeString": "contract StakeDelegatable" + } + }, + "id": 10990, + "nodeType": "InheritanceSpecifier", + "src": "2731:16:39" + } + ], + "contractDependencies": [1613, 1783, 8889], + "contractKind": "contract", + "documentation": "@title TokenStaking\n @notice A token staking contract for a specified standard ERC20Burnable token.\n A holder of the specified token can stake delegate its tokens to this contract\n and recover the stake after undelegation period is over.", + "fullyImplemented": true, + "id": 12435, + "linearizedBaseContracts": [12435, 8889, 1783, 1613], + "name": "TokenStaking", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 10993, + "libraryName": { + "contractScope": null, + "id": 10991, + "name": "BytesLib", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 27492, + "src": "2760:8:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BytesLib_$27492", + "typeString": "library BytesLib" + } + }, + "nodeType": "UsingForDirective", + "src": "2754:25:39", + "typeName": { + "id": 10992, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2773:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + { + "id": 10996, + "libraryName": { + "contractScope": null, + "id": 10994, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 470, + "src": "2790:8:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$470", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "2784:27:39", + "typeName": { + "id": 10995, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2803:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 10999, + "libraryName": { + "contractScope": null, + "id": 10997, + "name": "PercentUtils", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 28061, + "src": "2822:12:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PercentUtils_$28061", + "typeString": "library PercentUtils" + } + }, + "nodeType": "UsingForDirective", + "src": "2816:31:39", + "typeName": { + "id": 10998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2839:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 11002, + "libraryName": { + "contractScope": null, + "id": 11000, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1370, + "src": "2858:9:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1370", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "2852:34:39", + "typeName": { + "contractScope": null, + "id": 11001, + "name": "ERC20Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1023, + "src": "2872:13:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + } + }, + { + "id": 11005, + "libraryName": { + "contractScope": null, + "id": 11003, + "name": "GrantStaking", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 19499, + "src": "2897:12:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GrantStaking_$19499", + "typeString": "library GrantStaking" + } + }, + "nodeType": "UsingForDirective", + "src": "2891:44:39", + "typeName": { + "contractScope": null, + "id": 11004, + "name": "GrantStaking.Storage", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 19231, + "src": "2914:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage_ptr", + "typeString": "struct GrantStaking.Storage" + } + } + }, + { + "id": 11008, + "libraryName": { + "contractScope": null, + "id": 11006, + "name": "Locks", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 20065, + "src": "2946:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Locks_$20065", + "typeString": "library Locks" + } + }, + "nodeType": "UsingForDirective", + "src": "2940:30:39", + "typeName": { + "contractScope": null, + "id": 11007, + "name": "Locks.Storage", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 19752, + "src": "2956:13:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage_ptr", + "typeString": "struct Locks.Storage" + } + } + }, + { + "id": 11011, + "libraryName": { + "contractScope": null, + "id": 11009, + "name": "TopUps", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 20407, + "src": "2981:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TopUps_$20407", + "typeString": "library TopUps" + } + }, + "nodeType": "UsingForDirective", + "src": "2975:32:39", + "typeName": { + "contractScope": null, + "id": 11010, + "name": "TopUps.Storage", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 20159, + "src": "2992:14:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$20159_storage_ptr", + "typeString": "struct TopUps.Storage" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 11017, + "name": "StakeDelegated", + "nodeType": "EventDefinition", + "parameters": { + "id": 11016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11013, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 11017, + "src": "3034:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11012, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3034:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11015, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11017, + "src": "3057:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11014, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3057:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3033:49:39" + }, + "src": "3013:70:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11027, + "name": "OperatorStaked", + "nodeType": "EventDefinition", + "parameters": { + "id": 11026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11019, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11027, + "src": "3118:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11018, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3118:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11021, + "indexed": true, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 11027, + "src": "3152:27:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3152:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11023, + "indexed": true, + "name": "authorizer", + "nodeType": "VariableDeclaration", + "scope": 11027, + "src": "3189:26:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11022, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3189:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11025, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 11027, + "src": "3225:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3225:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3108:136:39" + }, + "src": "3088:157:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11033, + "name": "StakeOwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 11032, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11029, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11033, + "src": "3291:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3291:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11031, + "indexed": true, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 11033, + "src": "3325:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3325:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3281:74:39" + }, + "src": "3250:106:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11039, + "name": "TopUpInitiated", + "nodeType": "EventDefinition", + "parameters": { + "id": 11038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11035, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11039, + "src": "3382:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3382:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11037, + "indexed": false, + "name": "topUp", + "nodeType": "VariableDeclaration", + "scope": 11039, + "src": "3408:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3408:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3381:41:39" + }, + "src": "3361:62:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11045, + "name": "TopUpCompleted", + "nodeType": "EventDefinition", + "parameters": { + "id": 11044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11041, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11045, + "src": "3449:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3449:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11043, + "indexed": false, + "name": "newAmount", + "nodeType": "VariableDeclaration", + "scope": 11045, + "src": "3475:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3475:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3448:45:39" + }, + "src": "3428:66:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11051, + "name": "Undelegated", + "nodeType": "EventDefinition", + "parameters": { + "id": 11050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11047, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11051, + "src": "3517:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11046, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3517:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11049, + "indexed": false, + "name": "undelegatedAt", + "nodeType": "VariableDeclaration", + "scope": 11051, + "src": "3543:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3543:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3516:49:39" + }, + "src": "3499:67:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11055, + "name": "RecoveredStake", + "nodeType": "EventDefinition", + "parameters": { + "id": 11054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11053, + "indexed": false, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11055, + "src": "3592:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3592:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3591:18:39" + }, + "src": "3571:39:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11061, + "name": "TokensSlashed", + "nodeType": "EventDefinition", + "parameters": { + "id": 11060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11057, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11061, + "src": "3635:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3635:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11059, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 11061, + "src": "3661:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3661:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3634:42:39" + }, + "src": "3615:62:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11067, + "name": "TokensSeized", + "nodeType": "EventDefinition", + "parameters": { + "id": 11066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11063, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11067, + "src": "3701:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3701:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11065, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 11067, + "src": "3727:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3727:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3700:42:39" + }, + "src": "3682:61:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11075, + "name": "StakeLocked", + "nodeType": "EventDefinition", + "parameters": { + "id": 11074, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11069, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11075, + "src": "3775:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3775:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11071, + "indexed": false, + "name": "lockCreator", + "nodeType": "VariableDeclaration", + "scope": 11075, + "src": "3809:19:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3809:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11073, + "indexed": false, + "name": "until", + "nodeType": "VariableDeclaration", + "scope": 11075, + "src": "3838:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3838:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3765:92:39" + }, + "src": "3748:110:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11081, + "name": "LockReleased", + "nodeType": "EventDefinition", + "parameters": { + "id": 11080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11077, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11081, + "src": "3882:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3882:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11079, + "indexed": false, + "name": "lockCreator", + "nodeType": "VariableDeclaration", + "scope": 11081, + "src": "3908:19:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3908:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3881:47:39" + }, + "src": "3863:66:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 11087, + "name": "ExpiredLockReleased", + "nodeType": "EventDefinition", + "parameters": { + "id": 11086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11083, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11087, + "src": "3960:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3960:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11085, + "indexed": false, + "name": "lockCreator", + "nodeType": "VariableDeclaration", + "scope": 11087, + "src": "3986:19:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11084, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3986:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3959:47:39" + }, + "src": "3934:73:39" + }, + { + "constant": false, + "id": 11089, + "name": "deployedAt", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4013:25:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4013:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 11091, + "name": "initializationPeriod", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4044:35:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11090, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4044:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 11093, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4124:28:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + }, + "typeName": { + "contractScope": null, + "id": 11092, + "name": "ERC20Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1023, + "src": "4124:13:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11095, + "name": "tokenGrant", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4158:30:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + }, + "typeName": { + "contractScope": null, + "id": 11094, + "name": "TokenGrant", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10702, + "src": "4158:10:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11097, + "name": "escrow", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4194:34:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + }, + "typeName": { + "contractScope": null, + "id": 11096, + "name": "TokenStakingEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13399, + "src": "4194:18:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11099, + "name": "grantStaking", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4235:42:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage" + }, + "typeName": { + "contractScope": null, + "id": 11098, + "name": "GrantStaking.Storage", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 19231, + "src": "4235:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage_ptr", + "typeString": "struct GrantStaking.Storage" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11101, + "name": "locks", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4283:28:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage", + "typeString": "struct Locks.Storage" + }, + "typeName": { + "contractScope": null, + "id": 11100, + "name": "Locks.Storage", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 19752, + "src": "4283:13:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage_ptr", + "typeString": "struct Locks.Storage" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11103, + "name": "topUps", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4317:30:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$20159_storage", + "typeString": "struct TopUps.Storage" + }, + "typeName": { + "contractScope": null, + "id": 11102, + "name": "TopUps.Storage", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 20159, + "src": "4317:14:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$20159_storage_ptr", + "typeString": "struct TopUps.Storage" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": true, + "id": 11106, + "name": "twoWeeks", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4354:44:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4354:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31323039363030", + "id": 11105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4391:7:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1209600_by_1", + "typeString": "int_const 1209600" + }, + "value": "1209600" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 11109, + "name": "twoMonths", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4413:45:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4413:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "35313834303030", + "id": 11108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4451:7:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5184000_by_1", + "typeString": "int_const 5184000" + }, + "value": "5184000" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 11112, + "name": "minimumStakeScheduleStart", + "nodeType": "VariableDeclaration", + "scope": 12435, + "src": "4606:64:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4606:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31353838303432333636", + "id": 11111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4660:10:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1588042366_by_1", + "typeString": "int_const 1588042366" + }, + "value": "1588042366" + }, + "visibility": "internal" + }, + { + "body": { + "id": 11153, + "nodeType": "Block", + "src": "5411:213:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11128, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11093, + "src": "5421:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11129, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11114, + "src": "5429:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "src": "5421:14:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "id": 11131, + "nodeType": "ExpressionStatement", + "src": "5421:14:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11132, + "name": "tokenGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11095, + "src": "5445:10:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11133, + "name": "_tokenGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11116, + "src": "5458:11:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + }, + "src": "5445:24:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + }, + "id": 11135, + "nodeType": "ExpressionStatement", + "src": "5445:24:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11136, + "name": "escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11097, + "src": "5479:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11137, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11118, + "src": "5488:7:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + }, + "src": "5479:16:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + }, + "id": 11139, + "nodeType": "ExpressionStatement", + "src": "5479:16:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11140, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1627, + "src": "5505:8:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_KeepRegistry_$6120", + "typeString": "contract KeepRegistry" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11141, + "name": "_registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11120, + "src": "5516:9:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_KeepRegistry_$6120", + "typeString": "contract KeepRegistry" + } + }, + "src": "5505:20:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_KeepRegistry_$6120", + "typeString": "contract KeepRegistry" + } + }, + "id": 11143, + "nodeType": "ExpressionStatement", + "src": "5505:20:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11144, + "name": "initializationPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11091, + "src": "5535:20:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11145, + "name": "_initializationPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11122, + "src": "5558:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5535:44:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11147, + "nodeType": "ExpressionStatement", + "src": "5535:44:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11148, + "name": "deployedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11089, + "src": "5589:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11149, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28136, + "src": "5602:5:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 11150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5602:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5589:28:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11152, + "nodeType": "ExpressionStatement", + "src": "5589:28:39" + } + ] + }, + "documentation": "@notice Creates a token staking contract for a provided Standard ERC20Burnable token.\n @param _token KEEP token contract.\n @param _tokenGrant KEEP token grant contract.\n @param _escrow Escrow dedicated for this staking contract.\n @param _registry Keep contract registry contract.\n @param _initializationPeriod To avoid certain attacks on work selection, recently created\n operators must wait for a specific period of time before being eligible for work selection.", + "id": 11154, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 11125, + "name": "_registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11120, + "src": "5400:9:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_KeepRegistry_$6120", + "typeString": "contract KeepRegistry" + } + } + ], + "id": 11126, + "modifierName": { + "argumentTypes": null, + "id": 11124, + "name": "Authorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1783, + "src": "5385:14:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Authorizations_$1783_$", + "typeString": "type(contract Authorizations)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5385:25:39" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11114, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 11154, + "src": "5212:20:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + }, + "typeName": { + "contractScope": null, + "id": 11113, + "name": "ERC20Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1023, + "src": "5212:13:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11116, + "name": "_tokenGrant", + "nodeType": "VariableDeclaration", + "scope": 11154, + "src": "5242:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + }, + "typeName": { + "contractScope": null, + "id": 11115, + "name": "TokenGrant", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10702, + "src": "5242:10:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11118, + "name": "_escrow", + "nodeType": "VariableDeclaration", + "scope": 11154, + "src": "5274:26:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + }, + "typeName": { + "contractScope": null, + "id": 11117, + "name": "TokenStakingEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13399, + "src": "5274:18:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11120, + "name": "_registry", + "nodeType": "VariableDeclaration", + "scope": 11154, + "src": "5310:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_KeepRegistry_$6120", + "typeString": "contract KeepRegistry" + }, + "typeName": { + "contractScope": null, + "id": 11119, + "name": "KeepRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6120, + "src": "5310:12:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_KeepRegistry_$6120", + "typeString": "contract KeepRegistry" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11122, + "name": "_initializationPeriod", + "nodeType": "VariableDeclaration", + "scope": 11154, + "src": "5342:29:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5342:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5202:175:39" + }, + "returnParameters": { + "id": 11127, + "nodeType": "ParameterList", + "parameters": [], + "src": "5411:0:39" + }, + "scope": 12435, + "src": "5191:433:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11164, + "nodeType": "Block", + "src": "6025:79:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11161, + "name": "minimumStakeScheduleStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11112, + "src": "6071:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11159, + "name": "MinimumStakeSchedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20126, + "src": "6042:20:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MinimumStakeSchedule_$20126_$", + "typeString": "type(library MinimumStakeSchedule)" + } + }, + "id": 11160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 20125, + "src": "6042:28:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 11162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6042:55:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11158, + "id": 11163, + "nodeType": "Return", + "src": "6035:62:39" + } + ] + }, + "documentation": "@notice Returns minimum amount of KEEP that allows sMPC cluster client to\n participate in the Keep network. Expressed as number with 18-decimal places.\n Initial minimum stake is higher than the final and lowered periodically based\n on the amount of steps and the length of the minimum stake schedule in seconds.", + "id": 11165, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "minimumStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11155, + "nodeType": "ParameterList", + "parameters": [], + "src": "5992:2:39" + }, + "returnParameters": { + "id": 11158, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11157, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11165, + "src": "6016:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11156, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6016:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6015:9:39" + }, + "scope": 12435, + "src": "5971:133:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11181, + "nodeType": "Block", + "src": "6573:102:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11170, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28136, + "src": "6602:5:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 11171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6602:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11174, + "name": "twoMonths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11109, + "src": "6635:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11172, + "name": "deployedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11089, + "src": "6620:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "6620:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6620:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6602:43:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 11178, + "name": "twoMonths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11109, + "src": "6659:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "6602:66:39", + "trueExpression": { + "argumentTypes": null, + "id": 11177, + "name": "twoWeeks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11106, + "src": "6648:8:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11169, + "id": 11180, + "nodeType": "Return", + "src": "6583:85:39" + } + ] + }, + "documentation": "@notice Returns the current value of the undelegation period.\n The staking contract guarantees that an undelegated operator’s stakes\n will stay locked for a period of time after undelegation, and thus\n available as collateral for any work the operator is engaged in.\n The undelegation period is two weeks for the first two months and\n two months after that.", + "id": 11182, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "undelegationPeriod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11166, + "nodeType": "ParameterList", + "parameters": [], + "src": "6540:2:39" + }, + "returnParameters": { + "id": 11169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11168, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11182, + "src": "6564:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6564:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6563:9:39" + }, + "scope": 12435, + "src": "6513:162:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11252, + "nodeType": "Block", + "src": "8202:806:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + }, + "id": 11198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11195, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11188, + "src": "8234:6:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11194, + "name": "ERC20Burnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1023, + "src": "8220:13:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Burnable_$1023_$", + "typeString": "type(contract ERC20Burnable)" + } + }, + "id": 11196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8220:21:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 11197, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11093, + "src": "8245:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "src": "8220:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e7265636f676e697a656420746f6b656e", + "id": 11199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8252:20:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47da9b5e57c99f8cbef65229ca937f6f890e1990ca30174cbf7cd659ecff7e04", + "typeString": "literal_string \"Unrecognized token\"" + }, + "value": "Unrecognized token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47da9b5e57c99f8cbef65229ca937f6f890e1990ca30174cbf7cd659ecff7e04", + "typeString": "literal_string \"Unrecognized token\"" + } + ], + "id": 11193, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "8212:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8212:61:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11201, + "nodeType": "ExpressionStatement", + "src": "8212:61:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11203, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8291:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 11204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8291:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3630", + "id": 11205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8312:2:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_60_by_1", + "typeString": "int_const 60" + }, + "value": "60" + }, + "src": "8291:23:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "436f727275707465642064656c65676174696f6e2064617461", + "id": 11207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8316:27:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09b162eddeba70a64d1881921f98280925c4cc9ff91d7d7c2c0dbd107c95b48b", + "typeString": "literal_string \"Corrupted delegation data\"" + }, + "value": "Corrupted delegation data" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09b162eddeba70a64d1881921f98280925c4cc9ff91d7d7c2c0dbd107c95b48b", + "typeString": "literal_string \"Corrupted delegation data\"" + } + ], + "id": 11202, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "8283:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8283:61:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11209, + "nodeType": "ExpressionStatement", + "src": "8283:61:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11213, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11184, + "src": "8423:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11215, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28238, + "src": "8438:4:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + ], + "id": 11214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8430:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 11216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8430:13:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11217, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11186, + "src": "8445:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11210, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11093, + "src": "8400:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "id": 11212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1208, + "src": "8400:22:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1150_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1150_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 11218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8400:52:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11219, + "nodeType": "ExpressionStatement", + "src": "8400:52:39" + }, + { + "assignments": [11221], + "declarations": [ + { + "constant": false, + "id": 11221, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11252, + "src": "8463:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8463:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11226, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3230", + "id": 11224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8503:2:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + } + ], + "expression": { + "argumentTypes": null, + "id": 11222, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8482:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 11223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 27348, + "src": "8482:20:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (address)" + } + }, + "id": 11225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8482:24:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8463:43:39" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11227, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "8591:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11229, + "indexExpression": { + "argumentTypes": null, + "id": 11228, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11221, + "src": "8601:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8591:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11230, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "8591:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCreationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 27945, + "src": "8591:53:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 11232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8591:55:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 11233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8650:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8591:60:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11250, + "nodeType": "Block", + "src": "8866:136:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11244, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11184, + "src": "8955:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11245, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11186, + "src": "8962:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11246, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11221, + "src": "8970:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11247, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8980:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 11243, + "name": "topUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12296, + "src": "8949:5:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,bytes memory)" + } + }, + "id": 11248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8949:42:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11249, + "nodeType": "ExpressionStatement", + "src": "8949:42:39" + } + ] + }, + "id": 11251, + "nodeType": "IfStatement", + "src": "8587:415:39", + "trueBody": { + "id": 11242, + "nodeType": "Block", + "src": "8653:207:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11236, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11184, + "src": "8813:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11237, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11186, + "src": "8820:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11238, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11221, + "src": "8828:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11239, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8838:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 11235, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12176, + "src": "8804:8:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,bytes memory)" + } + }, + "id": 11240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8804:45:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11241, + "nodeType": "ExpressionStatement", + "src": "8804:45:39" + } + ] + } + } + ] + }, + "documentation": "@notice Receives approval of token transfer and stakes the approved\n amount or adds the approved amount to an existing delegation (a “top-up”).\n In case of a top-up, it is expected that the operator stake is not\n undelegated and that the top-up is performed from the same source of\n tokens as the initial delegation. That is, if the tokens were delegated\n from a grant, top-up has to be performed from the same grant. If the\n delegation was done using liquid tokens, only liquid tokens from the\n same owner can be used to top-up the stake.\n Top-up can not be cancelled so it is important to be careful with the\n amount of KEEP added to the stake.\n @dev Requires that the provided token contract be the same one linked to\n this contract.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and stake.\n @param _token Token contract address.\n @param _extraData Data for stake delegation. This byte array must have\n the following values concatenated:\n - Beneficiary address (20 bytes), ignored for a top-up\n - Operator address (20 bytes)\n - Authorizer address (20 bytes), ignored for a top-up\n - Grant ID (32 bytes) - required only when called by TokenStakingEscrow", + "id": 11253, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "receiveApproval", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11191, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11184, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 11253, + "src": "8094:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11183, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8094:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11186, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 11253, + "src": "8117:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11185, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8117:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11188, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 11253, + "src": "8141:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8141:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11190, + "name": "_extraData", + "nodeType": "VariableDeclaration", + "scope": 11253, + "src": "8165:23:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11189, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8165:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8084:110:39" + }, + "returnParameters": { + "id": 11192, + "nodeType": "ParameterList", + "parameters": [], + "src": "8202:0:39" + }, + "scope": 12435, + "src": "8060:948:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11273, + "nodeType": "Block", + "src": "9304:180:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11258, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "9314:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11260, + "indexExpression": { + "argumentTypes": null, + "id": 11259, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11255, + "src": "9324:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9314:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11261, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "9314:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11264, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11255, + "src": "9377:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11265, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "9400:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11267, + "indexExpression": { + "argumentTypes": null, + "id": 11266, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11255, + "src": "9410:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9400:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11268, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "9400:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11269, + "name": "initializationPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11091, + "src": "9447:20:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11262, + "name": "topUps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "9350:6:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$20159_storage", + "typeString": "struct TopUps.Storage storage ref" + } + }, + "id": 11263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "commit", + "nodeType": "MemberAccess", + "referencedDeclaration": 20347, + "src": "9350:13:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$20159_storage_ptr_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$20159_storage_ptr_$", + "typeString": "function (struct TopUps.Storage storage pointer,address,uint256,uint256) returns (uint256)" + } + }, + "id": 11270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9350:127:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9314:163:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11272, + "nodeType": "ExpressionStatement", + "src": "9314:163:39" + } + ] + }, + "documentation": "@notice Commits pending top-up for the provided operator. If the top-up\n did not pass the initialization period, the function fails.\n @param _operator The operator with a pending top-up that is getting\n committed.", + "id": 11274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "commitTopUp", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11255, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 11274, + "src": "9278:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9278:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9277:19:39" + }, + "returnParameters": { + "id": 11257, + "nodeType": "ParameterList", + "parameters": [], + "src": "9304:0:39" + }, + "scope": 12435, + "src": "9257:227:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11342, + "nodeType": "Block", + "src": "9840:582:39", + "statements": [ + { + "assignments": [11280], + "declarations": [ + { + "constant": false, + "id": 11280, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 11342, + "src": "9850:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9850:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11285, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11281, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "9866:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11283, + "indexExpression": { + "argumentTypes": null, + "id": 11282, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11276, + "src": "9876:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9866:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11284, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 8829, + "src": "9866:26:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9850:42:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11287, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "9923:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9923:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 11289, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11280, + "src": "9937:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9923:19:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11291, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "9962:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9962:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 11293, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11276, + "src": "9976:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9962:23:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9923:62:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11298, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11276, + "src": "10032:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11299, + "name": "tokenGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11095, + "src": "10043:10:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + ], + "expression": { + "argumentTypes": null, + "id": 11296, + "name": "grantStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11099, + "src": "10005:12:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage storage ref" + } + }, + "id": 11297, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canUndelegate", + "nodeType": "MemberAccess", + "referencedDeclaration": 19498, + "src": "10005:26:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$_t_contract$_TokenGrant_$10702_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", + "typeString": "function (struct GrantStaking.Storage storage pointer,address,contract TokenGrant) returns (bool)" + } + }, + "id": 11300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10005:49:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9923:131:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 11302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10068:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 11286, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "9902:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9902:192:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11304, + "nodeType": "ExpressionStatement", + "src": "9902:192:39" + }, + { + "assignments": [11306], + "declarations": [ + { + "constant": false, + "id": 11306, + "name": "operatorParams", + "nodeType": "VariableDeclaration", + "scope": 11342, + "src": "10104:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10104:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11311, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11307, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "10129:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11309, + "indexExpression": { + "argumentTypes": null, + "id": 11308, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11276, + "src": "10139:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10129:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11310, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "10129:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10104:58:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "10181:31:39", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11314, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11306, + "src": "10197:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11313, + "name": "_isInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12314, + "src": "10182:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 11315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10182:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e697469616c697a6564207374616b65", + "id": 11317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10214:19:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_655beb0bac13ffbbd358a950ddf7097242083984e0d10b43e52c0ce160d829ea", + "typeString": "literal_string \"Initialized stake\"" + }, + "value": "Initialized stake" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_655beb0bac13ffbbd358a950ddf7097242083984e0d10b43e52c0ce160d829ea", + "typeString": "literal_string \"Initialized stake\"" + } + ], + "id": 11312, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "10173:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10173:61:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11319, + "nodeType": "ExpressionStatement", + "src": "10173:61:39" + }, + { + "assignments": [11321], + "declarations": [ + { + "constant": false, + "id": 11321, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 11342, + "src": "10245:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10245:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11325, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 11322, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11306, + "src": "10262:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27910, + "src": "10262:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 11324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10262:26:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10245:43:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11326, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "10298:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11328, + "indexExpression": { + "argumentTypes": null, + "id": 11327, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11276, + "src": "10308:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10298:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "10298:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10359:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 11330, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11306, + "src": "10334:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27930, + "src": "10334:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10334:27:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10298:63:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11335, + "nodeType": "ExpressionStatement", + "src": "10298:63:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11337, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11280, + "src": "10390:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11338, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11276, + "src": "10397:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11339, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11321, + "src": "10408:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11336, + "name": "transferOrDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12434, + "src": "10372:17:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10372:43:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11341, + "nodeType": "ExpressionStatement", + "src": "10372:43:39" + } + ] + }, + "documentation": "@notice Cancels stake of tokens within the operator initialization period\n without being subjected to the token lockup for the undelegation period.\n This can be used to undo mistaken delegation to the wrong operator address.\n @param _operator Address of the stake operator.", + "id": 11343, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cancelStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11276, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 11343, + "src": "9814:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11275, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9814:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9813:19:39" + }, + "returnParameters": { + "id": 11278, + "nodeType": "ParameterList", + "parameters": [], + "src": "9840:0:39" + }, + "scope": 12435, + "src": "9793:629:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11354, + "nodeType": "Block", + "src": "10704:57:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11349, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11345, + "src": "10727:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11350, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28136, + "src": "10738:5:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 11351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10738:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11348, + "name": "undelegateAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11446, + "src": "10714:12:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10714:40:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11353, + "nodeType": "ExpressionStatement", + "src": "10714:40:39" + } + ] + }, + "documentation": "@notice Undelegates staked tokens. You will be able to recover your stake by calling\n `recoverStake()` with operator address once undelegation period is over.\n @param _operator Address of the stake operator.", + "id": 11355, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "undelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11345, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 11355, + "src": "10678:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11344, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10678:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10677:19:39" + }, + "returnParameters": { + "id": 11347, + "nodeType": "ParameterList", + "parameters": [], + "src": "10704:0:39" + }, + "scope": 12435, + "src": "10658:103:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11445, + "nodeType": "Block", + "src": "11255:1402:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11363, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "11286:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11286:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 11365, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11357, + "src": "11300:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11286:23:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11367, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "11329:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11329:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11369, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "11343:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11371, + "indexExpression": { + "argumentTypes": null, + "id": 11370, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11357, + "src": "11353:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11343:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11372, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 8829, + "src": "11343:26:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11329:40:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11286:83:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11377, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11357, + "src": "11416:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11378, + "name": "tokenGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11095, + "src": "11427:10:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + ], + "expression": { + "argumentTypes": null, + "id": 11375, + "name": "grantStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11099, + "src": "11389:12:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage storage ref" + } + }, + "id": 11376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "canUndelegate", + "nodeType": "MemberAccess", + "referencedDeclaration": 19498, + "src": "11389:26:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$_t_contract$_TokenGrant_$10702_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", + "typeString": "function (struct GrantStaking.Storage storage pointer,address,contract TokenGrant) returns (bool)" + } + }, + "id": 11379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11389:49:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11286:152:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 11381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11452:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 11362, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "11265:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11265:213:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11383, + "nodeType": "ExpressionStatement", + "src": "11265:213:39" + }, + { + "assignments": [11385], + "declarations": [ + { + "constant": false, + "id": 11385, + "name": "oldParams", + "nodeType": "VariableDeclaration", + "scope": 11445, + "src": "11488:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11488:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11390, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11386, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "11508:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11388, + "indexExpression": { + "argumentTypes": null, + "id": 11387, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11357, + "src": "11518:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11508:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11389, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "11508:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11488:53:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11392, + "name": "_undelegationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11359, + "src": "11572:22:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11393, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28136, + "src": "11598:5:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 11394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11598:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11572:41:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11396, + "name": "_undelegationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11359, + "src": "11633:22:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11401, + "name": "initializationPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11091, + "src": "11711:20:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 11397, + "name": "oldParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11385, + "src": "11674:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCreationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 27945, + "src": "11674:30:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 11399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11674:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "11674:36:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11674:58:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11633:99:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11572:160:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c69642074696d657374616d70", + "id": 11405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11746:19:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4680df59cce98ccd6dc27cbb13244303b66976f7ccd9420f7c7d47834ac73bbf", + "typeString": "literal_string \"Invalid timestamp\"" + }, + "value": "Invalid timestamp" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4680df59cce98ccd6dc27cbb13244303b66976f7ccd9420f7c7d47834ac73bbf", + "typeString": "literal_string \"Invalid timestamp\"" + } + ], + "id": 11391, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "11551:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11551:224:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11407, + "nodeType": "ExpressionStatement", + "src": "11551:224:39" + }, + { + "assignments": [11409], + "declarations": [ + { + "constant": false, + "id": 11409, + "name": "existingUndelegationTimestamp", + "nodeType": "VariableDeclaration", + "scope": 11445, + "src": "11785:37:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11785:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11413, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 11410, + "name": "oldParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11385, + "src": "11837:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getUndelegationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 27977, + "src": "11837:34:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 11412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11837:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11785:88:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11415, + "name": "existingUndelegationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11409, + "src": "11951:29:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 11416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11984:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11951:34:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11418, + "name": "existingUndelegationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11409, + "src": "12072:29:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 11419, + "name": "_undelegationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11359, + "src": "12104:22:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12072:54:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11951:175:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11422, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "12389:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12389:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 11424, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11357, + "src": "12403:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12389:23:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11951:461:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f70657261746f72206d6179206e6f7420706f7374706f6e65", + "id": 11427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12426:27:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_baae0451dc8b8787f0833fc6d6ecd4fa4fec50c467d7195249ba2e75960b24d2", + "typeString": "literal_string \"Operator may not postpone\"" + }, + "value": "Operator may not postpone" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baae0451dc8b8787f0833fc6d6ecd4fa4fec50c467d7195249ba2e75960b24d2", + "typeString": "literal_string \"Operator may not postpone\"" + } + ], + "id": 11414, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "11883:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11883:580:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11429, + "nodeType": "ExpressionStatement", + "src": "11883:580:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11430, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "12473:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11432, + "indexExpression": { + "argumentTypes": null, + "id": 11431, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11357, + "src": "12483:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12473:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11433, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "12473:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11436, + "name": "_undelegationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11359, + "src": "12557:22:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11434, + "name": "oldParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11385, + "src": "12509:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setUndelegationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 27997, + "src": "12509:34:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12509:80:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12473:116:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11439, + "nodeType": "ExpressionStatement", + "src": "12473:116:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11441, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11357, + "src": "12616:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11442, + "name": "_undelegationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11359, + "src": "12627:22:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11440, + "name": "Undelegated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11051, + "src": "12604:11:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12604:46:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11444, + "nodeType": "EmitStatement", + "src": "12599:51:39" + } + ] + }, + "documentation": "@notice Set an undelegation time for staked tokens.\n Undelegation will begin at the specified timestamp.\n You will be able to recover your stake by calling\n `recoverStake()` with operator address once undelegation period is over.\n @param _operator Address of the stake operator.\n @param _undelegationTimestamp The timestamp undelegation is to start at.", + "id": 11446, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "undelegateAt", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11357, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 11446, + "src": "11185:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11356, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11185:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11359, + "name": "_undelegationTimestamp", + "nodeType": "VariableDeclaration", + "scope": 11446, + "src": "11204:30:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11204:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11184:51:39" + }, + "returnParameters": { + "id": 11361, + "nodeType": "ParameterList", + "parameters": [], + "src": "11255:0:39" + }, + "scope": 12435, + "src": "11163:1494:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11521, + "nodeType": "Block", + "src": "12928:714:39", + "statements": [ + { + "assignments": [11452], + "declarations": [ + { + "constant": false, + "id": 11452, + "name": "operatorParams", + "nodeType": "VariableDeclaration", + "scope": 11521, + "src": "12938:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12938:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11457, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11453, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "12963:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11455, + "indexExpression": { + "argumentTypes": null, + "id": 11454, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11448, + "src": "12973:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12963:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "12963:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12938:58:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 11459, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11452, + "src": "13027:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getUndelegationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 27977, + "src": "13027:39:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 11461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13027:41:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 11462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13072:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13027:46:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420756e64656c656761746564", + "id": 11464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13087:17:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fd3788beb72580329c2ed9b644188a5c4298fa00d0816077221edccdf7627650", + "typeString": "literal_string \"Not undelegated\"" + }, + "value": "Not undelegated" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fd3788beb72580329c2ed9b644188a5c4298fa00d0816077221edccdf7627650", + "typeString": "literal_string \"Not undelegated\"" + } + ], + "id": 11458, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "13006:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13006:108:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11466, + "nodeType": "ExpressionStatement", + "src": "13006:108:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11469, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11452, + "src": "13156:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11468, + "name": "_isUndelegatingFinished", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12368, + "src": "13132:23:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 11470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13132:39:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5374696c6c20756e64656c65676174696e67", + "id": 11471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13173:20:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5c8b6b2d9bfe0bc7cfe7f71992388de2796b749ab7f9953c19a7d0dfb8e9822c", + "typeString": "literal_string \"Still undelegating\"" + }, + "value": "Still undelegating" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5c8b6b2d9bfe0bc7cfe7f71992388de2796b749ab7f9953c19a7d0dfb8e9822c", + "typeString": "literal_string \"Still undelegating\"" + } + ], + "id": 11467, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "13124:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13124:70:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11473, + "nodeType": "ExpressionStatement", + "src": "13124:70:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13212:25:39", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11476, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11448, + "src": "13227:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11475, + "name": "isStakeLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11646, + "src": "13213:13:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 11477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13213:24:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4c6f636b6564207374616b65", + "id": 11479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13239:14:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8cc71fd1e5a33aeba89e955430eb2e4809478d33099b44ae4ac9a199c189ae53", + "typeString": "literal_string \"Locked stake\"" + }, + "value": "Locked stake" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8cc71fd1e5a33aeba89e955430eb2e4809478d33099b44ae4ac9a199c189ae53", + "typeString": "literal_string \"Locked stake\"" + } + ], + "id": 11474, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "13204:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13204:50:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11481, + "nodeType": "ExpressionStatement", + "src": "13204:50:39" + }, + { + "assignments": [11483], + "declarations": [ + { + "constant": false, + "id": 11483, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 11521, + "src": "13265:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13265:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11487, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 11484, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11452, + "src": "13282:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27910, + "src": "13282:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 11486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13282:26:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13265:43:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11488, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11483, + "src": "13401:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11493, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11448, + "src": "13435:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 11491, + "name": "topUps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "13421:6:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$20159_storage", + "typeString": "struct TopUps.Storage storage ref" + } + }, + "id": 11492, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "cancel", + "nodeType": "MemberAccess", + "referencedDeclaration": 20381, + "src": "13421:13:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$20159_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$20159_storage_ptr_$", + "typeString": "function (struct TopUps.Storage storage pointer,address) returns (uint256)" + } + }, + "id": 11494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13421:24:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11489, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11483, + "src": "13410:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "13410:10:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13410:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13401:45:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11497, + "nodeType": "ExpressionStatement", + "src": "13401:45:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11498, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "13457:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11500, + "indexExpression": { + "argumentTypes": null, + "id": 11499, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11448, + "src": "13467:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13457:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11501, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "13457:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13518:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 11502, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11452, + "src": "13493:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27930, + "src": "13493:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13493:27:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13457:63:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11507, + "nodeType": "ExpressionStatement", + "src": "13457:63:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11509, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "13548:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11511, + "indexExpression": { + "argumentTypes": null, + "id": 11510, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11448, + "src": "13558:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13548:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11512, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 8829, + "src": "13548:26:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11513, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11448, + "src": "13576:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11514, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11483, + "src": "13587:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11508, + "name": "transferOrDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12434, + "src": "13530:17:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13530:64:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11516, + "nodeType": "ExpressionStatement", + "src": "13530:64:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11518, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11448, + "src": "13625:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11517, + "name": "RecoveredStake", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11055, + "src": "13610:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13610:25:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11520, + "nodeType": "EmitStatement", + "src": "13605:30:39" + } + ] + }, + "documentation": "@notice Recovers staked tokens and transfers them back to the owner.\n Recovering tokens can only be performed when the operator finished\n undelegating.\n @param _operator Operator address.", + "id": 11522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recoverStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11449, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11448, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 11522, + "src": "12902:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12902:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12901:19:39" + }, + "returnParameters": { + "id": 11450, + "nodeType": "ParameterList", + "parameters": [], + "src": "12928:0:39" + }, + "scope": 12435, + "src": "12880:762:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11540, + "nodeType": "Block", + "src": "14241:66:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11533, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "14258:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11535, + "indexExpression": { + "argumentTypes": null, + "id": 11534, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11524, + "src": "14268:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14258:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11536, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "14258:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "unpack", + "nodeType": "MemberAccess", + "referencedDeclaration": 27895, + "src": "14258:40:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256,uint256,uint256)" + } + }, + "id": 11538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14258:42:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 11532, + "id": 11539, + "nodeType": "Return", + "src": "14251:49:39" + } + ] + }, + "documentation": "@notice Gets stake delegation info for the given operator.\n @param _operator Operator address.\n @return amount The amount of tokens the given operator delegated.\n @return createdAt The time when the stake has been delegated.\n @return undelegatedAt The time when undelegation has been requested.\n If undelegation has not been requested, 0 is returned.", + "id": 11541, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDelegationInfo", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11524, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 11541, + "src": "14069:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14069:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14068:19:39" + }, + "returnParameters": { + "id": 11532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11527, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 11541, + "src": "14146:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14146:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11529, + "name": "createdAt", + "nodeType": "VariableDeclaration", + "scope": 11541, + "src": "14174:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14174:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11531, + "name": "undelegatedAt", + "nodeType": "VariableDeclaration", + "scope": 11541, + "src": "14205:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14205:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14132:104:39" + }, + "scope": 12435, + "src": "14042:265:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11590, + "nodeType": "Block", + "src": "14812:378:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11554, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11543, + "src": "14867:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11555, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "14877:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14877:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11553, + "name": "isAuthorizedForOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1713, + "src": "14843:23:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 11557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14843:45:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 11558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14902:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 11552, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "14822:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14822:106:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11560, + "nodeType": "ExpressionStatement", + "src": "14822:106:39" + }, + { + "assignments": [11562], + "declarations": [ + { + "constant": false, + "id": 11562, + "name": "operatorParams", + "nodeType": "VariableDeclaration", + "scope": 11590, + "src": "14939:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11561, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14939:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11567, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11563, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "14964:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11565, + "indexExpression": { + "argumentTypes": null, + "id": 11564, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11543, + "src": "14974:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14964:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11566, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "14964:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14939:57:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11570, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11562, + "src": "15030:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11569, + "name": "_isInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12314, + "src": "15015:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 11571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15015:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e616374697665207374616b65", + "id": 11572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15047:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + }, + "value": "Inactive stake" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + } + ], + "id": 11568, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "15007:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15007:57:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11574, + "nodeType": "ExpressionStatement", + "src": "15007:57:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15082:32:39", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11577, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11562, + "src": "15099:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11576, + "name": "_isUndelegating", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12339, + "src": "15083:15:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 11578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15083:31:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e64656c65676174696e67207374616b65", + "id": 11580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15116:20:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7ff35c91519e88e5ca900aeb20aea0affdbc614d349d23939fe23d06949b79f3", + "typeString": "literal_string \"Undelegating stake\"" + }, + "value": "Undelegating stake" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7ff35c91519e88e5ca900aeb20aea0affdbc614d349d23939fe23d06949b79f3", + "typeString": "literal_string \"Undelegating stake\"" + } + ], + "id": 11575, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "15074:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15074:63:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11582, + "nodeType": "ExpressionStatement", + "src": "15074:63:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11586, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11543, + "src": "15164:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11587, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11545, + "src": "15174:8:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11583, + "name": "locks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11101, + "src": "15148:5:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage", + "typeString": "struct Locks.Storage storage ref" + } + }, + "id": 11585, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lockStake", + "nodeType": "MemberAccess", + "referencedDeclaration": 19797, + "src": "15148:15:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", + "typeString": "function (struct Locks.Storage storage pointer,address,uint256)" + } + }, + "id": 11588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15148:35:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11589, + "nodeType": "ExpressionStatement", + "src": "15148:35:39" + } + ] + }, + "documentation": "@notice Locks given operator stake for the specified duration.\n Locked stake may not be recovered until the lock expires or is released,\n even if the normal undelegation period has passed.\n Only previously authorized operator contract can lock the stake.\n @param operator Operator address.\n @param duration Lock duration in seconds.", + "id": 11591, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11548, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "14796:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14796:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 11550, + "modifierName": { + "argumentTypes": null, + "id": 11547, + "name": "onlyApprovedOperatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1640, + "src": "14767:28:39", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "14767:40:39" + } + ], + "name": "lockStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11546, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11543, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11591, + "src": "14708:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14708:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11545, + "name": "duration", + "nodeType": "VariableDeclaration", + "scope": 11591, + "src": "14726:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14726:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14707:36:39" + }, + "returnParameters": { + "id": 11551, + "nodeType": "ParameterList", + "parameters": [], + "src": "14812:0:39" + }, + "scope": 12435, + "src": "14689:501:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11611, + "nodeType": "Block", + "src": "15876:160:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11598, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11593, + "src": "15931:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11599, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "15941:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15941:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11597, + "name": "isAuthorizedForOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1713, + "src": "15907:23:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 11601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15907:45:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 11602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15966:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 11596, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "15886:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15886:106:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11604, + "nodeType": "ExpressionStatement", + "src": "15886:106:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11608, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11593, + "src": "16020:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 11605, + "name": "locks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11101, + "src": "16002:5:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage", + "typeString": "struct Locks.Storage storage ref" + } + }, + "id": 11607, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "releaseLock", + "nodeType": "MemberAccess", + "referencedDeclaration": 19821, + "src": "16002:17:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", + "typeString": "function (struct Locks.Storage storage pointer,address)" + } + }, + "id": 11609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16002:27:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11610, + "nodeType": "ExpressionStatement", + "src": "16002:27:39" + } + ] + }, + "documentation": "@notice Removes a lock the caller had previously placed on the operator.\n @dev Only for operator contracts.\n To remove expired or disabled locks, use `releaseExpiredLocks`.\n The authorization check ensures that the caller must have been able\n to place a lock on the operator sometime in the past.\n We don't need to check for current approval status of the caller\n because unlocking stake cannot harm the operator\n nor interfere with other operator contracts.\n Therefore even disabled operator contracts may freely unlock stake.\n @param operator Operator address.", + "id": 11612, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unlockStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11593, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11612, + "src": "15851:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15851:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15850:18:39" + }, + "returnParameters": { + "id": 11595, + "nodeType": "ParameterList", + "parameters": [], + "src": "15876:0:39" + }, + "scope": 12435, + "src": "15830:206:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11629, + "nodeType": "Block", + "src": "16528:84:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11622, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11614, + "src": "16563:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11623, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11616, + "src": "16573:16:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11625, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28238, + "src": "16599:4:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + ], + "id": 11624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16591:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 11626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16591:13:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 11619, + "name": "locks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11101, + "src": "16538:5:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage", + "typeString": "struct Locks.Storage storage ref" + } + }, + "id": 11621, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "releaseExpiredLock", + "nodeType": "MemberAccess", + "referencedDeclaration": 19888, + "src": "16538:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$_t_address_$_t_address_$returns$__$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", + "typeString": "function (struct Locks.Storage storage pointer,address,address,address)" + } + }, + "id": 11627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16538:67:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11628, + "nodeType": "ExpressionStatement", + "src": "16538:67:39" + } + ] + }, + "documentation": "@notice Removes the lock of the specified operator contract\n if the lock has expired or the contract has been disabled.\n @dev Necessary for removing locks placed by contracts\n that have been disabled by the panic button.\n Also applicable to prevent inadvertent DoS of `recoverStake`\n if too many operator contracts have failed to clean up their locks.", + "id": 11630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "releaseExpiredLock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11614, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11630, + "src": "16465:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11613, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16465:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11616, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 11630, + "src": "16483:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16483:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16464:44:39" + }, + "returnParameters": { + "id": 11618, + "nodeType": "ParameterList", + "parameters": [], + "src": "16528:0:39" + }, + "scope": 12435, + "src": "16437:175:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11645, + "nodeType": "Block", + "src": "16847:68:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11639, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11632, + "src": "16884:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11641, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28238, + "src": "16902:4:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + ], + "id": 11640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16894:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 11642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16894:13:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 11637, + "name": "locks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11101, + "src": "16864:5:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage", + "typeString": "struct Locks.Storage storage ref" + } + }, + "id": 11638, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isStakeLocked", + "nodeType": "MemberAccess", + "referencedDeclaration": 19955, + "src": "16864:19:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", + "typeString": "function (struct Locks.Storage storage pointer,address,address) view returns (bool)" + } + }, + "id": 11643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16864:44:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11636, + "id": 11644, + "nodeType": "Return", + "src": "16857:51:39" + } + ] + }, + "documentation": "@notice Check whether the operator has any active locks\n that haven't expired yet\n and whose creators aren't disabled by the panic button.", + "id": 11646, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isStakeLocked", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11632, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11646, + "src": "16802:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16802:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16801:18:39" + }, + "returnParameters": { + "id": 11636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11635, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11646, + "src": "16841:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11634, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16841:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16840:6:39" + }, + "scope": 12435, + "src": "16779:136:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11662, + "nodeType": "Block", + "src": "17321:48:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11659, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11648, + "src": "17353:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 11657, + "name": "locks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11101, + "src": "17338:5:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage", + "typeString": "struct Locks.Storage storage ref" + } + }, + "id": 11658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "getLocks", + "nodeType": "MemberAccess", + "referencedDeclaration": 20064, + "src": "17338:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", + "typeString": "function (struct Locks.Storage storage pointer,address) view returns (address[] memory,uint256[] memory)" + } + }, + "id": 11660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17338:24:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(address[] memory,uint256[] memory)" + } + }, + "functionReturnParameters": 11656, + "id": 11661, + "nodeType": "Return", + "src": "17331:31:39" + } + ] + }, + "documentation": "@notice Get the locks placed on the operator.\n @return creators The addresses of operator contracts\n that have placed a lock on the operator.\n @return expirations The expiration times\n of the locks placed on the operator.", + "id": 11663, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLocks", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11648, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11663, + "src": "17197:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11647, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17197:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17196:18:39" + }, + "returnParameters": { + "id": 11656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11652, + "name": "creators", + "nodeType": "VariableDeclaration", + "scope": 11663, + "src": "17260:25:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 11650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17260:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11651, + "length": null, + "nodeType": "ArrayTypeName", + "src": "17260:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11655, + "name": "expirations", + "nodeType": "VariableDeclaration", + "scope": 11663, + "src": "17287:28:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 11653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17287:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11654, + "length": null, + "nodeType": "ArrayTypeName", + "src": "17287:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17259:57:39" + }, + "scope": 12435, + "src": "17179:190:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11803, + "nodeType": "Block", + "src": "17819:1346:39", + "statements": [ + { + "assignments": [11676], + "declarations": [ + { + "constant": false, + "id": 11676, + "name": "totalAmountToBurn", + "nodeType": "VariableDeclaration", + "scope": 11803, + "src": "17829:25:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17829:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11677, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "17829:25:39" + }, + { + "assignments": [11679], + "declarations": [ + { + "constant": false, + "id": 11679, + "name": "authoritySource", + "nodeType": "VariableDeclaration", + "scope": 11803, + "src": "17864:23:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17864:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11684, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11681, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "17909:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17909:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11680, + "name": "getAuthoritySource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "17890:18:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } + }, + "id": 11683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17890:30:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17864:56:39" + }, + { + "body": { + "id": 11795, + "nodeType": "Block", + "src": "17987:1132:39", + "statements": [ + { + "assignments": [11697], + "declarations": [ + { + "constant": false, + "id": 11697, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11795, + "src": "18001:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18001:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11701, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11698, + "name": "misbehavedOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11668, + "src": "18020:19:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 11700, + "indexExpression": { + "argumentTypes": null, + "id": 11699, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11686, + "src": "18040:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18020:22:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18001:41:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11703, + "name": "authorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1621, + "src": "18081:14:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 11705, + "indexExpression": { + "argumentTypes": null, + "id": 11704, + "name": "authoritySource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11679, + "src": "18096:15:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18081:31:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11707, + "indexExpression": { + "argumentTypes": null, + "id": 11706, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "18113:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18081:41:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 11708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18140:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 11702, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "18056:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18056:114:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11710, + "nodeType": "ExpressionStatement", + "src": "18056:114:39" + }, + { + "assignments": [11712], + "declarations": [ + { + "constant": false, + "id": 11712, + "name": "operatorParams", + "nodeType": "VariableDeclaration", + "scope": 11795, + "src": "18185:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18185:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11717, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11713, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "18210:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11715, + "indexExpression": { + "argumentTypes": null, + "id": 11714, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "18220:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18210:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11716, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "18210:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18185:57:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11720, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11712, + "src": "18279:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11719, + "name": "_isInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12314, + "src": "18264:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 11721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18264:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e616374697665207374616b65", + "id": 11722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18296:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + }, + "value": "Inactive stake" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + } + ], + "id": 11718, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "18256:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18256:57:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11724, + "nodeType": "ExpressionStatement", + "src": "18256:57:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "18353:55:39", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11727, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "18371:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11728, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11712, + "src": "18381:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11729, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "18397:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18397:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11726, + "name": "_isStakeReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12390, + "src": "18354:16:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,uint256,address) view returns (bool)" + } + }, + "id": 11731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18354:54:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5374616b652069732072656c6561736564", + "id": 11733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18426:19:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", + "typeString": "literal_string \"Stake is released\"" + }, + "value": "Stake is released" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", + "typeString": "literal_string \"Stake is released\"" + } + ], + "id": 11725, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "18328:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18328:131:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11735, + "nodeType": "ExpressionStatement", + "src": "18328:131:39" + }, + { + "assignments": [11737], + "declarations": [ + { + "constant": false, + "id": 11737, + "name": "currentAmount", + "nodeType": "VariableDeclaration", + "scope": 11795, + "src": "18474:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18474:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11741, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 11738, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11712, + "src": "18498:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27910, + "src": "18498:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 11740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18498:26:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18474:50:39" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11742, + "name": "currentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11737, + "src": "18543:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 11743, + "name": "amountToSlash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11665, + "src": "18559:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18543:29:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11793, + "nodeType": "Block", + "src": "18810:299:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11768, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11676, + "src": "18828:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11771, + "name": "amountToSlash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11665, + "src": "18870:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11769, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11676, + "src": "18848:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "18848:21:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18848:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18828:56:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11774, + "nodeType": "ExpressionStatement", + "src": "18828:56:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11775, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "18902:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11777, + "indexExpression": { + "argumentTypes": null, + "id": 11776, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "18912:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18902:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11778, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "18902:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11783, + "name": "amountToSlash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11665, + "src": "19001:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11781, + "name": "currentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11737, + "src": "18983:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "18983:17:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18983:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11779, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11712, + "src": "18937:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27930, + "src": "18937:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18937:96:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18902:131:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11787, + "nodeType": "ExpressionStatement", + "src": "18902:131:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11789, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "19070:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11790, + "name": "amountToSlash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11665, + "src": "19080:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11788, + "name": "TokensSlashed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11061, + "src": "19056:13:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19056:38:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11792, + "nodeType": "EmitStatement", + "src": "19051:43:39" + } + ] + }, + "id": 11794, + "nodeType": "IfStatement", + "src": "18539:570:39", + "trueBody": { + "id": 11767, + "nodeType": "Block", + "src": "18574:230:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11745, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11676, + "src": "18592:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11748, + "name": "currentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11737, + "src": "18634:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11746, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11676, + "src": "18612:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "18612:21:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18612:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18592:56:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11751, + "nodeType": "ExpressionStatement", + "src": "18592:56:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11752, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "18666:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11754, + "indexExpression": { + "argumentTypes": null, + "id": 11753, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "18676:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18666:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "18666:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18726:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 11756, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11712, + "src": "18701:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27930, + "src": "18701:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18701:27:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18666:62:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11761, + "nodeType": "ExpressionStatement", + "src": "18666:62:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11763, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "18765:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11764, + "name": "currentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11737, + "src": "18775:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11762, + "name": "TokensSlashed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11061, + "src": "18751:13:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18751:38:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11766, + "nodeType": "EmitStatement", + "src": "18746:43:39" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11689, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11686, + "src": "17950:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11690, + "name": "misbehavedOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11668, + "src": "17954:19:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 11691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17954:26:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17950:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11796, + "initializationExpression": { + "assignments": [11686], + "declarations": [ + { + "constant": false, + "id": 11686, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 11796, + "src": "17935:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11685, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17935:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11688, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 11687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17947:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17935:13:39" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 11694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "17982:3:39", + "subExpression": { + "argumentTypes": null, + "id": 11693, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11686, + "src": "17982:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11695, + "nodeType": "ExpressionStatement", + "src": "17982:3:39" + }, + "nodeType": "ForStatement", + "src": "17930:1189:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11800, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11676, + "src": "19140:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11797, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11093, + "src": "19129:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "id": 11799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 1009, + "src": "19129:10:39", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 11801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19129:29:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11802, + "nodeType": "ExpressionStatement", + "src": "19129:29:39" + } + ] + }, + "documentation": "@notice Slash provided token amount from every member in the misbehaved\n operators array and burn 100% of all the tokens.\n @param amountToSlash Token amount to slash from every misbehaved operator.\n @param misbehavedOperators Array of addresses to seize the tokens from.", + "id": 11804, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11671, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "17803:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17803:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 11673, + "modifierName": { + "argumentTypes": null, + "id": 11670, + "name": "onlyApprovedOperatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1640, + "src": "17774:28:39", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "17774:40:39" + } + ], + "name": "slash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11665, + "name": "amountToSlash", + "nodeType": "VariableDeclaration", + "scope": 11804, + "src": "17690:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17690:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11668, + "name": "misbehavedOperators", + "nodeType": "VariableDeclaration", + "scope": 11804, + "src": "17713:36:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 11666, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17713:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11667, + "length": null, + "nodeType": "ArrayTypeName", + "src": "17713:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17689:61:39" + }, + "returnParameters": { + "id": 11674, + "nodeType": "ParameterList", + "parameters": [], + "src": "17819:0:39" + }, + "scope": 12435, + "src": "17675:1490:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11969, + "nodeType": "Block", + "src": "19933:1530:39", + "statements": [ + { + "assignments": [11821], + "declarations": [ + { + "constant": false, + "id": 11821, + "name": "totalAmountToBurn", + "nodeType": "VariableDeclaration", + "scope": 11969, + "src": "19943:25:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11820, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19943:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11822, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "19943:25:39" + }, + { + "assignments": [11824], + "declarations": [ + { + "constant": false, + "id": 11824, + "name": "authoritySource", + "nodeType": "VariableDeclaration", + "scope": 11969, + "src": "19978:23:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11823, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19978:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11829, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11826, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "20023:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20023:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11825, + "name": "getAuthoritySource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "20004:18:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } + }, + "id": 11828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20004:30:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19978:56:39" + }, + { + "body": { + "id": 11940, + "nodeType": "Block", + "src": "20101:1130:39", + "statements": [ + { + "assignments": [11842], + "declarations": [ + { + "constant": false, + "id": 11842, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 11940, + "src": "20115:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11841, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20115:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11846, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11843, + "name": "misbehavedOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11813, + "src": "20134:19:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 11845, + "indexExpression": { + "argumentTypes": null, + "id": 11844, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11831, + "src": "20154:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20134:22:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20115:41:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11848, + "name": "authorizations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1621, + "src": "20195:14:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 11850, + "indexExpression": { + "argumentTypes": null, + "id": 11849, + "name": "authoritySource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11824, + "src": "20210:15:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20195:31:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11852, + "indexExpression": { + "argumentTypes": null, + "id": 11851, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11842, + "src": "20227:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20195:41:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 11853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20254:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 11847, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "20170:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20170:114:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11855, + "nodeType": "ExpressionStatement", + "src": "20170:114:39" + }, + { + "assignments": [11857], + "declarations": [ + { + "constant": false, + "id": 11857, + "name": "operatorParams", + "nodeType": "VariableDeclaration", + "scope": 11940, + "src": "20299:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11856, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20299:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11862, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11858, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "20324:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11860, + "indexExpression": { + "argumentTypes": null, + "id": 11859, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11842, + "src": "20334:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20324:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11861, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "20324:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20299:57:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11865, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11857, + "src": "20393:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11864, + "name": "_isInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12314, + "src": "20378:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 11866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20378:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e616374697665207374616b65", + "id": 11867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20410:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + }, + "value": "Inactive stake" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + } + ], + "id": 11863, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "20370:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20370:57:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11869, + "nodeType": "ExpressionStatement", + "src": "20370:57:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "20467:55:39", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11872, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11842, + "src": "20485:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11873, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11857, + "src": "20495:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11874, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "20511:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20511:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11871, + "name": "_isStakeReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12390, + "src": "20468:16:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,uint256,address) view returns (bool)" + } + }, + "id": 11876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20468:54:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5374616b652069732072656c6561736564", + "id": 11878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20540:19:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", + "typeString": "literal_string \"Stake is released\"" + }, + "value": "Stake is released" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", + "typeString": "literal_string \"Stake is released\"" + } + ], + "id": 11870, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "20442:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20442:131:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11880, + "nodeType": "ExpressionStatement", + "src": "20442:131:39" + }, + { + "assignments": [11882], + "declarations": [ + { + "constant": false, + "id": 11882, + "name": "currentAmount", + "nodeType": "VariableDeclaration", + "scope": 11940, + "src": "20588:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20588:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11886, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 11883, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11857, + "src": "20612:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27910, + "src": "20612:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 11885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20612:26:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20588:50:39" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11887, + "name": "currentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11882, + "src": "20657:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 11888, + "name": "amountToSeize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11806, + "src": "20673:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20657:29:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11938, + "nodeType": "Block", + "src": "20923:298:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11913, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11821, + "src": "20941:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11916, + "name": "amountToSeize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11806, + "src": "20983:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11914, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11821, + "src": "20961:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "20961:21:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20961:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20941:56:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11919, + "nodeType": "ExpressionStatement", + "src": "20941:56:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11920, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "21015:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11922, + "indexExpression": { + "argumentTypes": null, + "id": 11921, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11842, + "src": "21025:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21015:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11923, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "21015:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11928, + "name": "amountToSeize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11806, + "src": "21114:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11926, + "name": "currentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11882, + "src": "21096:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "21096:17:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21096:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11924, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11857, + "src": "21050:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27930, + "src": "21050:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21050:96:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21015:131:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11932, + "nodeType": "ExpressionStatement", + "src": "21015:131:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11934, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11842, + "src": "21182:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11935, + "name": "amountToSeize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11806, + "src": "21192:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11933, + "name": "TokensSeized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11067, + "src": "21169:12:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21169:37:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11937, + "nodeType": "EmitStatement", + "src": "21164:42:39" + } + ] + }, + "id": 11939, + "nodeType": "IfStatement", + "src": "20653:568:39", + "trueBody": { + "id": 11912, + "nodeType": "Block", + "src": "20688:229:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11890, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11821, + "src": "20706:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11893, + "name": "currentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11882, + "src": "20748:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11891, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11821, + "src": "20726:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "20726:21:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20726:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20706:56:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11896, + "nodeType": "ExpressionStatement", + "src": "20706:56:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11897, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "20780:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11899, + "indexExpression": { + "argumentTypes": null, + "id": 11898, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11842, + "src": "20790:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20780:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11900, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "20780:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20840:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 11901, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11857, + "src": "20815:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27930, + "src": "20815:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20815:27:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20780:62:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11906, + "nodeType": "ExpressionStatement", + "src": "20780:62:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11908, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11842, + "src": "20878:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11909, + "name": "currentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11882, + "src": "20888:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11907, + "name": "TokensSeized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11067, + "src": "20865:12:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20865:37:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11911, + "nodeType": "EmitStatement", + "src": "20860:42:39" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11834, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11831, + "src": "20064:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11835, + "name": "misbehavedOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11813, + "src": "20068:19:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 11836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20068:26:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20064:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11941, + "initializationExpression": { + "assignments": [11831], + "declarations": [ + { + "constant": false, + "id": 11831, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 11941, + "src": "20049:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20049:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11833, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 11832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20061:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "20049:13:39" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 11839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "20096:3:39", + "subExpression": { + "argumentTypes": null, + "id": 11838, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11831, + "src": "20096:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11840, + "nodeType": "ExpressionStatement", + "src": "20096:3:39" + }, + "nodeType": "ForStatement", + "src": "20044:1187:39" + }, + { + "assignments": [11943], + "declarations": [ + { + "constant": false, + "id": 11943, + "name": "tattletaleReward", + "nodeType": "VariableDeclaration", + "scope": 11969, + "src": "21241:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21241:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11952, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11950, + "name": "rewardMultiplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11808, + "src": "21319:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "35", + "id": 11946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21307:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "expression": { + "argumentTypes": null, + "id": 11944, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11821, + "src": "21281:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "percent", + "nodeType": "MemberAccess", + "referencedDeclaration": 28042, + "src": "21281:25:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21281:28:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 11948, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "21280:30:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "percent", + "nodeType": "MemberAccess", + "referencedDeclaration": 28042, + "src": "21280:38:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21280:56:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21241:95:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11956, + "name": "tattletale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11810, + "src": "21366:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11957, + "name": "tattletaleReward", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11943, + "src": "21378:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11953, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11093, + "src": "21347:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "id": 11955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1183, + "src": "21347:18:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1150_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1150_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 11958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21347:48:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11959, + "nodeType": "ExpressionStatement", + "src": "21347:48:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11965, + "name": "tattletaleReward", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11943, + "src": "21438:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11963, + "name": "totalAmountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11821, + "src": "21416:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "21416:21:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21416:39:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11960, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11093, + "src": "21405:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "id": 11962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 1009, + "src": "21405:10:39", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 11967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21405:51:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11968, + "nodeType": "ExpressionStatement", + "src": "21405:51:39" + } + ] + }, + "documentation": "@notice Seize provided token amount from every member in the misbehaved\n operators array. The tattletale is rewarded with 5% of the total seized\n amount scaled by the reward adjustment parameter and the rest 95% is burned.\n @param amountToSeize Token amount to seize from every misbehaved operator.\n @param rewardMultiplier Reward adjustment in percentage. Min 1% and 100% max.\n @param tattletale Address to receive the 5% reward.\n @param misbehavedOperators Array of addresses to seize the tokens from.", + "id": 11970, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11816, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "19921:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19921:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 11818, + "modifierName": { + "argumentTypes": null, + "id": 11815, + "name": "onlyApprovedOperatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1640, + "src": "19892:28:39", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "19892:40:39" + } + ], + "name": "seize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11806, + "name": "amountToSeize", + "nodeType": "VariableDeclaration", + "scope": 11970, + "src": "19749:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11805, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19749:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11808, + "name": "rewardMultiplier", + "nodeType": "VariableDeclaration", + "scope": 11970, + "src": "19780:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19780:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11810, + "name": "tattletale", + "nodeType": "VariableDeclaration", + "scope": 11970, + "src": "19814:18:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11809, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19814:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11813, + "name": "misbehavedOperators", + "nodeType": "VariableDeclaration", + "scope": 11970, + "src": "19842:36:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 11811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19842:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11812, + "length": null, + "nodeType": "ArrayTypeName", + "src": "19842:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19739:145:39" + }, + "returnParameters": { + "id": 11819, + "nodeType": "ParameterList", + "parameters": [], + "src": "19933:0:39" + }, + "scope": 12435, + "src": "19725:1738:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 12000, + "nodeType": "Block", + "src": "21783:189:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11978, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "21801:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21801:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11980, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "21815:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11982, + "indexExpression": { + "argumentTypes": null, + "id": 11981, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11972, + "src": "21825:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21815:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11983, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 8829, + "src": "21815:25:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21801:39:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 11985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21842:16:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 11977, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "21793:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21793:66:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11987, + "nodeType": "ExpressionStatement", + "src": "21793:66:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 11993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11988, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "21869:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 11990, + "indexExpression": { + "argumentTypes": null, + "id": 11989, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11972, + "src": "21879:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21869:19:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 11991, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 8829, + "src": "21869:25:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11992, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11974, + "src": "21897:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21869:36:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11994, + "nodeType": "ExpressionStatement", + "src": "21869:36:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11996, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11972, + "src": "21946:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11997, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11974, + "src": "21956:8:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11995, + "name": "StakeOwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11033, + "src": "21920:25:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 11998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21920:45:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11999, + "nodeType": "EmitStatement", + "src": "21915:50:39" + } + ] + }, + "documentation": "@notice Allows the current staking relationship owner to transfer the\n ownership to someone else.\n @param operator Address of the stake operator.\n @param newOwner Address of the new staking relationship owner.", + "id": 12001, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferStakeOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11975, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11972, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 12001, + "src": "21740:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21740:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11974, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 12001, + "src": "21758:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21758:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21739:36:39" + }, + "returnParameters": { + "id": 11976, + "nodeType": "ParameterList", + "parameters": [], + "src": "21783:0:39" + }, + "scope": 12435, + "src": "21708:264:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 12038, + "nodeType": "Block", + "src": "22713:735:39", + "statements": [ + { + "assignments": [12011], + "declarations": [ + { + "constant": false, + "id": 12011, + "name": "operatorParams", + "nodeType": "VariableDeclaration", + "scope": 12038, + "src": "22723:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12010, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22723:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12016, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12012, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "22748:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 12014, + "indexExpression": { + "argumentTypes": null, + "id": 12013, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12003, + "src": "22758:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22748:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 12015, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "22748:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22723:58:39" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12018, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12003, + "src": "23247:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12019, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12005, + "src": "23258:17:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12017, + "name": "isAuthorizedForOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1713, + "src": "23223:23:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 12020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23223:53:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12022, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12011, + "src": "23307:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12021, + "name": "_isInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12314, + "src": "23292:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 12023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23292:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23223:99:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 12028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "23338:32:39", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12026, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12011, + "src": "23355:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12025, + "name": "_isUndelegating", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12339, + "src": "23339:15:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 12027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23339:31:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23223:147:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 12037, + "nodeType": "IfStatement", + "src": "23206:236:39", + "trueBody": { + "id": 12036, + "nodeType": "Block", + "src": "23381:61:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 12030, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12008, + "src": "23395:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 12031, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12011, + "src": "23405:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27910, + "src": "23405:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 12033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23405:26:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23395:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12035, + "nodeType": "ExpressionStatement", + "src": "23395:36:39" + } + ] + } + } + ] + }, + "documentation": "@notice Gets the eligible stake balance of the specified address.\n An eligible stake is a stake that passed the initialization period\n and is not currently undelegating. Also, the operator had to approve\n the specified operator contract.\n\n /// Operator with a minimum required amount of eligible stake can join the\n network and participate in new work selection.\n\n /// @param _operator address of stake operator.\n @param _operatorContract address of operator contract.\n @return an uint256 representing the eligible stake balance.", + "id": 12039, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eligibleStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12003, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 12039, + "src": "22601:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22601:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12005, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 12039, + "src": "22620:25:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22620:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "22600:46:39" + }, + "returnParameters": { + "id": 12009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12008, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 12039, + "src": "22692:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22692:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "22691:17:39" + }, + "scope": 12435, + "src": "22578:870:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 12078, + "nodeType": "Block", + "src": "24584:351:39", + "statements": [ + { + "assignments": [12049], + "declarations": [ + { + "constant": false, + "id": 12049, + "name": "operatorParams", + "nodeType": "VariableDeclaration", + "scope": 12078, + "src": "24594:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24594:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12054, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12050, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "24619:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 12052, + "indexExpression": { + "argumentTypes": null, + "id": 12051, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12041, + "src": "24629:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24619:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 12053, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "24619:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24594:58:39" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12056, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12041, + "src": "24703:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12057, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12043, + "src": "24714:17:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12055, + "name": "isAuthorizedForOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1713, + "src": "24679:23:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 12058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24679:53:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12060, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12049, + "src": "24763:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12059, + "name": "_isInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12314, + "src": "24748:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 12061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24748:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "24679:99:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 12068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "24794:63:39", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12064, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12041, + "src": "24812:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12065, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12049, + "src": "24823:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12066, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12043, + "src": "24839:17:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12063, + "name": "_isStakeReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12390, + "src": "24795:16:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,uint256,address) view returns (bool)" + } + }, + "id": 12067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24795:62:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "24679:178:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 12077, + "nodeType": "IfStatement", + "src": "24662:267:39", + "trueBody": { + "id": 12076, + "nodeType": "Block", + "src": "24868:61:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 12070, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12046, + "src": "24882:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 12071, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12049, + "src": "24892:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 27910, + "src": "24892:24:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 12073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24892:26:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24882:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12075, + "nodeType": "ExpressionStatement", + "src": "24882:36:39" + } + ] + } + } + ] + }, + "documentation": "@notice Gets the active stake balance of the specified address.\n An active stake is a stake that passed the initialization period,\n and may be in the process of undelegation\n but has not been released yet,\n either because the undelegation period is not over,\n or because the operator contract has an active lock on the operator.\n Also, the operator had to approve the specified operator contract.\n\n /// The difference between eligible stake is that active stake does not make\n the operator eligible for work selection but it may be still finishing\n earlier work until the stake is released.\n Operator with a minimum required\n amount of active stake can join the network but cannot be selected to any\n new work.\n\n /// @param _operator address of stake operator.\n @param _operatorContract address of operator contract.\n @return an uint256 representing the eligible stake balance.", + "id": 12079, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "activeStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12041, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "24472:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24472:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12043, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "24491:25:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24491:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24471:46:39" + }, + "returnParameters": { + "id": 12047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12046, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "24563:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24563:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24562:17:39" + }, + "scope": 12435, + "src": "24451:484:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 12096, + "nodeType": "Block", + "src": "25696:79:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12089, + "name": "staker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12081, + "src": "25725:6:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12090, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12083, + "src": "25733:16:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12088, + "name": "activeStake", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12079, + "src": "25713:11:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 12091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25713:37:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12092, + "name": "minimumStake", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11165, + "src": "25754:12:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 12093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25754:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25713:55:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 12087, + "id": 12095, + "nodeType": "Return", + "src": "25706:62:39" + } + ] + }, + "documentation": "@notice Checks if the specified account has enough active stake to become\n network operator and that the specified operator contract has been\n authorized for potential slashing.\n\n /// Having the required minimum of active stake makes the operator eligible\n to join the network. If the active stake is not currently undelegating,\n operator is also eligible for work selection.\n\n /// @param staker Staker's address\n @param operatorContract Operator contract's address\n @return True if has enough active stake to participate in the network,\n false otherwise.", + "id": 12097, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasMinimumStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12081, + "name": "staker", + "nodeType": "VariableDeclaration", + "scope": 12097, + "src": "25599:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25599:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12083, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 12097, + "src": "25615:24:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25615:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25598:42:39" + }, + "returnParameters": { + "id": 12087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12086, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 12097, + "src": "25686:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12085, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25686:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25685:6:39" + }, + "scope": 12435, + "src": "25574:201:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 12175, + "nodeType": "Block", + "src": "26320:699:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12109, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12101, + "src": "26338:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12110, + "name": "minimumStake", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11165, + "src": "26348:12:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 12111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26348:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26338:24:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4c657373207468616e20746865206d696e696d756d207374616b65", + "id": 12113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26364:29:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c6d66e5d14df06ecd5772a76d2f19421e7b2d8605daf8bd076cb516603943b67", + "typeString": "literal_string \"Less than the minimum stake\"" + }, + "value": "Less than the minimum stake" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c6d66e5d14df06ecd5772a76d2f19421e7b2d8605daf8bd076cb516603943b67", + "typeString": "literal_string \"Less than the minimum stake\"" + } + ], + "id": 12108, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "26330:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26330:64:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12115, + "nodeType": "ExpressionStatement", + "src": "26330:64:39" + }, + { + "assignments": [12117], + "declarations": [ + { + "constant": false, + "id": 12117, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 12175, + "src": "26405:27:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 12116, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26405:15:39", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12126, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26472:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 12120, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "26451:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 12121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 27348, + "src": "26451:20:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (address)" + } + }, + "id": 12123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26451:23:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26443:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": "uint160" + }, + "id": 12124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26443:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 12118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26435:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 12125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26435:41:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26405:71:39" + }, + { + "assignments": [12128], + "declarations": [ + { + "constant": false, + "id": 12128, + "name": "authorizer", + "nodeType": "VariableDeclaration", + "scope": 12175, + "src": "26486:18:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26486:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12133, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3430", + "id": 12131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26528:2:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + } + ], + "expression": { + "argumentTypes": null, + "id": 12129, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "26507:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 12130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 27348, + "src": "26507:20:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (address)" + } + }, + "id": 12132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26507:24:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26486:45:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 12149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12134, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "26542:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 12136, + "indexExpression": { + "argumentTypes": null, + "id": 12135, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12103, + "src": "26552:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "26542:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12140, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12101, + "src": "26607:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12141, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28136, + "src": "26615:5:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 12142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26615:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 12143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26632:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 12138, + "name": "OperatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28018, + "src": "26587:14:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OperatorParams_$28018_$", + "typeString": "type(library OperatorParams)" + } + }, + "id": 12139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pack", + "nodeType": "MemberAccess", + "referencedDeclaration": 27865, + "src": "26587:19:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 12144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26587:47:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12145, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12099, + "src": "26648:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12146, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12117, + "src": "26667:11:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 12147, + "name": "authorizer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12128, + "src": "26692:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12137, + "name": "Operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8834, + "src": "26565:8:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Operator_$8834_storage_ptr_$", + "typeString": "type(struct StakeDelegatable.Operator storage pointer)" + } + }, + "id": 12148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26565:147:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_memory", + "typeString": "struct StakeDelegatable.Operator memory" + } + }, + "src": "26542:170:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 12150, + "nodeType": "ExpressionStatement", + "src": "26542:170:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12154, + "name": "tokenGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11095, + "src": "26776:10:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12156, + "name": "escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11097, + "src": "26808:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "id": 12155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26800:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 12157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26800:15:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12158, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12099, + "src": "26829:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12159, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12103, + "src": "26848:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12160, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "26871:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 12151, + "name": "grantStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11099, + "src": "26723:12:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage storage ref" + } + }, + "id": 12153, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tryCapturingDelegationData", + "nodeType": "MemberAccess", + "referencedDeclaration": 19288, + "src": "26723:39:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19231_storage_ptr_$_t_contract$_TokenGrant_$10702_$_t_address_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_uint256_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", + "typeString": "function (struct GrantStaking.Storage storage pointer,contract TokenGrant,address,address,address,bytes memory) returns (bool,uint256)" + } + }, + "id": 12161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26723:168:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "id": 12162, + "nodeType": "ExpressionStatement", + "src": "26723:168:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12164, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12099, + "src": "26922:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12165, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12103, + "src": "26929:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12163, + "name": "StakeDelegated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11017, + "src": "26907:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 12166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26907:32:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12167, + "nodeType": "EmitStatement", + "src": "26902:37:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12169, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12103, + "src": "26969:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12170, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12117, + "src": "26980:11:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 12171, + "name": "authorizer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12128, + "src": "26993:10:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12172, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12101, + "src": "27005:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12168, + "name": "OperatorStaked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11027, + "src": "26954:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 12173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26954:58:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12174, + "nodeType": "EmitStatement", + "src": "26949:63:39" + } + ] + }, + "documentation": "@notice Delegates tokens to a new operator using beneficiary and\n authorizer passed in _extraData parameter.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and stake.\n @param _operator The new operator address.\n @param _extraData Data for stake delegation as passed to receiveApproval.", + "id": 12176, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "delegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12099, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 12176, + "src": "26207:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12098, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26207:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12101, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 12176, + "src": "26230:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26230:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12103, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 12176, + "src": "26254:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26254:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12105, + "name": "_extraData", + "nodeType": "VariableDeclaration", + "scope": 12176, + "src": "26281:23:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12104, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26281:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26197:113:39" + }, + "returnParameters": { + "id": 12107, + "nodeType": "ParameterList", + "parameters": [], + "src": "26320:0:39" + }, + "scope": 12435, + "src": "26180:839:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 12295, + "nodeType": "Block", + "src": "28420:2271:39", + "statements": [ + { + "assignments": [12188], + "declarations": [ + { + "constant": false, + "id": 12188, + "name": "isFromGrant", + "nodeType": "VariableDeclaration", + "scope": 12295, + "src": "28609:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12187, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "28609:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12203, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12192, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "28671:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 12190, + "name": "tokenGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11095, + "src": "28648:10:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + }, + "id": 12191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "grantStakes", + "nodeType": "MemberAccess", + "referencedDeclaration": 9535, + "src": "28648:22:39", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_contract$_TokenGrantStake_$10959_$", + "typeString": "function (address) view external returns (contract TokenGrantStake)" + } + }, + "id": 12193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28648:33:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrantStake_$10959", + "typeString": "contract TokenGrantStake" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenGrantStake_$10959", + "typeString": "contract TokenGrantStake" + } + ], + "id": 12189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28640:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 12194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28640:42:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 12195, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12178, + "src": "28686:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28640:51:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12198, + "name": "escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11097, + "src": "28719:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "id": 12197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28711:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 12199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28711:15:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 12200, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12178, + "src": "28730:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28711:24:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "28640:95:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28609:126:39" + }, + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12206, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "28781:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 12204, + "name": "grantStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11099, + "src": "28750:12:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage storage ref" + } + }, + "id": 12205, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasGrantDelegated", + "nodeType": "MemberAccess", + "referencedDeclaration": 19375, + "src": "28750:30:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", + "typeString": "function (struct GrantStaking.Storage storage pointer,address) view returns (bool)" + } + }, + "id": 12207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28750:41:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12257, + "nodeType": "Block", + "src": "29612:297:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "29777:12:39", + "subExpression": { + "argumentTypes": null, + "id": 12242, + "name": "isFromGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12188, + "src": "29778:11:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d757374206e6f742062652066726f6d2061206772616e74", + "id": 12244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29791:26:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2b9e7062844df2b17b3c62e7b067e153f062dbc06025785a7c52346348124675", + "typeString": "literal_string \"Must not be from a grant\"" + }, + "value": "Must not be from a grant" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2b9e7062844df2b17b3c62e7b067e153f062dbc06025785a7c52346348124675", + "typeString": "literal_string \"Must not be from a grant\"" + } + ], + "id": 12241, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "29769:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29769:49:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12246, + "nodeType": "ExpressionStatement", + "src": "29769:49:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12248, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "29840:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 12250, + "indexExpression": { + "argumentTypes": null, + "id": 12249, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "29850:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29840:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 12251, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 8829, + "src": "29840:26:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 12252, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12178, + "src": "29870:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "29840:35:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f74207468652073616d65206f776e6572", + "id": 12254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29877:20:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_12e166bf4abcc24bd437fb26ce6b782ef4c55db948e745833feb167d0bd16206", + "typeString": "literal_string \"Not the same owner\"" + }, + "value": "Not the same owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_12e166bf4abcc24bd437fb26ce6b782ef4c55db948e745833feb167d0bd16206", + "typeString": "literal_string \"Not the same owner\"" + } + ], + "id": 12247, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "29832:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29832:66:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12256, + "nodeType": "ExpressionStatement", + "src": "29832:66:39" + } + ] + }, + "id": 12258, + "nodeType": "IfStatement", + "src": "28746:1163:39", + "trueBody": { + "id": 12240, + "nodeType": "Block", + "src": "28793:813:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12209, + "name": "isFromGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12188, + "src": "28936:11:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d7573742062652066726f6d2061206772616e74", + "id": 12210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28949:22:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1092761cfc456a4049616698cd1b06c91dd92ec092d312d87b620e0d3f83679", + "typeString": "literal_string \"Must be from a grant\"" + }, + "value": "Must be from a grant" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1092761cfc456a4049616698cd1b06c91dd92ec092d312d87b620e0d3f83679", + "typeString": "literal_string \"Must be from a grant\"" + } + ], + "id": 12208, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "28928:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28928:44:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12212, + "nodeType": "ExpressionStatement", + "src": "28928:44:39" + }, + { + "assignments": [12214], + "declarations": [ + { + "constant": false, + "id": 12214, + "name": "previousGrantId", + "nodeType": "VariableDeclaration", + "scope": 12240, + "src": "29171:23:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29171:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12219, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12217, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "29246:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 12215, + "name": "grantStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11099, + "src": "29213:12:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage storage ref" + } + }, + "id": 12216, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "getGrantForOperator", + "nodeType": "MemberAccess", + "referencedDeclaration": 19423, + "src": "29213:32:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", + "typeString": "function (struct GrantStaking.Storage storage pointer,address) view returns (uint256)" + } + }, + "id": 12218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29213:43:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29171:85:39" + }, + { + "assignments": [null, 12221], + "declarations": [ + null, + { + "constant": false, + "id": 12221, + "name": "grantId", + "nodeType": "VariableDeclaration", + "scope": 12240, + "src": "29273:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29273:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12232, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12224, + "name": "tokenGrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11095, + "src": "29369:10:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12226, + "name": "escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11097, + "src": "29409:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "id": 12225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29401:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 12227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29401:15:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12228, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12178, + "src": "29438:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12229, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "29465:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12230, + "name": "_extraData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12184, + "src": "29496:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 12222, + "name": "grantStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11099, + "src": "29308:12:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage storage ref" + } + }, + "id": 12223, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tryCapturingDelegationData", + "nodeType": "MemberAccess", + "referencedDeclaration": 19288, + "src": "29308:39:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19231_storage_ptr_$_t_contract$_TokenGrant_$10702_$_t_address_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_uint256_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", + "typeString": "function (struct GrantStaking.Storage storage pointer,contract TokenGrant,address,address,address,bytes memory) returns (bool,uint256)" + } + }, + "id": 12231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29308:216:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29270:254:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12234, + "name": "grantId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12221, + "src": "29546:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 12235, + "name": "previousGrantId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12214, + "src": "29557:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29546:26:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f74207468652073616d65206772616e74", + "id": 12237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29574:20:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5f4a017829f7ac8e7cd46d1e5459ee834992c2456444c7e65c7080dfdc63201b", + "typeString": "literal_string \"Not the same grant\"" + }, + "value": "Not the same grant" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5f4a017829f7ac8e7cd46d1e5459ee834992c2456444c7e65c7080dfdc63201b", + "typeString": "literal_string \"Not the same grant\"" + } + ], + "id": 12233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "29538:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29538:57:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12239, + "nodeType": "ExpressionStatement", + "src": "29538:57:39" + } + ] + } + }, + { + "assignments": [12260], + "declarations": [ + { + "constant": false, + "id": 12260, + "name": "operatorParams", + "nodeType": "VariableDeclaration", + "scope": 12295, + "src": "29919:22:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29919:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12265, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12261, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "29944:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 12263, + "indexExpression": { + "argumentTypes": null, + "id": 12262, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "29954:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29944:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 12264, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "29944:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29919:58:39" + }, + { + "condition": { + "argumentTypes": null, + "id": 12269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "29991:31:39", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12267, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12260, + "src": "30007:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12266, + "name": "_isInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12314, + "src": "29992:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 12268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29992:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12293, + "nodeType": "Block", + "src": "30380:305:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12287, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12180, + "src": "30632:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12288, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "30640:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12289, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12260, + "src": "30651:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12290, + "name": "escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11097, + "src": "30667:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "expression": { + "argumentTypes": null, + "id": 12284, + "name": "topUps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "30616:6:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$20159_storage", + "typeString": "struct TopUps.Storage storage ref" + } + }, + "id": 12286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "initiate", + "nodeType": "MemberAccess", + "referencedDeclaration": 20279, + "src": "30616:15:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$20159_storage_ptr_$_t_uint256_$_t_address_$_t_uint256_$_t_contract$_TokenStakingEscrow_$13399_$returns$__$bound_to$_t_struct$_Storage_$20159_storage_ptr_$", + "typeString": "function (struct TopUps.Storage storage pointer,uint256,address,uint256,contract TokenStakingEscrow)" + } + }, + "id": 12291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30616:58:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12292, + "nodeType": "ExpressionStatement", + "src": "30616:58:39" + } + ] + }, + "id": 12294, + "nodeType": "IfStatement", + "src": "29987:698:39", + "trueBody": { + "id": 12283, + "nodeType": "Block", + "src": "30024:350:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12270, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8825, + "src": "30184:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", + "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" + } + }, + "id": 12272, + "indexExpression": { + "argumentTypes": null, + "id": 12271, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "30194:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30184:20:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Operator_$8834_storage", + "typeString": "struct StakeDelegatable.Operator storage ref" + } + }, + "id": 12273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "packedParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 8827, + "src": "30184:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12276, + "name": "_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12180, + "src": "30260:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12277, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12182, + "src": "30284:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12278, + "name": "operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12260, + "src": "30311:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12279, + "name": "escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11097, + "src": "30343:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "expression": { + "argumentTypes": null, + "id": 12274, + "name": "topUps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "30220:6:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$20159_storage", + "typeString": "struct TopUps.Storage storage ref" + } + }, + "id": 12275, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "instantComplete", + "nodeType": "MemberAccess", + "referencedDeclaration": 20214, + "src": "30220:22:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$20159_storage_ptr_$_t_uint256_$_t_address_$_t_uint256_$_t_contract$_TokenStakingEscrow_$13399_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$20159_storage_ptr_$", + "typeString": "function (struct TopUps.Storage storage pointer,uint256,address,uint256,contract TokenStakingEscrow) returns (uint256)" + } + }, + "id": 12280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30220:143:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30184:179:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12282, + "nodeType": "ExpressionStatement", + "src": "30184:179:39" + } + ] + } + } + ] + }, + "documentation": "@notice Performs top-up to an existing operator. Tokens added during\n stake initialization period are immediatelly added to the stake and\n stake initialization timer is reset to the current block. Tokens added\n in a top-up after the stake initialization period is over are not\n included in the operator stake until the initialization period for\n a top-up passes and top-up is committed. Operator must not have the stake\n undelegated. It is expected that the top-up is done from the same source\n of tokens as the initial delegation. That is, if the tokens were\n delegated from a grant, top-up has to be performed from the same grant.\n If the delegation was done using liquid tokens, only liquid tokens from\n the same owner can be used to top-up the stake.\n Top-up can not be cancelled so it is important to be careful with the\n amount of KEEP added to the stake.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and top-up to\n an existing stake.\n @param _operator The new operator address.\n @param _extraData Data for stake delegation as passed to receiveApproval", + "id": 12296, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "topUp", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12178, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 12296, + "src": "28307:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12177, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28307:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12180, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 12296, + "src": "28330:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28330:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12182, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 12296, + "src": "28354:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12181, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28354:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12184, + "name": "_extraData", + "nodeType": "VariableDeclaration", + "scope": 12296, + "src": "28381:23:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12183, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28381:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28297:113:39" + }, + "returnParameters": { + "id": 12186, + "nodeType": "ParameterList", + "parameters": [], + "src": "28420:0:39" + }, + "scope": 12435, + "src": "28283:2408:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 12313, + "nodeType": "Block", + "src": "30869:130:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12303, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28136, + "src": "30898:5:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 12304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30898:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12309, + "name": "initializationPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11091, + "src": "30971:20:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 12305, + "name": "_operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12298, + "src": "30928:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getCreationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 27945, + "src": "30928:36:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 12307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30928:38:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "30928:42:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 12310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30928:64:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30898:94:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 12302, + "id": 12312, + "nodeType": "Return", + "src": "30879:113:39" + } + ] + }, + "documentation": "@notice Is the operator with the given params initialized", + "id": 12314, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isInitialized", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12298, + "name": "_operatorParams", + "nodeType": "VariableDeclaration", + "scope": 12314, + "src": "30787:23:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30787:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30786:25:39" + }, + "returnParameters": { + "id": 12302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12301, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 12314, + "src": "30859:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12300, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30859:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30858:6:39" + }, + "scope": 12435, + "src": "30763:236:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 12338, + "nodeType": "Block", + "src": "31179:157:39", + "statements": [ + { + "assignments": [12322], + "declarations": [ + { + "constant": false, + "id": 12322, + "name": "undelegatedAt", + "nodeType": "VariableDeclaration", + "scope": 12338, + "src": "31189:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12321, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31189:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12326, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 12323, + "name": "_operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12316, + "src": "31213:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getUndelegationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 27977, + "src": "31213:40:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 12325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31213:42:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31189:66:39" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12327, + "name": "undelegatedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12322, + "src": "31273:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 12328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31290:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31273:18:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 12330, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31272:20:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12331, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28136, + "src": "31297:5:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 12332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31297:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 12333, + "name": "undelegatedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12322, + "src": "31315:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31297:31:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 12335, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31296:33:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "31272:57:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 12320, + "id": 12337, + "nodeType": "Return", + "src": "31265:64:39" + } + ] + }, + "documentation": "@notice Is the operator with the given params undelegating", + "id": 12339, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isUndelegating", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12316, + "name": "_operatorParams", + "nodeType": "VariableDeclaration", + "scope": 12339, + "src": "31097:23:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31097:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31096:25:39" + }, + "returnParameters": { + "id": 12320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12319, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 12339, + "src": "31169:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12318, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "31169:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31168:6:39" + }, + "scope": 12435, + "src": "31072:264:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 12367, + "nodeType": "Block", + "src": "31534:207:39", + "statements": [ + { + "assignments": [12347], + "declarations": [ + { + "constant": false, + "id": 12347, + "name": "undelegatedAt", + "nodeType": "VariableDeclaration", + "scope": 12367, + "src": "31544:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12346, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31544:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12351, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 12348, + "name": "_operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12341, + "src": "31568:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getUndelegationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 27977, + "src": "31568:40:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 12350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31568:42:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31544:66:39" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12352, + "name": "undelegatedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12347, + "src": "31640:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 12353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31657:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31640:18:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 12355, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31639:20:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12356, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28136, + "src": "31676:5:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 12357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31676:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12360, + "name": "undelegationPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11182, + "src": "31712:18:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 12361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31712:20:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 12358, + "name": "undelegatedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12347, + "src": "31694:13:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "31694:17:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 12362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31694:39:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31676:57:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 12364, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31675:59:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "31639:95:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 12345, + "id": 12366, + "nodeType": "Return", + "src": "31620:114:39" + } + ] + }, + "documentation": "@notice Has the operator with the given params finished undelegating", + "id": 12368, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isUndelegatingFinished", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12342, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12341, + "name": "_operatorParams", + "nodeType": "VariableDeclaration", + "scope": 12368, + "src": "31452:23:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31452:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31451:25:39" + }, + "returnParameters": { + "id": 12345, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12344, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 12368, + "src": "31524:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12343, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "31524:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31523:6:39" + }, + "scope": 12435, + "src": "31419:322:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 12389, + "nodeType": "Block", + "src": "32227:143:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12380, + "name": "_operatorParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12372, + "src": "32280:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12379, + "name": "_isUndelegatingFinished", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12368, + "src": "32256:23:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 12381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32256:40:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12384, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12370, + "src": "32334:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12385, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12374, + "src": "32345:17:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 12382, + "name": "locks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11101, + "src": "32312:5:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19752_storage", + "typeString": "struct Locks.Storage storage ref" + } + }, + "id": 12383, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isStakeReleased", + "nodeType": "MemberAccess", + "referencedDeclaration": 19984, + "src": "32312:21:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", + "typeString": "function (struct Locks.Storage storage pointer,address,address) view returns (bool)" + } + }, + "id": 12386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32312:51:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "32256:107:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 12378, + "id": 12388, + "nodeType": "Return", + "src": "32237:126:39" + } + ] + }, + "documentation": "@notice Get whether the operator's stake is released\n as far as the operator contract is concerned.\n If the operator contract has a lock on the operator,\n the operator's stake is be released when the lock expires.\n Otherwise the stake is released when the operator finishes undelegating.", + "id": 12390, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isStakeReleased", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12370, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 12390, + "src": "32106:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32106:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12372, + "name": "_operatorParams", + "nodeType": "VariableDeclaration", + "scope": 12390, + "src": "32133:23:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32133:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12374, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 12390, + "src": "32166:25:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32166:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32096:101:39" + }, + "returnParameters": { + "id": 12378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12377, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 12390, + "src": "32221:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12376, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32221:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32220:6:39" + }, + "scope": 12435, + "src": "32071:299:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 12433, + "nodeType": "Block", + "src": "32494:564:39", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12401, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12394, + "src": "32539:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 12399, + "name": "grantStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11099, + "src": "32508:12:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage storage ref" + } + }, + "id": 12400, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasGrantDelegated", + "nodeType": "MemberAccess", + "referencedDeclaration": 19375, + "src": "32508:30:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", + "typeString": "function (struct GrantStaking.Storage storage pointer,address) view returns (bool)" + } + }, + "id": 12402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32508:41:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12431, + "nodeType": "Block", + "src": "32914:138:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12427, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12392, + "src": "33025:6:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12428, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12396, + "src": "33033:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 12424, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11093, + "src": "33006:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + }, + "id": 12426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1183, + "src": "33006:18:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1150_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1150_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 12429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33006:35:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12430, + "nodeType": "ExpressionStatement", + "src": "33006:35:39" + } + ] + }, + "id": 12432, + "nodeType": "IfStatement", + "src": "32504:548:39", + "trueBody": { + "id": 12423, + "nodeType": "Block", + "src": "32551:357:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12410, + "name": "escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11097, + "src": "32709:6:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "id": 12409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32701:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 12411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32701:15:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12412, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12396, + "src": "32734:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12415, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12394, + "src": "32791:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12418, + "name": "_operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12394, + "src": "32855:9:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 12416, + "name": "grantStaking", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11099, + "src": "32822:12:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Storage_$19231_storage", + "typeString": "struct GrantStaking.Storage storage ref" + } + }, + "id": 12417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "getGrantForOperator", + "nodeType": "MemberAccess", + "referencedDeclaration": 19423, + "src": "32822:32:39", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", + "typeString": "function (struct GrantStaking.Storage storage pointer,address) view returns (uint256)" + } + }, + "id": 12419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32822:43:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 12413, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28133, + "src": "32759:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 12414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32759:10:39", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 12420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32759:124:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12405, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11093, + "src": "32661:5:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + ], + "id": 12404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32653:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 12406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32653:14:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12403, + "name": "TokenSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10971, + "src": "32641:11:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TokenSender_$10971_$", + "typeString": "type(contract TokenSender)" + } + }, + "id": 12407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32641:27:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenSender_$10971", + "typeString": "contract TokenSender" + } + }, + "id": 12408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approveAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 10970, + "src": "32641:42:39", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory) external" + } + }, + "id": 12421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32641:256:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12422, + "nodeType": "ExpressionStatement", + "src": "32641:256:39" + } + ] + } + } + ] + }, + "documentation": null, + "id": 12434, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferOrDeposit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12392, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 12434, + "src": "32412:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12391, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32412:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12394, + "name": "_operator", + "nodeType": "VariableDeclaration", + "scope": 12434, + "src": "32436:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32436:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12396, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 12434, + "src": "32463:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32463:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32402:82:39" + }, + "returnParameters": { + "id": 12398, + "nodeType": "ParameterList", + "parameters": [], + "src": "32494:0:39" + }, + "scope": 12435, + "src": "32376:682:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 12436, + "src": "2690:30370:39" + } + ], + "src": "1837:31224:39" + }, + "legacyAST": { + "attributes": { + "absolutePath": "project:/contracts/TokenStaking.sol", + "exportedSymbols": { + "TokenStaking": [12435] + } + }, + "children": [ + { + "attributes": { + "literals": ["solidity", "0.5", ".17"] + }, + "id": 10973, + "name": "PragmaDirective", + "src": "1837:23:39" + }, + { + "attributes": { + "SourceUnit": 1024, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10974, + "name": "ImportDirective", + "src": "1862:71:39" + }, + { + "attributes": { + "SourceUnit": 1371, + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10975, + "name": "ImportDirective", + "src": "1934:67:39" + }, + { + "attributes": { + "SourceUnit": 471, + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10976, + "name": "ImportDirective", + "src": "2002:59:39" + }, + { + "attributes": { + "SourceUnit": 8890, + "absolutePath": "project:/contracts/StakeDelegatable.sol", + "file": "./StakeDelegatable.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10977, + "name": "ImportDirective", + "src": "2062:32:39" + }, + { + "attributes": { + "SourceUnit": 20127, + "absolutePath": "project:/contracts/libraries/staking/MinimumStakeSchedule.sol", + "file": "./libraries/staking/MinimumStakeSchedule.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10978, + "name": "ImportDirective", + "src": "2095:54:39" + }, + { + "attributes": { + "SourceUnit": 19500, + "absolutePath": "project:/contracts/libraries/staking/GrantStaking.sol", + "file": "./libraries/staking/GrantStaking.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10979, + "name": "ImportDirective", + "src": "2150:46:39" + }, + { + "attributes": { + "SourceUnit": 20066, + "absolutePath": "project:/contracts/libraries/staking/Locks.sol", + "file": "./libraries/staking/Locks.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10980, + "name": "ImportDirective", + "src": "2197:39:39" + }, + { + "attributes": { + "SourceUnit": 20408, + "absolutePath": "project:/contracts/libraries/staking/TopUps.sol", + "file": "./libraries/staking/TopUps.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10981, + "name": "ImportDirective", + "src": "2237:40:39" + }, + { + "attributes": { + "SourceUnit": 28062, + "absolutePath": "project:/contracts/utils/PercentUtils.sol", + "file": "./utils/PercentUtils.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10982, + "name": "ImportDirective", + "src": "2278:34:39" + }, + { + "attributes": { + "SourceUnit": 27493, + "absolutePath": "project:/contracts/utils/BytesLib.sol", + "file": "./utils/BytesLib.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10983, + "name": "ImportDirective", + "src": "2313:30:39" + }, + { + "attributes": { + "SourceUnit": 1784, + "absolutePath": "project:/contracts/Authorizations.sol", + "file": "./Authorizations.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10984, + "name": "ImportDirective", + "src": "2344:30:39" + }, + { + "attributes": { + "SourceUnit": 13400, + "absolutePath": "project:/contracts/TokenStakingEscrow.sol", + "file": "./TokenStakingEscrow.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10985, + "name": "ImportDirective", + "src": "2375:34:39" + }, + { + "attributes": { + "SourceUnit": 10972, + "absolutePath": "project:/contracts/TokenSender.sol", + "file": "./TokenSender.sol", + "scope": 12436, + "symbolAliases": [null], + "unitAlias": "" + }, + "id": 10986, + "name": "ImportDirective", + "src": "2410:27:39" + }, + { + "attributes": { + "contractDependencies": [1613, 1783, 8889], + "contractKind": "contract", + "documentation": "@title TokenStaking\n @notice A token staking contract for a specified standard ERC20Burnable token.\n A holder of the specified token can stake delegate its tokens to this contract\n and recover the stake after undelegation period is over.", + "fullyImplemented": true, + "linearizedBaseContracts": [12435, 8889, 1783, 1613], + "name": "TokenStaking", + "scope": 12436 + }, + "children": [ + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Authorizations", + "referencedDeclaration": 1783, + "type": "contract Authorizations" + }, + "id": 10987, + "name": "UserDefinedTypeName", + "src": "2715:14:39" + } + ], + "id": 10988, + "name": "InheritanceSpecifier", + "src": "2715:14:39" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "StakeDelegatable", + "referencedDeclaration": 8889, + "type": "contract StakeDelegatable" + }, + "id": 10989, + "name": "UserDefinedTypeName", + "src": "2731:16:39" + } + ], + "id": 10990, + "name": "InheritanceSpecifier", + "src": "2731:16:39" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "BytesLib", + "referencedDeclaration": 27492, + "type": "library BytesLib" + }, + "id": 10991, + "name": "UserDefinedTypeName", + "src": "2760:8:39" + }, + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 10992, + "name": "ElementaryTypeName", + "src": "2773:5:39" + } + ], + "id": 10993, + "name": "UsingForDirective", + "src": "2754:25:39" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeMath", + "referencedDeclaration": 470, + "type": "library SafeMath" + }, + "id": 10994, + "name": "UserDefinedTypeName", + "src": "2790:8:39" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 10995, + "name": "ElementaryTypeName", + "src": "2803:7:39" + } + ], + "id": 10996, + "name": "UsingForDirective", + "src": "2784:27:39" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "PercentUtils", + "referencedDeclaration": 28061, + "type": "library PercentUtils" + }, + "id": 10997, + "name": "UserDefinedTypeName", + "src": "2822:12:39" + }, + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 10998, + "name": "ElementaryTypeName", + "src": "2839:7:39" + } + ], + "id": 10999, + "name": "UsingForDirective", + "src": "2816:31:39" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "SafeERC20", + "referencedDeclaration": 1370, + "type": "library SafeERC20" + }, + "id": 11000, + "name": "UserDefinedTypeName", + "src": "2858:9:39" + }, + { + "attributes": { + "contractScope": null, + "name": "ERC20Burnable", + "referencedDeclaration": 1023, + "type": "contract ERC20Burnable" + }, + "id": 11001, + "name": "UserDefinedTypeName", + "src": "2872:13:39" + } + ], + "id": 11002, + "name": "UsingForDirective", + "src": "2852:34:39" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GrantStaking", + "referencedDeclaration": 19499, + "type": "library GrantStaking" + }, + "id": 11003, + "name": "UserDefinedTypeName", + "src": "2897:12:39" + }, + { + "attributes": { + "contractScope": null, + "name": "GrantStaking.Storage", + "referencedDeclaration": 19231, + "type": "struct GrantStaking.Storage" + }, + "id": 11004, + "name": "UserDefinedTypeName", + "src": "2914:20:39" + } + ], + "id": 11005, + "name": "UsingForDirective", + "src": "2891:44:39" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Locks", + "referencedDeclaration": 20065, + "type": "library Locks" + }, + "id": 11006, + "name": "UserDefinedTypeName", + "src": "2946:5:39" + }, + { + "attributes": { + "contractScope": null, + "name": "Locks.Storage", + "referencedDeclaration": 19752, + "type": "struct Locks.Storage" + }, + "id": 11007, + "name": "UserDefinedTypeName", + "src": "2956:13:39" + } + ], + "id": 11008, + "name": "UsingForDirective", + "src": "2940:30:39" + }, + { + "children": [ + { + "attributes": { + "contractScope": null, + "name": "TopUps", + "referencedDeclaration": 20407, + "type": "library TopUps" + }, + "id": 11009, + "name": "UserDefinedTypeName", + "src": "2981:6:39" + }, + { + "attributes": { + "contractScope": null, + "name": "TopUps.Storage", + "referencedDeclaration": 20159, + "type": "struct TopUps.Storage" + }, + "id": 11010, + "name": "UserDefinedTypeName", + "src": "2992:14:39" + } + ], + "id": 11011, + "name": "UsingForDirective", + "src": "2975:32:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "StakeDelegated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "owner", + "scope": 11017, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11012, + "name": "ElementaryTypeName", + "src": "3034:7:39" + } + ], + "id": 11013, + "name": "VariableDeclaration", + "src": "3034:21:39" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11017, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11014, + "name": "ElementaryTypeName", + "src": "3057:7:39" + } + ], + "id": 11015, + "name": "VariableDeclaration", + "src": "3057:24:39" + } + ], + "id": 11016, + "name": "ParameterList", + "src": "3033:49:39" + } + ], + "id": 11017, + "name": "EventDefinition", + "src": "3013:70:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorStaked" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11027, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11018, + "name": "ElementaryTypeName", + "src": "3118:7:39" + } + ], + "id": 11019, + "name": "VariableDeclaration", + "src": "3118:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "beneficiary", + "scope": 11027, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11020, + "name": "ElementaryTypeName", + "src": "3152:7:39" + } + ], + "id": 11021, + "name": "VariableDeclaration", + "src": "3152:27:39" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "authorizer", + "scope": 11027, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11022, + "name": "ElementaryTypeName", + "src": "3189:7:39" + } + ], + "id": 11023, + "name": "VariableDeclaration", + "src": "3189:26:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "value", + "scope": 11027, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11024, + "name": "ElementaryTypeName", + "src": "3225:7:39" + } + ], + "id": 11025, + "name": "VariableDeclaration", + "src": "3225:13:39" + } + ], + "id": 11026, + "name": "ParameterList", + "src": "3108:136:39" + } + ], + "id": 11027, + "name": "EventDefinition", + "src": "3088:157:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "StakeOwnershipTransferred" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11033, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11028, + "name": "ElementaryTypeName", + "src": "3291:7:39" + } + ], + "id": 11029, + "name": "VariableDeclaration", + "src": "3291:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "newOwner", + "scope": 11033, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11030, + "name": "ElementaryTypeName", + "src": "3325:7:39" + } + ], + "id": 11031, + "name": "VariableDeclaration", + "src": "3325:24:39" + } + ], + "id": 11032, + "name": "ParameterList", + "src": "3281:74:39" + } + ], + "id": 11033, + "name": "EventDefinition", + "src": "3250:106:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "TopUpInitiated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11039, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11034, + "name": "ElementaryTypeName", + "src": "3382:7:39" + } + ], + "id": 11035, + "name": "VariableDeclaration", + "src": "3382:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "topUp", + "scope": 11039, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11036, + "name": "ElementaryTypeName", + "src": "3408:7:39" + } + ], + "id": 11037, + "name": "VariableDeclaration", + "src": "3408:13:39" + } + ], + "id": 11038, + "name": "ParameterList", + "src": "3381:41:39" + } + ], + "id": 11039, + "name": "EventDefinition", + "src": "3361:62:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "TopUpCompleted" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11045, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11040, + "name": "ElementaryTypeName", + "src": "3449:7:39" + } + ], + "id": 11041, + "name": "VariableDeclaration", + "src": "3449:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "newAmount", + "scope": 11045, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11042, + "name": "ElementaryTypeName", + "src": "3475:7:39" + } + ], + "id": 11043, + "name": "VariableDeclaration", + "src": "3475:17:39" + } + ], + "id": 11044, + "name": "ParameterList", + "src": "3448:45:39" + } + ], + "id": 11045, + "name": "EventDefinition", + "src": "3428:66:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "Undelegated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11051, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11046, + "name": "ElementaryTypeName", + "src": "3517:7:39" + } + ], + "id": 11047, + "name": "VariableDeclaration", + "src": "3517:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "undelegatedAt", + "scope": 11051, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11048, + "name": "ElementaryTypeName", + "src": "3543:7:39" + } + ], + "id": 11049, + "name": "VariableDeclaration", + "src": "3543:21:39" + } + ], + "id": 11050, + "name": "ParameterList", + "src": "3516:49:39" + } + ], + "id": 11051, + "name": "EventDefinition", + "src": "3499:67:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "RecoveredStake" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operator", + "scope": 11055, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11052, + "name": "ElementaryTypeName", + "src": "3592:7:39" + } + ], + "id": 11053, + "name": "VariableDeclaration", + "src": "3592:16:39" + } + ], + "id": 11054, + "name": "ParameterList", + "src": "3591:18:39" + } + ], + "id": 11055, + "name": "EventDefinition", + "src": "3571:39:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "TokensSlashed" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11061, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11056, + "name": "ElementaryTypeName", + "src": "3635:7:39" + } + ], + "id": 11057, + "name": "VariableDeclaration", + "src": "3635:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "amount", + "scope": 11061, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11058, + "name": "ElementaryTypeName", + "src": "3661:7:39" + } + ], + "id": 11059, + "name": "VariableDeclaration", + "src": "3661:14:39" + } + ], + "id": 11060, + "name": "ParameterList", + "src": "3634:42:39" + } + ], + "id": 11061, + "name": "EventDefinition", + "src": "3615:62:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "TokensSeized" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11067, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11062, + "name": "ElementaryTypeName", + "src": "3701:7:39" + } + ], + "id": 11063, + "name": "VariableDeclaration", + "src": "3701:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "amount", + "scope": 11067, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11064, + "name": "ElementaryTypeName", + "src": "3727:7:39" + } + ], + "id": 11065, + "name": "VariableDeclaration", + "src": "3727:14:39" + } + ], + "id": 11066, + "name": "ParameterList", + "src": "3700:42:39" + } + ], + "id": 11067, + "name": "EventDefinition", + "src": "3682:61:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "StakeLocked" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11075, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11068, + "name": "ElementaryTypeName", + "src": "3775:7:39" + } + ], + "id": 11069, + "name": "VariableDeclaration", + "src": "3775:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "lockCreator", + "scope": 11075, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11070, + "name": "ElementaryTypeName", + "src": "3809:7:39" + } + ], + "id": 11071, + "name": "VariableDeclaration", + "src": "3809:19:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "until", + "scope": 11075, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11072, + "name": "ElementaryTypeName", + "src": "3838:7:39" + } + ], + "id": 11073, + "name": "VariableDeclaration", + "src": "3838:13:39" + } + ], + "id": 11074, + "name": "ParameterList", + "src": "3765:92:39" + } + ], + "id": 11075, + "name": "EventDefinition", + "src": "3748:110:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "LockReleased" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11081, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11076, + "name": "ElementaryTypeName", + "src": "3882:7:39" + } + ], + "id": 11077, + "name": "VariableDeclaration", + "src": "3882:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "lockCreator", + "scope": 11081, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11078, + "name": "ElementaryTypeName", + "src": "3908:7:39" + } + ], + "id": 11079, + "name": "VariableDeclaration", + "src": "3908:19:39" + } + ], + "id": 11080, + "name": "ParameterList", + "src": "3881:47:39" + } + ], + "id": 11081, + "name": "EventDefinition", + "src": "3863:66:39" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "ExpiredLockReleased" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "operator", + "scope": 11087, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11082, + "name": "ElementaryTypeName", + "src": "3960:7:39" + } + ], + "id": 11083, + "name": "VariableDeclaration", + "src": "3960:24:39" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "lockCreator", + "scope": 11087, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11084, + "name": "ElementaryTypeName", + "src": "3986:7:39" + } + ], + "id": 11085, + "name": "VariableDeclaration", + "src": "3986:19:39" + } + ], + "id": 11086, + "name": "ParameterList", + "src": "3959:47:39" + } + ], + "id": 11087, + "name": "EventDefinition", + "src": "3934:73:39" + }, + { + "attributes": { + "constant": false, + "name": "deployedAt", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11088, + "name": "ElementaryTypeName", + "src": "4013:7:39" + } + ], + "id": 11089, + "name": "VariableDeclaration", + "src": "4013:25:39" + }, + { + "attributes": { + "constant": false, + "name": "initializationPeriod", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11090, + "name": "ElementaryTypeName", + "src": "4044:7:39" + } + ], + "id": 11091, + "name": "VariableDeclaration", + "src": "4044:35:39" + }, + { + "attributes": { + "constant": false, + "name": "token", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "contract ERC20Burnable", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ERC20Burnable", + "referencedDeclaration": 1023, + "type": "contract ERC20Burnable" + }, + "id": 11092, + "name": "UserDefinedTypeName", + "src": "4124:13:39" + } + ], + "id": 11093, + "name": "VariableDeclaration", + "src": "4124:28:39" + }, + { + "attributes": { + "constant": false, + "name": "tokenGrant", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "contract TokenGrant", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "TokenGrant", + "referencedDeclaration": 10702, + "type": "contract TokenGrant" + }, + "id": 11094, + "name": "UserDefinedTypeName", + "src": "4158:10:39" + } + ], + "id": 11095, + "name": "VariableDeclaration", + "src": "4158:30:39" + }, + { + "attributes": { + "constant": false, + "name": "escrow", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "contract TokenStakingEscrow", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "TokenStakingEscrow", + "referencedDeclaration": 13399, + "type": "contract TokenStakingEscrow" + }, + "id": 11096, + "name": "UserDefinedTypeName", + "src": "4194:18:39" + } + ], + "id": 11097, + "name": "VariableDeclaration", + "src": "4194:34:39" + }, + { + "attributes": { + "constant": false, + "name": "grantStaking", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "struct GrantStaking.Storage", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "GrantStaking.Storage", + "referencedDeclaration": 19231, + "type": "struct GrantStaking.Storage" + }, + "id": 11098, + "name": "UserDefinedTypeName", + "src": "4235:20:39" + } + ], + "id": 11099, + "name": "VariableDeclaration", + "src": "4235:42:39" + }, + { + "attributes": { + "constant": false, + "name": "locks", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "struct Locks.Storage", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Locks.Storage", + "referencedDeclaration": 19752, + "type": "struct Locks.Storage" + }, + "id": 11100, + "name": "UserDefinedTypeName", + "src": "4283:13:39" + } + ], + "id": 11101, + "name": "VariableDeclaration", + "src": "4283:28:39" + }, + { + "attributes": { + "constant": false, + "name": "topUps", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "struct TopUps.Storage", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "TopUps.Storage", + "referencedDeclaration": 20159, + "type": "struct TopUps.Storage" + }, + "id": 11102, + "name": "UserDefinedTypeName", + "src": "4317:14:39" + } + ], + "id": 11103, + "name": "VariableDeclaration", + "src": "4317:30:39" + }, + { + "attributes": { + "constant": true, + "name": "twoWeeks", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11104, + "name": "ElementaryTypeName", + "src": "4354:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31323039363030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1209600", + "value": "1209600" + }, + "id": 11105, + "name": "Literal", + "src": "4391:7:39" + } + ], + "id": 11106, + "name": "VariableDeclaration", + "src": "4354:44:39" + }, + { + "attributes": { + "constant": true, + "name": "twoMonths", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11107, + "name": "ElementaryTypeName", + "src": "4413:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35313834303030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5184000", + "value": "5184000" + }, + "id": 11108, + "name": "Literal", + "src": "4451:7:39" + } + ], + "id": 11109, + "name": "VariableDeclaration", + "src": "4413:45:39" + }, + { + "attributes": { + "constant": true, + "name": "minimumStakeScheduleStart", + "scope": 12435, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11110, + "name": "ElementaryTypeName", + "src": "4606:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31353838303432333636", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1588042366", + "value": "1588042366" + }, + "id": 11111, + "name": "Literal", + "src": "4660:10:39" + } + ], + "id": 11112, + "name": "VariableDeclaration", + "src": "4606:64:39" + }, + { + "attributes": { + "documentation": "@notice Creates a token staking contract for a provided Standard ERC20Burnable token.\n @param _token KEEP token contract.\n @param _tokenGrant KEEP token grant contract.\n @param _escrow Escrow dedicated for this staking contract.\n @param _registry Keep contract registry contract.\n @param _initializationPeriod To avoid certain attacks on work selection, recently created\n operators must wait for a specific period of time before being eligible for work selection.", + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "name": "", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_token", + "scope": 11154, + "stateVariable": false, + "storageLocation": "default", + "type": "contract ERC20Burnable", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "ERC20Burnable", + "referencedDeclaration": 1023, + "type": "contract ERC20Burnable" + }, + "id": 11113, + "name": "UserDefinedTypeName", + "src": "5212:13:39" + } + ], + "id": 11114, + "name": "VariableDeclaration", + "src": "5212:20:39" + }, + { + "attributes": { + "constant": false, + "name": "_tokenGrant", + "scope": 11154, + "stateVariable": false, + "storageLocation": "default", + "type": "contract TokenGrant", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "TokenGrant", + "referencedDeclaration": 10702, + "type": "contract TokenGrant" + }, + "id": 11115, + "name": "UserDefinedTypeName", + "src": "5242:10:39" + } + ], + "id": 11116, + "name": "VariableDeclaration", + "src": "5242:22:39" + }, + { + "attributes": { + "constant": false, + "name": "_escrow", + "scope": 11154, + "stateVariable": false, + "storageLocation": "default", + "type": "contract TokenStakingEscrow", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "TokenStakingEscrow", + "referencedDeclaration": 13399, + "type": "contract TokenStakingEscrow" + }, + "id": 11117, + "name": "UserDefinedTypeName", + "src": "5274:18:39" + } + ], + "id": 11118, + "name": "VariableDeclaration", + "src": "5274:26:39" + }, + { + "attributes": { + "constant": false, + "name": "_registry", + "scope": 11154, + "stateVariable": false, + "storageLocation": "default", + "type": "contract KeepRegistry", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "KeepRegistry", + "referencedDeclaration": 6120, + "type": "contract KeepRegistry" + }, + "id": 11119, + "name": "UserDefinedTypeName", + "src": "5310:12:39" + } + ], + "id": 11120, + "name": "VariableDeclaration", + "src": "5310:22:39" + }, + { + "attributes": { + "constant": false, + "name": "_initializationPeriod", + "scope": 11154, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11121, + "name": "ElementaryTypeName", + "src": "5342:7:39" + } + ], + "id": 11122, + "name": "VariableDeclaration", + "src": "5342:29:39" + } + ], + "id": 11123, + "name": "ParameterList", + "src": "5202:175:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11127, + "name": "ParameterList", + "src": "5411:0:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1783, + "type": "type(contract Authorizations)", + "value": "Authorizations" + }, + "id": 11124, + "name": "Identifier", + "src": "5385:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11120, + "type": "contract KeepRegistry", + "value": "_registry" + }, + "id": 11125, + "name": "Identifier", + "src": "5400:9:39" + } + ], + "id": 11126, + "name": "ModifierInvocation", + "src": "5385:25:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "contract ERC20Burnable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11093, + "type": "contract ERC20Burnable", + "value": "token" + }, + "id": 11128, + "name": "Identifier", + "src": "5421:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11114, + "type": "contract ERC20Burnable", + "value": "_token" + }, + "id": 11129, + "name": "Identifier", + "src": "5429:6:39" + } + ], + "id": 11130, + "name": "Assignment", + "src": "5421:14:39" + } + ], + "id": 11131, + "name": "ExpressionStatement", + "src": "5421:14:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "contract TokenGrant" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11095, + "type": "contract TokenGrant", + "value": "tokenGrant" + }, + "id": 11132, + "name": "Identifier", + "src": "5445:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11116, + "type": "contract TokenGrant", + "value": "_tokenGrant" + }, + "id": 11133, + "name": "Identifier", + "src": "5458:11:39" + } + ], + "id": 11134, + "name": "Assignment", + "src": "5445:24:39" + } + ], + "id": 11135, + "name": "ExpressionStatement", + "src": "5445:24:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "contract TokenStakingEscrow" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11097, + "type": "contract TokenStakingEscrow", + "value": "escrow" + }, + "id": 11136, + "name": "Identifier", + "src": "5479:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11118, + "type": "contract TokenStakingEscrow", + "value": "_escrow" + }, + "id": 11137, + "name": "Identifier", + "src": "5488:7:39" + } + ], + "id": 11138, + "name": "Assignment", + "src": "5479:16:39" + } + ], + "id": 11139, + "name": "ExpressionStatement", + "src": "5479:16:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "contract KeepRegistry" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1627, + "type": "contract KeepRegistry", + "value": "registry" + }, + "id": 11140, + "name": "Identifier", + "src": "5505:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11120, + "type": "contract KeepRegistry", + "value": "_registry" + }, + "id": 11141, + "name": "Identifier", + "src": "5516:9:39" + } + ], + "id": 11142, + "name": "Assignment", + "src": "5505:20:39" + } + ], + "id": 11143, + "name": "ExpressionStatement", + "src": "5505:20:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11091, + "type": "uint256", + "value": "initializationPeriod" + }, + "id": 11144, + "name": "Identifier", + "src": "5535:20:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11122, + "type": "uint256", + "value": "_initializationPeriod" + }, + "id": 11145, + "name": "Identifier", + "src": "5558:21:39" + } + ], + "id": 11146, + "name": "Assignment", + "src": "5535:44:39" + } + ], + "id": 11147, + "name": "ExpressionStatement", + "src": "5535:44:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11089, + "type": "uint256", + "value": "deployedAt" + }, + "id": 11148, + "name": "Identifier", + "src": "5589:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28136, + "type": "block", + "value": "block" + }, + "id": 11149, + "name": "Identifier", + "src": "5602:5:39" + } + ], + "id": 11150, + "name": "MemberAccess", + "src": "5602:15:39" + } + ], + "id": 11151, + "name": "Assignment", + "src": "5589:28:39" + } + ], + "id": 11152, + "name": "ExpressionStatement", + "src": "5589:28:39" + } + ], + "id": 11153, + "name": "Block", + "src": "5411:213:39" + } + ], + "id": 11154, + "name": "FunctionDefinition", + "src": "5191:433:39" + }, + { + "attributes": { + "documentation": "@notice Returns minimum amount of KEEP that allows sMPC cluster client to\n participate in the Keep network. Expressed as number with 18-decimal places.\n Initial minimum stake is higher than the final and lowered periodically based\n on the amount of steps and the length of the minimum stake schedule in seconds.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "minimumStake", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11155, + "name": "ParameterList", + "src": "5992:2:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 11165, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11156, + "name": "ElementaryTypeName", + "src": "6016:7:39" + } + ], + "id": 11157, + "name": "VariableDeclaration", + "src": "6016:7:39" + } + ], + "id": 11158, + "name": "ParameterList", + "src": "6015:9:39" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 11158 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "current", + "referencedDeclaration": 20125, + "type": "function (uint256) view returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 20126, + "type": "type(library MinimumStakeSchedule)", + "value": "MinimumStakeSchedule" + }, + "id": 11159, + "name": "Identifier", + "src": "6042:20:39" + } + ], + "id": 11160, + "name": "MemberAccess", + "src": "6042:28:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11112, + "type": "uint256", + "value": "minimumStakeScheduleStart" + }, + "id": 11161, + "name": "Identifier", + "src": "6071:25:39" + } + ], + "id": 11162, + "name": "FunctionCall", + "src": "6042:55:39" + } + ], + "id": 11163, + "name": "Return", + "src": "6035:62:39" + } + ], + "id": 11164, + "name": "Block", + "src": "6025:79:39" + } + ], + "id": 11165, + "name": "FunctionDefinition", + "src": "5971:133:39" + }, + { + "attributes": { + "documentation": "@notice Returns the current value of the undelegation period.\n The staking contract guarantees that an undelegated operator’s stakes\n will stay locked for a period of time after undelegation, and thus\n available as collateral for any work the operator is engaged in.\n The undelegation period is two weeks for the first two months and\n two months after that.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "undelegationPeriod", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11166, + "name": "ParameterList", + "src": "6540:2:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 11182, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11167, + "name": "ElementaryTypeName", + "src": "6564:7:39" + } + ], + "id": 11168, + "name": "VariableDeclaration", + "src": "6564:7:39" + } + ], + "id": 11169, + "name": "ParameterList", + "src": "6563:9:39" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 11169 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28136, + "type": "block", + "value": "block" + }, + "id": 11170, + "name": "Identifier", + "src": "6602:5:39" + } + ], + "id": 11171, + "name": "MemberAccess", + "src": "6602:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11089, + "type": "uint256", + "value": "deployedAt" + }, + "id": 11172, + "name": "Identifier", + "src": "6620:10:39" + } + ], + "id": 11173, + "name": "MemberAccess", + "src": "6620:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11109, + "type": "uint256", + "value": "twoMonths" + }, + "id": 11174, + "name": "Identifier", + "src": "6635:9:39" + } + ], + "id": 11175, + "name": "FunctionCall", + "src": "6620:25:39" + } + ], + "id": 11176, + "name": "BinaryOperation", + "src": "6602:43:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11106, + "type": "uint256", + "value": "twoWeeks" + }, + "id": 11177, + "name": "Identifier", + "src": "6648:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11109, + "type": "uint256", + "value": "twoMonths" + }, + "id": 11178, + "name": "Identifier", + "src": "6659:9:39" + } + ], + "id": 11179, + "name": "Conditional", + "src": "6602:66:39" + } + ], + "id": 11180, + "name": "Return", + "src": "6583:85:39" + } + ], + "id": 11181, + "name": "Block", + "src": "6573:102:39" + } + ], + "id": 11182, + "name": "FunctionDefinition", + "src": "6513:162:39" + }, + { + "attributes": { + "documentation": "@notice Receives approval of token transfer and stakes the approved\n amount or adds the approved amount to an existing delegation (a “top-up”).\n In case of a top-up, it is expected that the operator stake is not\n undelegated and that the top-up is performed from the same source of\n tokens as the initial delegation. That is, if the tokens were delegated\n from a grant, top-up has to be performed from the same grant. If the\n delegation was done using liquid tokens, only liquid tokens from the\n same owner can be used to top-up the stake.\n Top-up can not be cancelled so it is important to be careful with the\n amount of KEEP added to the stake.\n @dev Requires that the provided token contract be the same one linked to\n this contract.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and stake.\n @param _token Token contract address.\n @param _extraData Data for stake delegation. This byte array must have\n the following values concatenated:\n - Beneficiary address (20 bytes), ignored for a top-up\n - Operator address (20 bytes)\n - Authorizer address (20 bytes), ignored for a top-up\n - Grant ID (32 bytes) - required only when called by TokenStakingEscrow", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "receiveApproval", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_from", + "scope": 11253, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11183, + "name": "ElementaryTypeName", + "src": "8094:7:39" + } + ], + "id": 11184, + "name": "VariableDeclaration", + "src": "8094:13:39" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "scope": 11253, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11185, + "name": "ElementaryTypeName", + "src": "8117:7:39" + } + ], + "id": 11186, + "name": "VariableDeclaration", + "src": "8117:14:39" + }, + { + "attributes": { + "constant": false, + "name": "_token", + "scope": 11253, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11187, + "name": "ElementaryTypeName", + "src": "8141:7:39" + } + ], + "id": 11188, + "name": "VariableDeclaration", + "src": "8141:14:39" + }, + { + "attributes": { + "constant": false, + "name": "_extraData", + "scope": 11253, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 11189, + "name": "ElementaryTypeName", + "src": "8165:5:39" + } + ], + "id": 11190, + "name": "VariableDeclaration", + "src": "8165:23:39" + } + ], + "id": 11191, + "name": "ParameterList", + "src": "8084:110:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11192, + "name": "ParameterList", + "src": "8202:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47da9b5e57c99f8cbef65229ca937f6f890e1990ca30174cbf7cd659ecff7e04", + "typeString": "literal_string \"Unrecognized token\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11193, + "name": "Identifier", + "src": "8212:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "contract ERC20Burnable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1023, + "type": "type(contract ERC20Burnable)", + "value": "ERC20Burnable" + }, + "id": 11194, + "name": "Identifier", + "src": "8220:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11188, + "type": "address", + "value": "_token" + }, + "id": 11195, + "name": "Identifier", + "src": "8234:6:39" + } + ], + "id": 11196, + "name": "FunctionCall", + "src": "8220:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11093, + "type": "contract ERC20Burnable", + "value": "token" + }, + "id": 11197, + "name": "Identifier", + "src": "8245:5:39" + } + ], + "id": 11198, + "name": "BinaryOperation", + "src": "8220:30:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "556e7265636f676e697a656420746f6b656e", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Unrecognized token\"", + "value": "Unrecognized token" + }, + "id": 11199, + "name": "Literal", + "src": "8252:20:39" + } + ], + "id": 11200, + "name": "FunctionCall", + "src": "8212:61:39" + } + ], + "id": 11201, + "name": "ExpressionStatement", + "src": "8212:61:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09b162eddeba70a64d1881921f98280925c4cc9ff91d7d7c2c0dbd107c95b48b", + "typeString": "literal_string \"Corrupted delegation data\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11202, + "name": "Identifier", + "src": "8283:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11190, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 11203, + "name": "Identifier", + "src": "8291:10:39" + } + ], + "id": 11204, + "name": "MemberAccess", + "src": "8291:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3630", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 60", + "value": "60" + }, + "id": 11205, + "name": "Literal", + "src": "8312:2:39" + } + ], + "id": 11206, + "name": "BinaryOperation", + "src": "8291:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "436f727275707465642064656c65676174696f6e2064617461", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Corrupted delegation data\"", + "value": "Corrupted delegation data" + }, + "id": 11207, + "name": "Literal", + "src": "8316:27:39" + } + ], + "id": 11208, + "name": "FunctionCall", + "src": "8283:61:39" + } + ], + "id": 11209, + "name": "ExpressionStatement", + "src": "8283:61:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransferFrom", + "referencedDeclaration": 1208, + "type": "function (contract IERC20,address,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11093, + "type": "contract ERC20Burnable", + "value": "token" + }, + "id": 11210, + "name": "Identifier", + "src": "8400:5:39" + } + ], + "id": 11212, + "name": "MemberAccess", + "src": "8400:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11184, + "type": "address", + "value": "_from" + }, + "id": 11213, + "name": "Identifier", + "src": "8423:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 11214, + "name": "ElementaryTypeNameExpression", + "src": "8430:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28238, + "type": "contract TokenStaking", + "value": "this" + }, + "id": 11215, + "name": "Identifier", + "src": "8438:4:39" + } + ], + "id": 11216, + "name": "FunctionCall", + "src": "8430:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11186, + "type": "uint256", + "value": "_value" + }, + "id": 11217, + "name": "Identifier", + "src": "8445:6:39" + } + ], + "id": 11218, + "name": "FunctionCall", + "src": "8400:52:39" + } + ], + "id": 11219, + "name": "ExpressionStatement", + "src": "8400:52:39" + }, + { + "attributes": { + "assignments": [11221] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 11252, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11220, + "name": "ElementaryTypeName", + "src": "8463:7:39" + } + ], + "id": 11221, + "name": "VariableDeclaration", + "src": "8463:16:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 27348, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11190, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 11222, + "name": "Identifier", + "src": "8482:10:39" + } + ], + "id": 11223, + "name": "MemberAccess", + "src": "8482:20:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3230", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 20", + "value": "20" + }, + "id": 11224, + "name": "Literal", + "src": "8503:2:39" + } + ], + "id": 11225, + "name": "FunctionCall", + "src": "8482:24:39" + } + ], + "id": 11226, + "name": "VariableDeclarationStatement", + "src": "8463:43:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getCreationTimestamp", + "referencedDeclaration": 27945, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11227, + "name": "Identifier", + "src": "8591:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11221, + "type": "address", + "value": "operator" + }, + "id": 11228, + "name": "Identifier", + "src": "8601:8:39" + } + ], + "id": 11229, + "name": "IndexAccess", + "src": "8591:19:39" + } + ], + "id": 11230, + "name": "MemberAccess", + "src": "8591:32:39" + } + ], + "id": 11231, + "name": "MemberAccess", + "src": "8591:53:39" + } + ], + "id": 11232, + "name": "FunctionCall", + "src": "8591:55:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11233, + "name": "Literal", + "src": "8650:1:39" + } + ], + "id": 11234, + "name": "BinaryOperation", + "src": "8591:60:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12176, + "type": "function (address,uint256,address,bytes memory)", + "value": "delegate" + }, + "id": 11235, + "name": "Identifier", + "src": "8804:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11184, + "type": "address", + "value": "_from" + }, + "id": 11236, + "name": "Identifier", + "src": "8813:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11186, + "type": "uint256", + "value": "_value" + }, + "id": 11237, + "name": "Identifier", + "src": "8820:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11221, + "type": "address", + "value": "operator" + }, + "id": 11238, + "name": "Identifier", + "src": "8828:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11190, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 11239, + "name": "Identifier", + "src": "8838:10:39" + } + ], + "id": 11240, + "name": "FunctionCall", + "src": "8804:45:39" + } + ], + "id": 11241, + "name": "ExpressionStatement", + "src": "8804:45:39" + } + ], + "id": 11242, + "name": "Block", + "src": "8653:207:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12296, + "type": "function (address,uint256,address,bytes memory)", + "value": "topUp" + }, + "id": 11243, + "name": "Identifier", + "src": "8949:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11184, + "type": "address", + "value": "_from" + }, + "id": 11244, + "name": "Identifier", + "src": "8955:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11186, + "type": "uint256", + "value": "_value" + }, + "id": 11245, + "name": "Identifier", + "src": "8962:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11221, + "type": "address", + "value": "operator" + }, + "id": 11246, + "name": "Identifier", + "src": "8970:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11190, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 11247, + "name": "Identifier", + "src": "8980:10:39" + } + ], + "id": 11248, + "name": "FunctionCall", + "src": "8949:42:39" + } + ], + "id": 11249, + "name": "ExpressionStatement", + "src": "8949:42:39" + } + ], + "id": 11250, + "name": "Block", + "src": "8866:136:39" + } + ], + "id": 11251, + "name": "IfStatement", + "src": "8587:415:39" + } + ], + "id": 11252, + "name": "Block", + "src": "8202:806:39" + } + ], + "id": 11253, + "name": "FunctionDefinition", + "src": "8060:948:39" + }, + { + "attributes": { + "documentation": "@notice Commits pending top-up for the provided operator. If the top-up\n did not pass the initialization period, the function fails.\n @param _operator The operator with a pending top-up that is getting\n committed.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "commitTopUp", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 11274, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11254, + "name": "ElementaryTypeName", + "src": "9278:7:39" + } + ], + "id": 11255, + "name": "VariableDeclaration", + "src": "9278:17:39" + } + ], + "id": 11256, + "name": "ParameterList", + "src": "9277:19:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11257, + "name": "ParameterList", + "src": "9304:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11258, + "name": "Identifier", + "src": "9314:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11255, + "type": "address", + "value": "_operator" + }, + "id": 11259, + "name": "Identifier", + "src": "9324:9:39" + } + ], + "id": 11260, + "name": "IndexAccess", + "src": "9314:20:39" + } + ], + "id": 11261, + "name": "MemberAccess", + "src": "9314:33:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "commit", + "referencedDeclaration": 20347, + "type": "function (struct TopUps.Storage storage pointer,address,uint256,uint256) returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11103, + "type": "struct TopUps.Storage storage ref", + "value": "topUps" + }, + "id": 11262, + "name": "Identifier", + "src": "9350:6:39" + } + ], + "id": 11263, + "name": "MemberAccess", + "src": "9350:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11255, + "type": "address", + "value": "_operator" + }, + "id": 11264, + "name": "Identifier", + "src": "9377:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11265, + "name": "Identifier", + "src": "9400:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11255, + "type": "address", + "value": "_operator" + }, + "id": 11266, + "name": "Identifier", + "src": "9410:9:39" + } + ], + "id": 11267, + "name": "IndexAccess", + "src": "9400:20:39" + } + ], + "id": 11268, + "name": "MemberAccess", + "src": "9400:33:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11091, + "type": "uint256", + "value": "initializationPeriod" + }, + "id": 11269, + "name": "Identifier", + "src": "9447:20:39" + } + ], + "id": 11270, + "name": "FunctionCall", + "src": "9350:127:39" + } + ], + "id": 11271, + "name": "Assignment", + "src": "9314:163:39" + } + ], + "id": 11272, + "name": "ExpressionStatement", + "src": "9314:163:39" + } + ], + "id": 11273, + "name": "Block", + "src": "9304:180:39" + } + ], + "id": 11274, + "name": "FunctionDefinition", + "src": "9257:227:39" + }, + { + "attributes": { + "documentation": "@notice Cancels stake of tokens within the operator initialization period\n without being subjected to the token lockup for the undelegation period.\n This can be used to undo mistaken delegation to the wrong operator address.\n @param _operator Address of the stake operator.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "cancelStake", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 11343, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11275, + "name": "ElementaryTypeName", + "src": "9814:7:39" + } + ], + "id": 11276, + "name": "VariableDeclaration", + "src": "9814:17:39" + } + ], + "id": 11277, + "name": "ParameterList", + "src": "9813:19:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11278, + "name": "ParameterList", + "src": "9840:0:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [11280] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "owner", + "scope": 11342, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11279, + "name": "ElementaryTypeName", + "src": "9850:7:39" + } + ], + "id": 11280, + "name": "VariableDeclaration", + "src": "9850:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "owner", + "referencedDeclaration": 8829, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11281, + "name": "Identifier", + "src": "9866:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11276, + "type": "address", + "value": "_operator" + }, + "id": 11282, + "name": "Identifier", + "src": "9876:9:39" + } + ], + "id": 11283, + "name": "IndexAccess", + "src": "9866:20:39" + } + ], + "id": 11284, + "name": "MemberAccess", + "src": "9866:26:39" + } + ], + "id": 11285, + "name": "VariableDeclarationStatement", + "src": "9850:42:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11286, + "name": "Identifier", + "src": "9902:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11287, + "name": "Identifier", + "src": "9923:3:39" + } + ], + "id": 11288, + "name": "MemberAccess", + "src": "9923:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11280, + "type": "address", + "value": "owner" + }, + "id": 11289, + "name": "Identifier", + "src": "9937:5:39" + } + ], + "id": 11290, + "name": "BinaryOperation", + "src": "9923:19:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11291, + "name": "Identifier", + "src": "9962:3:39" + } + ], + "id": 11292, + "name": "MemberAccess", + "src": "9962:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11276, + "type": "address", + "value": "_operator" + }, + "id": 11293, + "name": "Identifier", + "src": "9976:9:39" + } + ], + "id": 11294, + "name": "BinaryOperation", + "src": "9962:23:39" + } + ], + "id": 11295, + "name": "BinaryOperation", + "src": "9923:62:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "canUndelegate", + "referencedDeclaration": 19498, + "type": "function (struct GrantStaking.Storage storage pointer,address,contract TokenGrant) returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11099, + "type": "struct GrantStaking.Storage storage ref", + "value": "grantStaking" + }, + "id": 11296, + "name": "Identifier", + "src": "10005:12:39" + } + ], + "id": 11297, + "name": "MemberAccess", + "src": "10005:26:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11276, + "type": "address", + "value": "_operator" + }, + "id": 11298, + "name": "Identifier", + "src": "10032:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11095, + "type": "contract TokenGrant", + "value": "tokenGrant" + }, + "id": 11299, + "name": "Identifier", + "src": "10043:10:39" + } + ], + "id": 11300, + "name": "FunctionCall", + "src": "10005:49:39" + } + ], + "id": 11301, + "name": "BinaryOperation", + "src": "9923:131:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 11302, + "name": "Literal", + "src": "10068:16:39" + } + ], + "id": 11303, + "name": "FunctionCall", + "src": "9902:192:39" + } + ], + "id": 11304, + "name": "ExpressionStatement", + "src": "9902:192:39" + }, + { + "attributes": { + "assignments": [11306] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorParams", + "scope": 11342, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11305, + "name": "ElementaryTypeName", + "src": "10104:7:39" + } + ], + "id": 11306, + "name": "VariableDeclaration", + "src": "10104:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11307, + "name": "Identifier", + "src": "10129:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11276, + "type": "address", + "value": "_operator" + }, + "id": 11308, + "name": "Identifier", + "src": "10139:9:39" + } + ], + "id": 11309, + "name": "IndexAccess", + "src": "10129:20:39" + } + ], + "id": 11310, + "name": "MemberAccess", + "src": "10129:33:39" + } + ], + "id": 11311, + "name": "VariableDeclarationStatement", + "src": "10104:58:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_655beb0bac13ffbbd358a950ddf7097242083984e0d10b43e52c0ce160d829ea", + "typeString": "literal_string \"Initialized stake\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11312, + "name": "Identifier", + "src": "10173:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12314, + "type": "function (uint256) view returns (bool)", + "value": "_isInitialized" + }, + "id": 11313, + "name": "Identifier", + "src": "10182:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11306, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11314, + "name": "Identifier", + "src": "10197:14:39" + } + ], + "id": 11315, + "name": "FunctionCall", + "src": "10182:30:39" + } + ], + "id": 11316, + "name": "UnaryOperation", + "src": "10181:31:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "496e697469616c697a6564207374616b65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Initialized stake\"", + "value": "Initialized stake" + }, + "id": 11317, + "name": "Literal", + "src": "10214:19:39" + } + ], + "id": 11318, + "name": "FunctionCall", + "src": "10173:61:39" + } + ], + "id": 11319, + "name": "ExpressionStatement", + "src": "10173:61:39" + }, + { + "attributes": { + "assignments": [11321] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "amount", + "scope": 11342, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11320, + "name": "ElementaryTypeName", + "src": "10245:7:39" + } + ], + "id": 11321, + "name": "VariableDeclaration", + "src": "10245:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAmount", + "referencedDeclaration": 27910, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11306, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11322, + "name": "Identifier", + "src": "10262:14:39" + } + ], + "id": 11323, + "name": "MemberAccess", + "src": "10262:24:39" + } + ], + "id": 11324, + "name": "FunctionCall", + "src": "10262:26:39" + } + ], + "id": 11325, + "name": "VariableDeclarationStatement", + "src": "10245:43:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11326, + "name": "Identifier", + "src": "10298:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11276, + "type": "address", + "value": "_operator" + }, + "id": 11327, + "name": "Identifier", + "src": "10308:9:39" + } + ], + "id": 11328, + "name": "IndexAccess", + "src": "10298:20:39" + } + ], + "id": 11329, + "name": "MemberAccess", + "src": "10298:33:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "setAmount", + "referencedDeclaration": 27930, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11306, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11330, + "name": "Identifier", + "src": "10334:14:39" + } + ], + "id": 11331, + "name": "MemberAccess", + "src": "10334:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11332, + "name": "Literal", + "src": "10359:1:39" + } + ], + "id": 11333, + "name": "FunctionCall", + "src": "10334:27:39" + } + ], + "id": 11334, + "name": "Assignment", + "src": "10298:63:39" + } + ], + "id": 11335, + "name": "ExpressionStatement", + "src": "10298:63:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12434, + "type": "function (address,address,uint256)", + "value": "transferOrDeposit" + }, + "id": 11336, + "name": "Identifier", + "src": "10372:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11280, + "type": "address", + "value": "owner" + }, + "id": 11337, + "name": "Identifier", + "src": "10390:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11276, + "type": "address", + "value": "_operator" + }, + "id": 11338, + "name": "Identifier", + "src": "10397:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11321, + "type": "uint256", + "value": "amount" + }, + "id": 11339, + "name": "Identifier", + "src": "10408:6:39" + } + ], + "id": 11340, + "name": "FunctionCall", + "src": "10372:43:39" + } + ], + "id": 11341, + "name": "ExpressionStatement", + "src": "10372:43:39" + } + ], + "id": 11342, + "name": "Block", + "src": "9840:582:39" + } + ], + "id": 11343, + "name": "FunctionDefinition", + "src": "9793:629:39" + }, + { + "attributes": { + "documentation": "@notice Undelegates staked tokens. You will be able to recover your stake by calling\n `recoverStake()` with operator address once undelegation period is over.\n @param _operator Address of the stake operator.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "undelegate", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 11355, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11344, + "name": "ElementaryTypeName", + "src": "10678:7:39" + } + ], + "id": 11345, + "name": "VariableDeclaration", + "src": "10678:17:39" + } + ], + "id": 11346, + "name": "ParameterList", + "src": "10677:19:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11347, + "name": "ParameterList", + "src": "10704:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11446, + "type": "function (address,uint256)", + "value": "undelegateAt" + }, + "id": 11348, + "name": "Identifier", + "src": "10714:12:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11345, + "type": "address", + "value": "_operator" + }, + "id": 11349, + "name": "Identifier", + "src": "10727:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28136, + "type": "block", + "value": "block" + }, + "id": 11350, + "name": "Identifier", + "src": "10738:5:39" + } + ], + "id": 11351, + "name": "MemberAccess", + "src": "10738:15:39" + } + ], + "id": 11352, + "name": "FunctionCall", + "src": "10714:40:39" + } + ], + "id": 11353, + "name": "ExpressionStatement", + "src": "10714:40:39" + } + ], + "id": 11354, + "name": "Block", + "src": "10704:57:39" + } + ], + "id": 11355, + "name": "FunctionDefinition", + "src": "10658:103:39" + }, + { + "attributes": { + "documentation": "@notice Set an undelegation time for staked tokens.\n Undelegation will begin at the specified timestamp.\n You will be able to recover your stake by calling\n `recoverStake()` with operator address once undelegation period is over.\n @param _operator Address of the stake operator.\n @param _undelegationTimestamp The timestamp undelegation is to start at.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "undelegateAt", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 11446, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11356, + "name": "ElementaryTypeName", + "src": "11185:7:39" + } + ], + "id": 11357, + "name": "VariableDeclaration", + "src": "11185:17:39" + }, + { + "attributes": { + "constant": false, + "name": "_undelegationTimestamp", + "scope": 11446, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11358, + "name": "ElementaryTypeName", + "src": "11204:7:39" + } + ], + "id": 11359, + "name": "VariableDeclaration", + "src": "11204:30:39" + } + ], + "id": 11360, + "name": "ParameterList", + "src": "11184:51:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11361, + "name": "ParameterList", + "src": "11255:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11362, + "name": "Identifier", + "src": "11265:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11363, + "name": "Identifier", + "src": "11286:3:39" + } + ], + "id": 11364, + "name": "MemberAccess", + "src": "11286:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11357, + "type": "address", + "value": "_operator" + }, + "id": 11365, + "name": "Identifier", + "src": "11300:9:39" + } + ], + "id": 11366, + "name": "BinaryOperation", + "src": "11286:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11367, + "name": "Identifier", + "src": "11329:3:39" + } + ], + "id": 11368, + "name": "MemberAccess", + "src": "11329:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "owner", + "referencedDeclaration": 8829, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11369, + "name": "Identifier", + "src": "11343:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11357, + "type": "address", + "value": "_operator" + }, + "id": 11370, + "name": "Identifier", + "src": "11353:9:39" + } + ], + "id": 11371, + "name": "IndexAccess", + "src": "11343:20:39" + } + ], + "id": 11372, + "name": "MemberAccess", + "src": "11343:26:39" + } + ], + "id": 11373, + "name": "BinaryOperation", + "src": "11329:40:39" + } + ], + "id": 11374, + "name": "BinaryOperation", + "src": "11286:83:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "canUndelegate", + "referencedDeclaration": 19498, + "type": "function (struct GrantStaking.Storage storage pointer,address,contract TokenGrant) returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11099, + "type": "struct GrantStaking.Storage storage ref", + "value": "grantStaking" + }, + "id": 11375, + "name": "Identifier", + "src": "11389:12:39" + } + ], + "id": 11376, + "name": "MemberAccess", + "src": "11389:26:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11357, + "type": "address", + "value": "_operator" + }, + "id": 11377, + "name": "Identifier", + "src": "11416:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11095, + "type": "contract TokenGrant", + "value": "tokenGrant" + }, + "id": 11378, + "name": "Identifier", + "src": "11427:10:39" + } + ], + "id": 11379, + "name": "FunctionCall", + "src": "11389:49:39" + } + ], + "id": 11380, + "name": "BinaryOperation", + "src": "11286:152:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 11381, + "name": "Literal", + "src": "11452:16:39" + } + ], + "id": 11382, + "name": "FunctionCall", + "src": "11265:213:39" + } + ], + "id": 11383, + "name": "ExpressionStatement", + "src": "11265:213:39" + }, + { + "attributes": { + "assignments": [11385] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "oldParams", + "scope": 11445, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11384, + "name": "ElementaryTypeName", + "src": "11488:7:39" + } + ], + "id": 11385, + "name": "VariableDeclaration", + "src": "11488:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11386, + "name": "Identifier", + "src": "11508:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11357, + "type": "address", + "value": "_operator" + }, + "id": 11387, + "name": "Identifier", + "src": "11518:9:39" + } + ], + "id": 11388, + "name": "IndexAccess", + "src": "11508:20:39" + } + ], + "id": 11389, + "name": "MemberAccess", + "src": "11508:33:39" + } + ], + "id": 11390, + "name": "VariableDeclarationStatement", + "src": "11488:53:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4680df59cce98ccd6dc27cbb13244303b66976f7ccd9420f7c7d47834ac73bbf", + "typeString": "literal_string \"Invalid timestamp\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11391, + "name": "Identifier", + "src": "11551:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11359, + "type": "uint256", + "value": "_undelegationTimestamp" + }, + "id": 11392, + "name": "Identifier", + "src": "11572:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28136, + "type": "block", + "value": "block" + }, + "id": 11393, + "name": "Identifier", + "src": "11598:5:39" + } + ], + "id": 11394, + "name": "MemberAccess", + "src": "11598:15:39" + } + ], + "id": 11395, + "name": "BinaryOperation", + "src": "11572:41:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11359, + "type": "uint256", + "value": "_undelegationTimestamp" + }, + "id": 11396, + "name": "Identifier", + "src": "11633:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getCreationTimestamp", + "referencedDeclaration": 27945, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11385, + "type": "uint256", + "value": "oldParams" + }, + "id": 11397, + "name": "Identifier", + "src": "11674:9:39" + } + ], + "id": 11398, + "name": "MemberAccess", + "src": "11674:30:39" + } + ], + "id": 11399, + "name": "FunctionCall", + "src": "11674:32:39" + } + ], + "id": 11400, + "name": "MemberAccess", + "src": "11674:36:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11091, + "type": "uint256", + "value": "initializationPeriod" + }, + "id": 11401, + "name": "Identifier", + "src": "11711:20:39" + } + ], + "id": 11402, + "name": "FunctionCall", + "src": "11674:58:39" + } + ], + "id": 11403, + "name": "BinaryOperation", + "src": "11633:99:39" + } + ], + "id": 11404, + "name": "BinaryOperation", + "src": "11572:160:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "496e76616c69642074696d657374616d70", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Invalid timestamp\"", + "value": "Invalid timestamp" + }, + "id": 11405, + "name": "Literal", + "src": "11746:19:39" + } + ], + "id": 11406, + "name": "FunctionCall", + "src": "11551:224:39" + } + ], + "id": 11407, + "name": "ExpressionStatement", + "src": "11551:224:39" + }, + { + "attributes": { + "assignments": [11409] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "existingUndelegationTimestamp", + "scope": 11445, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11408, + "name": "ElementaryTypeName", + "src": "11785:7:39" + } + ], + "id": 11409, + "name": "VariableDeclaration", + "src": "11785:37:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getUndelegationTimestamp", + "referencedDeclaration": 27977, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11385, + "type": "uint256", + "value": "oldParams" + }, + "id": 11410, + "name": "Identifier", + "src": "11837:9:39" + } + ], + "id": 11411, + "name": "MemberAccess", + "src": "11837:34:39" + } + ], + "id": 11412, + "name": "FunctionCall", + "src": "11837:36:39" + } + ], + "id": 11413, + "name": "VariableDeclarationStatement", + "src": "11785:88:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baae0451dc8b8787f0833fc6d6ecd4fa4fec50c467d7195249ba2e75960b24d2", + "typeString": "literal_string \"Operator may not postpone\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11414, + "name": "Identifier", + "src": "11883:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11409, + "type": "uint256", + "value": "existingUndelegationTimestamp" + }, + "id": 11415, + "name": "Identifier", + "src": "11951:29:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11416, + "name": "Literal", + "src": "11984:1:39" + } + ], + "id": 11417, + "name": "BinaryOperation", + "src": "11951:34:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11409, + "type": "uint256", + "value": "existingUndelegationTimestamp" + }, + "id": 11418, + "name": "Identifier", + "src": "12072:29:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11359, + "type": "uint256", + "value": "_undelegationTimestamp" + }, + "id": 11419, + "name": "Identifier", + "src": "12104:22:39" + } + ], + "id": 11420, + "name": "BinaryOperation", + "src": "12072:54:39" + } + ], + "id": 11421, + "name": "BinaryOperation", + "src": "11951:175:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11422, + "name": "Identifier", + "src": "12389:3:39" + } + ], + "id": 11423, + "name": "MemberAccess", + "src": "12389:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11357, + "type": "address", + "value": "_operator" + }, + "id": 11424, + "name": "Identifier", + "src": "12403:9:39" + } + ], + "id": 11425, + "name": "BinaryOperation", + "src": "12389:23:39" + } + ], + "id": 11426, + "name": "BinaryOperation", + "src": "11951:461:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4f70657261746f72206d6179206e6f7420706f7374706f6e65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Operator may not postpone\"", + "value": "Operator may not postpone" + }, + "id": 11427, + "name": "Literal", + "src": "12426:27:39" + } + ], + "id": 11428, + "name": "FunctionCall", + "src": "11883:580:39" + } + ], + "id": 11429, + "name": "ExpressionStatement", + "src": "11883:580:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11430, + "name": "Identifier", + "src": "12473:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11357, + "type": "address", + "value": "_operator" + }, + "id": 11431, + "name": "Identifier", + "src": "12483:9:39" + } + ], + "id": 11432, + "name": "IndexAccess", + "src": "12473:20:39" + } + ], + "id": 11433, + "name": "MemberAccess", + "src": "12473:33:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "setUndelegationTimestamp", + "referencedDeclaration": 27997, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11385, + "type": "uint256", + "value": "oldParams" + }, + "id": 11434, + "name": "Identifier", + "src": "12509:9:39" + } + ], + "id": 11435, + "name": "MemberAccess", + "src": "12509:34:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11359, + "type": "uint256", + "value": "_undelegationTimestamp" + }, + "id": 11436, + "name": "Identifier", + "src": "12557:22:39" + } + ], + "id": 11437, + "name": "FunctionCall", + "src": "12509:80:39" + } + ], + "id": 11438, + "name": "Assignment", + "src": "12473:116:39" + } + ], + "id": 11439, + "name": "ExpressionStatement", + "src": "12473:116:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11051, + "type": "function (address,uint256)", + "value": "Undelegated" + }, + "id": 11440, + "name": "Identifier", + "src": "12604:11:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11357, + "type": "address", + "value": "_operator" + }, + "id": 11441, + "name": "Identifier", + "src": "12616:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11359, + "type": "uint256", + "value": "_undelegationTimestamp" + }, + "id": 11442, + "name": "Identifier", + "src": "12627:22:39" + } + ], + "id": 11443, + "name": "FunctionCall", + "src": "12604:46:39" + } + ], + "id": 11444, + "name": "EmitStatement", + "src": "12599:51:39" + } + ], + "id": 11445, + "name": "Block", + "src": "11255:1402:39" + } + ], + "id": 11446, + "name": "FunctionDefinition", + "src": "11163:1494:39" + }, + { + "attributes": { + "documentation": "@notice Recovers staked tokens and transfers them back to the owner.\n Recovering tokens can only be performed when the operator finished\n undelegating.\n @param _operator Operator address.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "recoverStake", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 11522, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11447, + "name": "ElementaryTypeName", + "src": "12902:7:39" + } + ], + "id": 11448, + "name": "VariableDeclaration", + "src": "12902:17:39" + } + ], + "id": 11449, + "name": "ParameterList", + "src": "12901:19:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11450, + "name": "ParameterList", + "src": "12928:0:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [11452] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorParams", + "scope": 11521, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11451, + "name": "ElementaryTypeName", + "src": "12938:7:39" + } + ], + "id": 11452, + "name": "VariableDeclaration", + "src": "12938:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11453, + "name": "Identifier", + "src": "12963:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11448, + "type": "address", + "value": "_operator" + }, + "id": 11454, + "name": "Identifier", + "src": "12973:9:39" + } + ], + "id": 11455, + "name": "IndexAccess", + "src": "12963:20:39" + } + ], + "id": 11456, + "name": "MemberAccess", + "src": "12963:33:39" + } + ], + "id": 11457, + "name": "VariableDeclarationStatement", + "src": "12938:58:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fd3788beb72580329c2ed9b644188a5c4298fa00d0816077221edccdf7627650", + "typeString": "literal_string \"Not undelegated\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11458, + "name": "Identifier", + "src": "13006:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getUndelegationTimestamp", + "referencedDeclaration": 27977, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11452, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11459, + "name": "Identifier", + "src": "13027:14:39" + } + ], + "id": 11460, + "name": "MemberAccess", + "src": "13027:39:39" + } + ], + "id": 11461, + "name": "FunctionCall", + "src": "13027:41:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11462, + "name": "Literal", + "src": "13072:1:39" + } + ], + "id": 11463, + "name": "BinaryOperation", + "src": "13027:46:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420756e64656c656761746564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not undelegated\"", + "value": "Not undelegated" + }, + "id": 11464, + "name": "Literal", + "src": "13087:17:39" + } + ], + "id": 11465, + "name": "FunctionCall", + "src": "13006:108:39" + } + ], + "id": 11466, + "name": "ExpressionStatement", + "src": "13006:108:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5c8b6b2d9bfe0bc7cfe7f71992388de2796b749ab7f9953c19a7d0dfb8e9822c", + "typeString": "literal_string \"Still undelegating\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11467, + "name": "Identifier", + "src": "13124:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12368, + "type": "function (uint256) view returns (bool)", + "value": "_isUndelegatingFinished" + }, + "id": 11468, + "name": "Identifier", + "src": "13132:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11452, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11469, + "name": "Identifier", + "src": "13156:14:39" + } + ], + "id": 11470, + "name": "FunctionCall", + "src": "13132:39:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5374696c6c20756e64656c65676174696e67", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Still undelegating\"", + "value": "Still undelegating" + }, + "id": 11471, + "name": "Literal", + "src": "13173:20:39" + } + ], + "id": 11472, + "name": "FunctionCall", + "src": "13124:70:39" + } + ], + "id": 11473, + "name": "ExpressionStatement", + "src": "13124:70:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8cc71fd1e5a33aeba89e955430eb2e4809478d33099b44ae4ac9a199c189ae53", + "typeString": "literal_string \"Locked stake\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11474, + "name": "Identifier", + "src": "13204:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11646, + "type": "function (address) view returns (bool)", + "value": "isStakeLocked" + }, + "id": 11475, + "name": "Identifier", + "src": "13213:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11448, + "type": "address", + "value": "_operator" + }, + "id": 11476, + "name": "Identifier", + "src": "13227:9:39" + } + ], + "id": 11477, + "name": "FunctionCall", + "src": "13213:24:39" + } + ], + "id": 11478, + "name": "UnaryOperation", + "src": "13212:25:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4c6f636b6564207374616b65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Locked stake\"", + "value": "Locked stake" + }, + "id": 11479, + "name": "Literal", + "src": "13239:14:39" + } + ], + "id": 11480, + "name": "FunctionCall", + "src": "13204:50:39" + } + ], + "id": 11481, + "name": "ExpressionStatement", + "src": "13204:50:39" + }, + { + "attributes": { + "assignments": [11483] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "amount", + "scope": 11521, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11482, + "name": "ElementaryTypeName", + "src": "13265:7:39" + } + ], + "id": 11483, + "name": "VariableDeclaration", + "src": "13265:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAmount", + "referencedDeclaration": 27910, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11452, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11484, + "name": "Identifier", + "src": "13282:14:39" + } + ], + "id": 11485, + "name": "MemberAccess", + "src": "13282:24:39" + } + ], + "id": 11486, + "name": "FunctionCall", + "src": "13282:26:39" + } + ], + "id": 11487, + "name": "VariableDeclarationStatement", + "src": "13265:43:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11483, + "type": "uint256", + "value": "amount" + }, + "id": 11488, + "name": "Identifier", + "src": "13401:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11483, + "type": "uint256", + "value": "amount" + }, + "id": 11489, + "name": "Identifier", + "src": "13410:6:39" + } + ], + "id": 11490, + "name": "MemberAccess", + "src": "13410:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "cancel", + "referencedDeclaration": 20381, + "type": "function (struct TopUps.Storage storage pointer,address) returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11103, + "type": "struct TopUps.Storage storage ref", + "value": "topUps" + }, + "id": 11491, + "name": "Identifier", + "src": "13421:6:39" + } + ], + "id": 11492, + "name": "MemberAccess", + "src": "13421:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11448, + "type": "address", + "value": "_operator" + }, + "id": 11493, + "name": "Identifier", + "src": "13435:9:39" + } + ], + "id": 11494, + "name": "FunctionCall", + "src": "13421:24:39" + } + ], + "id": 11495, + "name": "FunctionCall", + "src": "13410:36:39" + } + ], + "id": 11496, + "name": "Assignment", + "src": "13401:45:39" + } + ], + "id": 11497, + "name": "ExpressionStatement", + "src": "13401:45:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11498, + "name": "Identifier", + "src": "13457:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11448, + "type": "address", + "value": "_operator" + }, + "id": 11499, + "name": "Identifier", + "src": "13467:9:39" + } + ], + "id": 11500, + "name": "IndexAccess", + "src": "13457:20:39" + } + ], + "id": 11501, + "name": "MemberAccess", + "src": "13457:33:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "setAmount", + "referencedDeclaration": 27930, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11452, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11502, + "name": "Identifier", + "src": "13493:14:39" + } + ], + "id": 11503, + "name": "MemberAccess", + "src": "13493:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11504, + "name": "Literal", + "src": "13518:1:39" + } + ], + "id": 11505, + "name": "FunctionCall", + "src": "13493:27:39" + } + ], + "id": 11506, + "name": "Assignment", + "src": "13457:63:39" + } + ], + "id": 11507, + "name": "ExpressionStatement", + "src": "13457:63:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12434, + "type": "function (address,address,uint256)", + "value": "transferOrDeposit" + }, + "id": 11508, + "name": "Identifier", + "src": "13530:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "owner", + "referencedDeclaration": 8829, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11509, + "name": "Identifier", + "src": "13548:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11448, + "type": "address", + "value": "_operator" + }, + "id": 11510, + "name": "Identifier", + "src": "13558:9:39" + } + ], + "id": 11511, + "name": "IndexAccess", + "src": "13548:20:39" + } + ], + "id": 11512, + "name": "MemberAccess", + "src": "13548:26:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11448, + "type": "address", + "value": "_operator" + }, + "id": 11513, + "name": "Identifier", + "src": "13576:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11483, + "type": "uint256", + "value": "amount" + }, + "id": 11514, + "name": "Identifier", + "src": "13587:6:39" + } + ], + "id": 11515, + "name": "FunctionCall", + "src": "13530:64:39" + } + ], + "id": 11516, + "name": "ExpressionStatement", + "src": "13530:64:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11055, + "type": "function (address)", + "value": "RecoveredStake" + }, + "id": 11517, + "name": "Identifier", + "src": "13610:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11448, + "type": "address", + "value": "_operator" + }, + "id": 11518, + "name": "Identifier", + "src": "13625:9:39" + } + ], + "id": 11519, + "name": "FunctionCall", + "src": "13610:25:39" + } + ], + "id": 11520, + "name": "EmitStatement", + "src": "13605:30:39" + } + ], + "id": 11521, + "name": "Block", + "src": "12928:714:39" + } + ], + "id": 11522, + "name": "FunctionDefinition", + "src": "12880:762:39" + }, + { + "attributes": { + "documentation": "@notice Gets stake delegation info for the given operator.\n @param _operator Operator address.\n @return amount The amount of tokens the given operator delegated.\n @return createdAt The time when the stake has been delegated.\n @return undelegatedAt The time when undelegation has been requested.\n If undelegation has not been requested, 0 is returned.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "getDelegationInfo", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 11541, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11523, + "name": "ElementaryTypeName", + "src": "14069:7:39" + } + ], + "id": 11524, + "name": "VariableDeclaration", + "src": "14069:17:39" + } + ], + "id": 11525, + "name": "ParameterList", + "src": "14068:19:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "amount", + "scope": 11541, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11526, + "name": "ElementaryTypeName", + "src": "14146:7:39" + } + ], + "id": 11527, + "name": "VariableDeclaration", + "src": "14146:14:39" + }, + { + "attributes": { + "constant": false, + "name": "createdAt", + "scope": 11541, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11528, + "name": "ElementaryTypeName", + "src": "14174:7:39" + } + ], + "id": 11529, + "name": "VariableDeclaration", + "src": "14174:17:39" + }, + { + "attributes": { + "constant": false, + "name": "undelegatedAt", + "scope": 11541, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11530, + "name": "ElementaryTypeName", + "src": "14205:7:39" + } + ], + "id": 11531, + "name": "VariableDeclaration", + "src": "14205:21:39" + } + ], + "id": 11532, + "name": "ParameterList", + "src": "14132:104:39" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 11532 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple(uint256,uint256,uint256)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "unpack", + "referencedDeclaration": 27895, + "type": "function (uint256) pure returns (uint256,uint256,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11533, + "name": "Identifier", + "src": "14258:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11524, + "type": "address", + "value": "_operator" + }, + "id": 11534, + "name": "Identifier", + "src": "14268:9:39" + } + ], + "id": 11535, + "name": "IndexAccess", + "src": "14258:20:39" + } + ], + "id": 11536, + "name": "MemberAccess", + "src": "14258:33:39" + } + ], + "id": 11537, + "name": "MemberAccess", + "src": "14258:40:39" + } + ], + "id": 11538, + "name": "FunctionCall", + "src": "14258:42:39" + } + ], + "id": 11539, + "name": "Return", + "src": "14251:49:39" + } + ], + "id": 11540, + "name": "Block", + "src": "14241:66:39" + } + ], + "id": 11541, + "name": "FunctionDefinition", + "src": "14042:265:39" + }, + { + "attributes": { + "documentation": "@notice Locks given operator stake for the specified duration.\n Locked stake may not be recovered until the lock expires or is released,\n even if the normal undelegation period has passed.\n Only previously authorized operator contract can lock the stake.\n @param operator Operator address.\n @param duration Lock duration in seconds.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "lockStake", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 11591, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11542, + "name": "ElementaryTypeName", + "src": "14708:7:39" + } + ], + "id": 11543, + "name": "VariableDeclaration", + "src": "14708:16:39" + }, + { + "attributes": { + "constant": false, + "name": "duration", + "scope": 11591, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11544, + "name": "ElementaryTypeName", + "src": "14726:7:39" + } + ], + "id": 11545, + "name": "VariableDeclaration", + "src": "14726:16:39" + } + ], + "id": 11546, + "name": "ParameterList", + "src": "14707:36:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11551, + "name": "ParameterList", + "src": "14812:0:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1640, + "type": "modifier (address)", + "value": "onlyApprovedOperatorContract" + }, + "id": 11547, + "name": "Identifier", + "src": "14767:28:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11548, + "name": "Identifier", + "src": "14796:3:39" + } + ], + "id": 11549, + "name": "MemberAccess", + "src": "14796:10:39" + } + ], + "id": 11550, + "name": "ModifierInvocation", + "src": "14767:40:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11552, + "name": "Identifier", + "src": "14822:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1713, + "type": "function (address,address) view returns (bool)", + "value": "isAuthorizedForOperator" + }, + "id": 11553, + "name": "Identifier", + "src": "14843:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11543, + "type": "address", + "value": "operator" + }, + "id": 11554, + "name": "Identifier", + "src": "14867:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11555, + "name": "Identifier", + "src": "14877:3:39" + } + ], + "id": 11556, + "name": "MemberAccess", + "src": "14877:10:39" + } + ], + "id": 11557, + "name": "FunctionCall", + "src": "14843:45:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 11558, + "name": "Literal", + "src": "14902:16:39" + } + ], + "id": 11559, + "name": "FunctionCall", + "src": "14822:106:39" + } + ], + "id": 11560, + "name": "ExpressionStatement", + "src": "14822:106:39" + }, + { + "attributes": { + "assignments": [11562] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorParams", + "scope": 11590, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11561, + "name": "ElementaryTypeName", + "src": "14939:7:39" + } + ], + "id": 11562, + "name": "VariableDeclaration", + "src": "14939:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11563, + "name": "Identifier", + "src": "14964:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11543, + "type": "address", + "value": "operator" + }, + "id": 11564, + "name": "Identifier", + "src": "14974:8:39" + } + ], + "id": 11565, + "name": "IndexAccess", + "src": "14964:19:39" + } + ], + "id": 11566, + "name": "MemberAccess", + "src": "14964:32:39" + } + ], + "id": 11567, + "name": "VariableDeclarationStatement", + "src": "14939:57:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11568, + "name": "Identifier", + "src": "15007:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12314, + "type": "function (uint256) view returns (bool)", + "value": "_isInitialized" + }, + "id": 11569, + "name": "Identifier", + "src": "15015:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11562, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11570, + "name": "Identifier", + "src": "15030:14:39" + } + ], + "id": 11571, + "name": "FunctionCall", + "src": "15015:30:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "496e616374697665207374616b65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Inactive stake\"", + "value": "Inactive stake" + }, + "id": 11572, + "name": "Literal", + "src": "15047:16:39" + } + ], + "id": 11573, + "name": "FunctionCall", + "src": "15007:57:39" + } + ], + "id": 11574, + "name": "ExpressionStatement", + "src": "15007:57:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7ff35c91519e88e5ca900aeb20aea0affdbc614d349d23939fe23d06949b79f3", + "typeString": "literal_string \"Undelegating stake\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11575, + "name": "Identifier", + "src": "15074:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12339, + "type": "function (uint256) view returns (bool)", + "value": "_isUndelegating" + }, + "id": 11576, + "name": "Identifier", + "src": "15083:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11562, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11577, + "name": "Identifier", + "src": "15099:14:39" + } + ], + "id": 11578, + "name": "FunctionCall", + "src": "15083:31:39" + } + ], + "id": 11579, + "name": "UnaryOperation", + "src": "15082:32:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "556e64656c65676174696e67207374616b65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Undelegating stake\"", + "value": "Undelegating stake" + }, + "id": 11580, + "name": "Literal", + "src": "15116:20:39" + } + ], + "id": 11581, + "name": "FunctionCall", + "src": "15074:63:39" + } + ], + "id": 11582, + "name": "ExpressionStatement", + "src": "15074:63:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "lockStake", + "referencedDeclaration": 19797, + "type": "function (struct Locks.Storage storage pointer,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11101, + "type": "struct Locks.Storage storage ref", + "value": "locks" + }, + "id": 11583, + "name": "Identifier", + "src": "15148:5:39" + } + ], + "id": 11585, + "name": "MemberAccess", + "src": "15148:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11543, + "type": "address", + "value": "operator" + }, + "id": 11586, + "name": "Identifier", + "src": "15164:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11545, + "type": "uint256", + "value": "duration" + }, + "id": 11587, + "name": "Identifier", + "src": "15174:8:39" + } + ], + "id": 11588, + "name": "FunctionCall", + "src": "15148:35:39" + } + ], + "id": 11589, + "name": "ExpressionStatement", + "src": "15148:35:39" + } + ], + "id": 11590, + "name": "Block", + "src": "14812:378:39" + } + ], + "id": 11591, + "name": "FunctionDefinition", + "src": "14689:501:39" + }, + { + "attributes": { + "documentation": "@notice Removes a lock the caller had previously placed on the operator.\n @dev Only for operator contracts.\n To remove expired or disabled locks, use `releaseExpiredLocks`.\n The authorization check ensures that the caller must have been able\n to place a lock on the operator sometime in the past.\n We don't need to check for current approval status of the caller\n because unlocking stake cannot harm the operator\n nor interfere with other operator contracts.\n Therefore even disabled operator contracts may freely unlock stake.\n @param operator Operator address.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "unlockStake", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 11612, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11592, + "name": "ElementaryTypeName", + "src": "15851:7:39" + } + ], + "id": 11593, + "name": "VariableDeclaration", + "src": "15851:16:39" + } + ], + "id": 11594, + "name": "ParameterList", + "src": "15850:18:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11595, + "name": "ParameterList", + "src": "15876:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11596, + "name": "Identifier", + "src": "15886:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1713, + "type": "function (address,address) view returns (bool)", + "value": "isAuthorizedForOperator" + }, + "id": 11597, + "name": "Identifier", + "src": "15907:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11593, + "type": "address", + "value": "operator" + }, + "id": 11598, + "name": "Identifier", + "src": "15931:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11599, + "name": "Identifier", + "src": "15941:3:39" + } + ], + "id": 11600, + "name": "MemberAccess", + "src": "15941:10:39" + } + ], + "id": 11601, + "name": "FunctionCall", + "src": "15907:45:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 11602, + "name": "Literal", + "src": "15966:16:39" + } + ], + "id": 11603, + "name": "FunctionCall", + "src": "15886:106:39" + } + ], + "id": 11604, + "name": "ExpressionStatement", + "src": "15886:106:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "releaseLock", + "referencedDeclaration": 19821, + "type": "function (struct Locks.Storage storage pointer,address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11101, + "type": "struct Locks.Storage storage ref", + "value": "locks" + }, + "id": 11605, + "name": "Identifier", + "src": "16002:5:39" + } + ], + "id": 11607, + "name": "MemberAccess", + "src": "16002:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11593, + "type": "address", + "value": "operator" + }, + "id": 11608, + "name": "Identifier", + "src": "16020:8:39" + } + ], + "id": 11609, + "name": "FunctionCall", + "src": "16002:27:39" + } + ], + "id": 11610, + "name": "ExpressionStatement", + "src": "16002:27:39" + } + ], + "id": 11611, + "name": "Block", + "src": "15876:160:39" + } + ], + "id": 11612, + "name": "FunctionDefinition", + "src": "15830:206:39" + }, + { + "attributes": { + "documentation": "@notice Removes the lock of the specified operator contract\n if the lock has expired or the contract has been disabled.\n @dev Necessary for removing locks placed by contracts\n that have been disabled by the panic button.\n Also applicable to prevent inadvertent DoS of `recoverStake`\n if too many operator contracts have failed to clean up their locks.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "releaseExpiredLock", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 11630, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11613, + "name": "ElementaryTypeName", + "src": "16465:7:39" + } + ], + "id": 11614, + "name": "VariableDeclaration", + "src": "16465:16:39" + }, + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 11630, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11615, + "name": "ElementaryTypeName", + "src": "16483:7:39" + } + ], + "id": 11616, + "name": "VariableDeclaration", + "src": "16483:24:39" + } + ], + "id": 11617, + "name": "ParameterList", + "src": "16464:44:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11618, + "name": "ParameterList", + "src": "16528:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "releaseExpiredLock", + "referencedDeclaration": 19888, + "type": "function (struct Locks.Storage storage pointer,address,address,address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11101, + "type": "struct Locks.Storage storage ref", + "value": "locks" + }, + "id": 11619, + "name": "Identifier", + "src": "16538:5:39" + } + ], + "id": 11621, + "name": "MemberAccess", + "src": "16538:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11614, + "type": "address", + "value": "operator" + }, + "id": 11622, + "name": "Identifier", + "src": "16563:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11616, + "type": "address", + "value": "operatorContract" + }, + "id": 11623, + "name": "Identifier", + "src": "16573:16:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 11624, + "name": "ElementaryTypeNameExpression", + "src": "16591:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28238, + "type": "contract TokenStaking", + "value": "this" + }, + "id": 11625, + "name": "Identifier", + "src": "16599:4:39" + } + ], + "id": 11626, + "name": "FunctionCall", + "src": "16591:13:39" + } + ], + "id": 11627, + "name": "FunctionCall", + "src": "16538:67:39" + } + ], + "id": 11628, + "name": "ExpressionStatement", + "src": "16538:67:39" + } + ], + "id": 11629, + "name": "Block", + "src": "16528:84:39" + } + ], + "id": 11630, + "name": "FunctionDefinition", + "src": "16437:175:39" + }, + { + "attributes": { + "documentation": "@notice Check whether the operator has any active locks\n that haven't expired yet\n and whose creators aren't disabled by the panic button.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "isStakeLocked", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 11646, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11631, + "name": "ElementaryTypeName", + "src": "16802:7:39" + } + ], + "id": 11632, + "name": "VariableDeclaration", + "src": "16802:16:39" + } + ], + "id": 11633, + "name": "ParameterList", + "src": "16801:18:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 11646, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 11634, + "name": "ElementaryTypeName", + "src": "16841:4:39" + } + ], + "id": 11635, + "name": "VariableDeclaration", + "src": "16841:4:39" + } + ], + "id": 11636, + "name": "ParameterList", + "src": "16840:6:39" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 11636 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "isStakeLocked", + "referencedDeclaration": 19955, + "type": "function (struct Locks.Storage storage pointer,address,address) view returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11101, + "type": "struct Locks.Storage storage ref", + "value": "locks" + }, + "id": 11637, + "name": "Identifier", + "src": "16864:5:39" + } + ], + "id": 11638, + "name": "MemberAccess", + "src": "16864:19:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11632, + "type": "address", + "value": "operator" + }, + "id": 11639, + "name": "Identifier", + "src": "16884:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStaking_$12435", + "typeString": "contract TokenStaking" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 11640, + "name": "ElementaryTypeNameExpression", + "src": "16894:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28238, + "type": "contract TokenStaking", + "value": "this" + }, + "id": 11641, + "name": "Identifier", + "src": "16902:4:39" + } + ], + "id": 11642, + "name": "FunctionCall", + "src": "16894:13:39" + } + ], + "id": 11643, + "name": "FunctionCall", + "src": "16864:44:39" + } + ], + "id": 11644, + "name": "Return", + "src": "16857:51:39" + } + ], + "id": 11645, + "name": "Block", + "src": "16847:68:39" + } + ], + "id": 11646, + "name": "FunctionDefinition", + "src": "16779:136:39" + }, + { + "attributes": { + "documentation": "@notice Get the locks placed on the operator.\n @return creators The addresses of operator contracts\n that have placed a lock on the operator.\n @return expirations The expiration times\n of the locks placed on the operator.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "getLocks", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 11663, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11647, + "name": "ElementaryTypeName", + "src": "17197:7:39" + } + ], + "id": 11648, + "name": "VariableDeclaration", + "src": "17197:16:39" + } + ], + "id": 11649, + "name": "ParameterList", + "src": "17196:18:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "creators", + "scope": 11663, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11650, + "name": "ElementaryTypeName", + "src": "17260:7:39" + } + ], + "id": 11651, + "name": "ArrayTypeName", + "src": "17260:9:39" + } + ], + "id": 11652, + "name": "VariableDeclaration", + "src": "17260:25:39" + }, + { + "attributes": { + "constant": false, + "name": "expirations", + "scope": 11663, + "stateVariable": false, + "storageLocation": "memory", + "type": "uint256[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "uint256[]" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11653, + "name": "ElementaryTypeName", + "src": "17287:7:39" + } + ], + "id": 11654, + "name": "ArrayTypeName", + "src": "17287:9:39" + } + ], + "id": 11655, + "name": "VariableDeclaration", + "src": "17287:28:39" + } + ], + "id": 11656, + "name": "ParameterList", + "src": "17259:57:39" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 11656 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple(address[] memory,uint256[] memory)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "getLocks", + "referencedDeclaration": 20064, + "type": "function (struct Locks.Storage storage pointer,address) view returns (address[] memory,uint256[] memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11101, + "type": "struct Locks.Storage storage ref", + "value": "locks" + }, + "id": 11657, + "name": "Identifier", + "src": "17338:5:39" + } + ], + "id": 11658, + "name": "MemberAccess", + "src": "17338:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11648, + "type": "address", + "value": "operator" + }, + "id": 11659, + "name": "Identifier", + "src": "17353:8:39" + } + ], + "id": 11660, + "name": "FunctionCall", + "src": "17338:24:39" + } + ], + "id": 11661, + "name": "Return", + "src": "17331:31:39" + } + ], + "id": 11662, + "name": "Block", + "src": "17321:48:39" + } + ], + "id": 11663, + "name": "FunctionDefinition", + "src": "17179:190:39" + }, + { + "attributes": { + "documentation": "@notice Slash provided token amount from every member in the misbehaved\n operators array and burn 100% of all the tokens.\n @param amountToSlash Token amount to slash from every misbehaved operator.\n @param misbehavedOperators Array of addresses to seize the tokens from.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "slash", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "amountToSlash", + "scope": 11804, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11664, + "name": "ElementaryTypeName", + "src": "17690:7:39" + } + ], + "id": 11665, + "name": "VariableDeclaration", + "src": "17690:21:39" + }, + { + "attributes": { + "constant": false, + "name": "misbehavedOperators", + "scope": 11804, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11666, + "name": "ElementaryTypeName", + "src": "17713:7:39" + } + ], + "id": 11667, + "name": "ArrayTypeName", + "src": "17713:9:39" + } + ], + "id": 11668, + "name": "VariableDeclaration", + "src": "17713:36:39" + } + ], + "id": 11669, + "name": "ParameterList", + "src": "17689:61:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11674, + "name": "ParameterList", + "src": "17819:0:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1640, + "type": "modifier (address)", + "value": "onlyApprovedOperatorContract" + }, + "id": 11670, + "name": "Identifier", + "src": "17774:28:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11671, + "name": "Identifier", + "src": "17803:3:39" + } + ], + "id": 11672, + "name": "MemberAccess", + "src": "17803:10:39" + } + ], + "id": 11673, + "name": "ModifierInvocation", + "src": "17774:40:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [11676], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "totalAmountToBurn", + "scope": 11803, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11675, + "name": "ElementaryTypeName", + "src": "17829:7:39" + } + ], + "id": 11676, + "name": "VariableDeclaration", + "src": "17829:25:39" + } + ], + "id": 11677, + "name": "VariableDeclarationStatement", + "src": "17829:25:39" + }, + { + "attributes": { + "assignments": [11679] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "authoritySource", + "scope": 11803, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11678, + "name": "ElementaryTypeName", + "src": "17864:7:39" + } + ], + "id": 11679, + "name": "VariableDeclaration", + "src": "17864:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1782, + "type": "function (address) view returns (address)", + "value": "getAuthoritySource" + }, + "id": 11680, + "name": "Identifier", + "src": "17890:18:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11681, + "name": "Identifier", + "src": "17909:3:39" + } + ], + "id": 11682, + "name": "MemberAccess", + "src": "17909:10:39" + } + ], + "id": 11683, + "name": "FunctionCall", + "src": "17890:30:39" + } + ], + "id": 11684, + "name": "VariableDeclarationStatement", + "src": "17864:56:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [11686] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 11796, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11685, + "name": "ElementaryTypeName", + "src": "17935:7:39" + } + ], + "id": 11686, + "name": "VariableDeclaration", + "src": "17935:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11687, + "name": "Literal", + "src": "17947:1:39" + } + ], + "id": 11688, + "name": "VariableDeclarationStatement", + "src": "17935:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11686, + "type": "uint256", + "value": "i" + }, + "id": 11689, + "name": "Identifier", + "src": "17950:1:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11668, + "type": "address[] memory", + "value": "misbehavedOperators" + }, + "id": 11690, + "name": "Identifier", + "src": "17954:19:39" + } + ], + "id": 11691, + "name": "MemberAccess", + "src": "17954:26:39" + } + ], + "id": 11692, + "name": "BinaryOperation", + "src": "17950:30:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "++", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11686, + "type": "uint256", + "value": "i" + }, + "id": 11693, + "name": "Identifier", + "src": "17982:1:39" + } + ], + "id": 11694, + "name": "UnaryOperation", + "src": "17982:3:39" + } + ], + "id": 11695, + "name": "ExpressionStatement", + "src": "17982:3:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [11697] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 11795, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11696, + "name": "ElementaryTypeName", + "src": "18001:7:39" + } + ], + "id": 11697, + "name": "VariableDeclaration", + "src": "18001:16:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11668, + "type": "address[] memory", + "value": "misbehavedOperators" + }, + "id": 11698, + "name": "Identifier", + "src": "18020:19:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11686, + "type": "uint256", + "value": "i" + }, + "id": 11699, + "name": "Identifier", + "src": "18040:1:39" + } + ], + "id": 11700, + "name": "IndexAccess", + "src": "18020:22:39" + } + ], + "id": 11701, + "name": "VariableDeclarationStatement", + "src": "18001:41:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11702, + "name": "Identifier", + "src": "18056:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1621, + "type": "mapping(address => mapping(address => bool))", + "value": "authorizations" + }, + "id": 11703, + "name": "Identifier", + "src": "18081:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11679, + "type": "address", + "value": "authoritySource" + }, + "id": 11704, + "name": "Identifier", + "src": "18096:15:39" + } + ], + "id": 11705, + "name": "IndexAccess", + "src": "18081:31:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11697, + "type": "address", + "value": "operator" + }, + "id": 11706, + "name": "Identifier", + "src": "18113:8:39" + } + ], + "id": 11707, + "name": "IndexAccess", + "src": "18081:41:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 11708, + "name": "Literal", + "src": "18140:16:39" + } + ], + "id": 11709, + "name": "FunctionCall", + "src": "18056:114:39" + } + ], + "id": 11710, + "name": "ExpressionStatement", + "src": "18056:114:39" + }, + { + "attributes": { + "assignments": [11712] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorParams", + "scope": 11795, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11711, + "name": "ElementaryTypeName", + "src": "18185:7:39" + } + ], + "id": 11712, + "name": "VariableDeclaration", + "src": "18185:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11713, + "name": "Identifier", + "src": "18210:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11697, + "type": "address", + "value": "operator" + }, + "id": 11714, + "name": "Identifier", + "src": "18220:8:39" + } + ], + "id": 11715, + "name": "IndexAccess", + "src": "18210:19:39" + } + ], + "id": 11716, + "name": "MemberAccess", + "src": "18210:32:39" + } + ], + "id": 11717, + "name": "VariableDeclarationStatement", + "src": "18185:57:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11718, + "name": "Identifier", + "src": "18256:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12314, + "type": "function (uint256) view returns (bool)", + "value": "_isInitialized" + }, + "id": 11719, + "name": "Identifier", + "src": "18264:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11712, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11720, + "name": "Identifier", + "src": "18279:14:39" + } + ], + "id": 11721, + "name": "FunctionCall", + "src": "18264:30:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "496e616374697665207374616b65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Inactive stake\"", + "value": "Inactive stake" + }, + "id": 11722, + "name": "Literal", + "src": "18296:16:39" + } + ], + "id": 11723, + "name": "FunctionCall", + "src": "18256:57:39" + } + ], + "id": 11724, + "name": "ExpressionStatement", + "src": "18256:57:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", + "typeString": "literal_string \"Stake is released\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11725, + "name": "Identifier", + "src": "18328:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12390, + "type": "function (address,uint256,address) view returns (bool)", + "value": "_isStakeReleased" + }, + "id": 11726, + "name": "Identifier", + "src": "18354:16:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11697, + "type": "address", + "value": "operator" + }, + "id": 11727, + "name": "Identifier", + "src": "18371:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11712, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11728, + "name": "Identifier", + "src": "18381:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11729, + "name": "Identifier", + "src": "18397:3:39" + } + ], + "id": 11730, + "name": "MemberAccess", + "src": "18397:10:39" + } + ], + "id": 11731, + "name": "FunctionCall", + "src": "18354:54:39" + } + ], + "id": 11732, + "name": "UnaryOperation", + "src": "18353:55:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5374616b652069732072656c6561736564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Stake is released\"", + "value": "Stake is released" + }, + "id": 11733, + "name": "Literal", + "src": "18426:19:39" + } + ], + "id": 11734, + "name": "FunctionCall", + "src": "18328:131:39" + } + ], + "id": 11735, + "name": "ExpressionStatement", + "src": "18328:131:39" + }, + { + "attributes": { + "assignments": [11737] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "currentAmount", + "scope": 11795, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11736, + "name": "ElementaryTypeName", + "src": "18474:7:39" + } + ], + "id": 11737, + "name": "VariableDeclaration", + "src": "18474:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAmount", + "referencedDeclaration": 27910, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11712, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11738, + "name": "Identifier", + "src": "18498:14:39" + } + ], + "id": 11739, + "name": "MemberAccess", + "src": "18498:24:39" + } + ], + "id": 11740, + "name": "FunctionCall", + "src": "18498:26:39" + } + ], + "id": 11741, + "name": "VariableDeclarationStatement", + "src": "18474:50:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11737, + "type": "uint256", + "value": "currentAmount" + }, + "id": 11742, + "name": "Identifier", + "src": "18543:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11665, + "type": "uint256", + "value": "amountToSlash" + }, + "id": 11743, + "name": "Identifier", + "src": "18559:13:39" + } + ], + "id": 11744, + "name": "BinaryOperation", + "src": "18543:29:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11676, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11745, + "name": "Identifier", + "src": "18592:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11676, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11746, + "name": "Identifier", + "src": "18612:17:39" + } + ], + "id": 11747, + "name": "MemberAccess", + "src": "18612:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11737, + "type": "uint256", + "value": "currentAmount" + }, + "id": 11748, + "name": "Identifier", + "src": "18634:13:39" + } + ], + "id": 11749, + "name": "FunctionCall", + "src": "18612:36:39" + } + ], + "id": 11750, + "name": "Assignment", + "src": "18592:56:39" + } + ], + "id": 11751, + "name": "ExpressionStatement", + "src": "18592:56:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11752, + "name": "Identifier", + "src": "18666:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11697, + "type": "address", + "value": "operator" + }, + "id": 11753, + "name": "Identifier", + "src": "18676:8:39" + } + ], + "id": 11754, + "name": "IndexAccess", + "src": "18666:19:39" + } + ], + "id": 11755, + "name": "MemberAccess", + "src": "18666:32:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "setAmount", + "referencedDeclaration": 27930, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11712, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11756, + "name": "Identifier", + "src": "18701:14:39" + } + ], + "id": 11757, + "name": "MemberAccess", + "src": "18701:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11758, + "name": "Literal", + "src": "18726:1:39" + } + ], + "id": 11759, + "name": "FunctionCall", + "src": "18701:27:39" + } + ], + "id": 11760, + "name": "Assignment", + "src": "18666:62:39" + } + ], + "id": 11761, + "name": "ExpressionStatement", + "src": "18666:62:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11061, + "type": "function (address,uint256)", + "value": "TokensSlashed" + }, + "id": 11762, + "name": "Identifier", + "src": "18751:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11697, + "type": "address", + "value": "operator" + }, + "id": 11763, + "name": "Identifier", + "src": "18765:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11737, + "type": "uint256", + "value": "currentAmount" + }, + "id": 11764, + "name": "Identifier", + "src": "18775:13:39" + } + ], + "id": 11765, + "name": "FunctionCall", + "src": "18751:38:39" + } + ], + "id": 11766, + "name": "EmitStatement", + "src": "18746:43:39" + } + ], + "id": 11767, + "name": "Block", + "src": "18574:230:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11676, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11768, + "name": "Identifier", + "src": "18828:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11676, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11769, + "name": "Identifier", + "src": "18848:17:39" + } + ], + "id": 11770, + "name": "MemberAccess", + "src": "18848:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11665, + "type": "uint256", + "value": "amountToSlash" + }, + "id": 11771, + "name": "Identifier", + "src": "18870:13:39" + } + ], + "id": 11772, + "name": "FunctionCall", + "src": "18848:36:39" + } + ], + "id": 11773, + "name": "Assignment", + "src": "18828:56:39" + } + ], + "id": 11774, + "name": "ExpressionStatement", + "src": "18828:56:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11775, + "name": "Identifier", + "src": "18902:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11697, + "type": "address", + "value": "operator" + }, + "id": 11776, + "name": "Identifier", + "src": "18912:8:39" + } + ], + "id": 11777, + "name": "IndexAccess", + "src": "18902:19:39" + } + ], + "id": 11778, + "name": "MemberAccess", + "src": "18902:32:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "setAmount", + "referencedDeclaration": 27930, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11712, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11779, + "name": "Identifier", + "src": "18937:14:39" + } + ], + "id": 11780, + "name": "MemberAccess", + "src": "18937:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 326, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11737, + "type": "uint256", + "value": "currentAmount" + }, + "id": 11781, + "name": "Identifier", + "src": "18983:13:39" + } + ], + "id": 11782, + "name": "MemberAccess", + "src": "18983:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11665, + "type": "uint256", + "value": "amountToSlash" + }, + "id": 11783, + "name": "Identifier", + "src": "19001:13:39" + } + ], + "id": 11784, + "name": "FunctionCall", + "src": "18983:32:39" + } + ], + "id": 11785, + "name": "FunctionCall", + "src": "18937:96:39" + } + ], + "id": 11786, + "name": "Assignment", + "src": "18902:131:39" + } + ], + "id": 11787, + "name": "ExpressionStatement", + "src": "18902:131:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11061, + "type": "function (address,uint256)", + "value": "TokensSlashed" + }, + "id": 11788, + "name": "Identifier", + "src": "19056:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11697, + "type": "address", + "value": "operator" + }, + "id": 11789, + "name": "Identifier", + "src": "19070:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11665, + "type": "uint256", + "value": "amountToSlash" + }, + "id": 11790, + "name": "Identifier", + "src": "19080:13:39" + } + ], + "id": 11791, + "name": "FunctionCall", + "src": "19056:38:39" + } + ], + "id": 11792, + "name": "EmitStatement", + "src": "19051:43:39" + } + ], + "id": 11793, + "name": "Block", + "src": "18810:299:39" + } + ], + "id": 11794, + "name": "IfStatement", + "src": "18539:570:39" + } + ], + "id": 11795, + "name": "Block", + "src": "17987:1132:39" + } + ], + "id": 11796, + "name": "ForStatement", + "src": "17930:1189:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "burn", + "referencedDeclaration": 1009, + "type": "function (uint256) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11093, + "type": "contract ERC20Burnable", + "value": "token" + }, + "id": 11797, + "name": "Identifier", + "src": "19129:5:39" + } + ], + "id": 11799, + "name": "MemberAccess", + "src": "19129:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11676, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11800, + "name": "Identifier", + "src": "19140:17:39" + } + ], + "id": 11801, + "name": "FunctionCall", + "src": "19129:29:39" + } + ], + "id": 11802, + "name": "ExpressionStatement", + "src": "19129:29:39" + } + ], + "id": 11803, + "name": "Block", + "src": "17819:1346:39" + } + ], + "id": 11804, + "name": "FunctionDefinition", + "src": "17675:1490:39" + }, + { + "attributes": { + "documentation": "@notice Seize provided token amount from every member in the misbehaved\n operators array. The tattletale is rewarded with 5% of the total seized\n amount scaled by the reward adjustment parameter and the rest 95% is burned.\n @param amountToSeize Token amount to seize from every misbehaved operator.\n @param rewardMultiplier Reward adjustment in percentage. Min 1% and 100% max.\n @param tattletale Address to receive the 5% reward.\n @param misbehavedOperators Array of addresses to seize the tokens from.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "seize", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "amountToSeize", + "scope": 11970, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11805, + "name": "ElementaryTypeName", + "src": "19749:7:39" + } + ], + "id": 11806, + "name": "VariableDeclaration", + "src": "19749:21:39" + }, + { + "attributes": { + "constant": false, + "name": "rewardMultiplier", + "scope": 11970, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11807, + "name": "ElementaryTypeName", + "src": "19780:7:39" + } + ], + "id": 11808, + "name": "VariableDeclaration", + "src": "19780:24:39" + }, + { + "attributes": { + "constant": false, + "name": "tattletale", + "scope": 11970, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11809, + "name": "ElementaryTypeName", + "src": "19814:7:39" + } + ], + "id": 11810, + "name": "VariableDeclaration", + "src": "19814:18:39" + }, + { + "attributes": { + "constant": false, + "name": "misbehavedOperators", + "scope": 11970, + "stateVariable": false, + "storageLocation": "memory", + "type": "address[]", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "length": null, + "type": "address[]" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11811, + "name": "ElementaryTypeName", + "src": "19842:7:39" + } + ], + "id": 11812, + "name": "ArrayTypeName", + "src": "19842:9:39" + } + ], + "id": 11813, + "name": "VariableDeclaration", + "src": "19842:36:39" + } + ], + "id": 11814, + "name": "ParameterList", + "src": "19739:145:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11819, + "name": "ParameterList", + "src": "19933:0:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1640, + "type": "modifier (address)", + "value": "onlyApprovedOperatorContract" + }, + "id": 11815, + "name": "Identifier", + "src": "19892:28:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11816, + "name": "Identifier", + "src": "19921:3:39" + } + ], + "id": 11817, + "name": "MemberAccess", + "src": "19921:10:39" + } + ], + "id": 11818, + "name": "ModifierInvocation", + "src": "19892:40:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [11821], + "initialValue": null + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "totalAmountToBurn", + "scope": 11969, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11820, + "name": "ElementaryTypeName", + "src": "19943:7:39" + } + ], + "id": 11821, + "name": "VariableDeclaration", + "src": "19943:25:39" + } + ], + "id": 11822, + "name": "VariableDeclarationStatement", + "src": "19943:25:39" + }, + { + "attributes": { + "assignments": [11824] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "authoritySource", + "scope": 11969, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11823, + "name": "ElementaryTypeName", + "src": "19978:7:39" + } + ], + "id": 11824, + "name": "VariableDeclaration", + "src": "19978:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1782, + "type": "function (address) view returns (address)", + "value": "getAuthoritySource" + }, + "id": 11825, + "name": "Identifier", + "src": "20004:18:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11826, + "name": "Identifier", + "src": "20023:3:39" + } + ], + "id": 11827, + "name": "MemberAccess", + "src": "20023:10:39" + } + ], + "id": 11828, + "name": "FunctionCall", + "src": "20004:30:39" + } + ], + "id": 11829, + "name": "VariableDeclarationStatement", + "src": "19978:56:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [11831] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "i", + "scope": 11941, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11830, + "name": "ElementaryTypeName", + "src": "20049:7:39" + } + ], + "id": 11831, + "name": "VariableDeclaration", + "src": "20049:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11832, + "name": "Literal", + "src": "20061:1:39" + } + ], + "id": 11833, + "name": "VariableDeclarationStatement", + "src": "20049:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11831, + "type": "uint256", + "value": "i" + }, + "id": 11834, + "name": "Identifier", + "src": "20064:1:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11813, + "type": "address[] memory", + "value": "misbehavedOperators" + }, + "id": 11835, + "name": "Identifier", + "src": "20068:19:39" + } + ], + "id": 11836, + "name": "MemberAccess", + "src": "20068:26:39" + } + ], + "id": 11837, + "name": "BinaryOperation", + "src": "20064:30:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "++", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11831, + "type": "uint256", + "value": "i" + }, + "id": 11838, + "name": "Identifier", + "src": "20096:1:39" + } + ], + "id": 11839, + "name": "UnaryOperation", + "src": "20096:3:39" + } + ], + "id": 11840, + "name": "ExpressionStatement", + "src": "20096:3:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [11842] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 11940, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11841, + "name": "ElementaryTypeName", + "src": "20115:7:39" + } + ], + "id": 11842, + "name": "VariableDeclaration", + "src": "20115:16:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11813, + "type": "address[] memory", + "value": "misbehavedOperators" + }, + "id": 11843, + "name": "Identifier", + "src": "20134:19:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11831, + "type": "uint256", + "value": "i" + }, + "id": 11844, + "name": "Identifier", + "src": "20154:1:39" + } + ], + "id": 11845, + "name": "IndexAccess", + "src": "20134:22:39" + } + ], + "id": 11846, + "name": "VariableDeclarationStatement", + "src": "20115:41:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11847, + "name": "Identifier", + "src": "20170:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "mapping(address => bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 1621, + "type": "mapping(address => mapping(address => bool))", + "value": "authorizations" + }, + "id": 11848, + "name": "Identifier", + "src": "20195:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11824, + "type": "address", + "value": "authoritySource" + }, + "id": 11849, + "name": "Identifier", + "src": "20210:15:39" + } + ], + "id": 11850, + "name": "IndexAccess", + "src": "20195:31:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11842, + "type": "address", + "value": "operator" + }, + "id": 11851, + "name": "Identifier", + "src": "20227:8:39" + } + ], + "id": 11852, + "name": "IndexAccess", + "src": "20195:41:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 11853, + "name": "Literal", + "src": "20254:16:39" + } + ], + "id": 11854, + "name": "FunctionCall", + "src": "20170:114:39" + } + ], + "id": 11855, + "name": "ExpressionStatement", + "src": "20170:114:39" + }, + { + "attributes": { + "assignments": [11857] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorParams", + "scope": 11940, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11856, + "name": "ElementaryTypeName", + "src": "20299:7:39" + } + ], + "id": 11857, + "name": "VariableDeclaration", + "src": "20299:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11858, + "name": "Identifier", + "src": "20324:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11842, + "type": "address", + "value": "operator" + }, + "id": 11859, + "name": "Identifier", + "src": "20334:8:39" + } + ], + "id": 11860, + "name": "IndexAccess", + "src": "20324:19:39" + } + ], + "id": 11861, + "name": "MemberAccess", + "src": "20324:32:39" + } + ], + "id": 11862, + "name": "VariableDeclarationStatement", + "src": "20299:57:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", + "typeString": "literal_string \"Inactive stake\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11863, + "name": "Identifier", + "src": "20370:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12314, + "type": "function (uint256) view returns (bool)", + "value": "_isInitialized" + }, + "id": 11864, + "name": "Identifier", + "src": "20378:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11857, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11865, + "name": "Identifier", + "src": "20393:14:39" + } + ], + "id": 11866, + "name": "FunctionCall", + "src": "20378:30:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "496e616374697665207374616b65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Inactive stake\"", + "value": "Inactive stake" + }, + "id": 11867, + "name": "Literal", + "src": "20410:16:39" + } + ], + "id": 11868, + "name": "FunctionCall", + "src": "20370:57:39" + } + ], + "id": 11869, + "name": "ExpressionStatement", + "src": "20370:57:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", + "typeString": "literal_string \"Stake is released\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11870, + "name": "Identifier", + "src": "20442:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12390, + "type": "function (address,uint256,address) view returns (bool)", + "value": "_isStakeReleased" + }, + "id": 11871, + "name": "Identifier", + "src": "20468:16:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11842, + "type": "address", + "value": "operator" + }, + "id": 11872, + "name": "Identifier", + "src": "20485:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11857, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11873, + "name": "Identifier", + "src": "20495:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11874, + "name": "Identifier", + "src": "20511:3:39" + } + ], + "id": 11875, + "name": "MemberAccess", + "src": "20511:10:39" + } + ], + "id": 11876, + "name": "FunctionCall", + "src": "20468:54:39" + } + ], + "id": 11877, + "name": "UnaryOperation", + "src": "20467:55:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "5374616b652069732072656c6561736564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Stake is released\"", + "value": "Stake is released" + }, + "id": 11878, + "name": "Literal", + "src": "20540:19:39" + } + ], + "id": 11879, + "name": "FunctionCall", + "src": "20442:131:39" + } + ], + "id": 11880, + "name": "ExpressionStatement", + "src": "20442:131:39" + }, + { + "attributes": { + "assignments": [11882] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "currentAmount", + "scope": 11940, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11881, + "name": "ElementaryTypeName", + "src": "20588:7:39" + } + ], + "id": 11882, + "name": "VariableDeclaration", + "src": "20588:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAmount", + "referencedDeclaration": 27910, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11857, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11883, + "name": "Identifier", + "src": "20612:14:39" + } + ], + "id": 11884, + "name": "MemberAccess", + "src": "20612:24:39" + } + ], + "id": 11885, + "name": "FunctionCall", + "src": "20612:26:39" + } + ], + "id": 11886, + "name": "VariableDeclarationStatement", + "src": "20588:50:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11882, + "type": "uint256", + "value": "currentAmount" + }, + "id": 11887, + "name": "Identifier", + "src": "20657:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11806, + "type": "uint256", + "value": "amountToSeize" + }, + "id": 11888, + "name": "Identifier", + "src": "20673:13:39" + } + ], + "id": 11889, + "name": "BinaryOperation", + "src": "20657:29:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11821, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11890, + "name": "Identifier", + "src": "20706:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11821, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11891, + "name": "Identifier", + "src": "20726:17:39" + } + ], + "id": 11892, + "name": "MemberAccess", + "src": "20726:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11882, + "type": "uint256", + "value": "currentAmount" + }, + "id": 11893, + "name": "Identifier", + "src": "20748:13:39" + } + ], + "id": 11894, + "name": "FunctionCall", + "src": "20726:36:39" + } + ], + "id": 11895, + "name": "Assignment", + "src": "20706:56:39" + } + ], + "id": 11896, + "name": "ExpressionStatement", + "src": "20706:56:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11897, + "name": "Identifier", + "src": "20780:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11842, + "type": "address", + "value": "operator" + }, + "id": 11898, + "name": "Identifier", + "src": "20790:8:39" + } + ], + "id": 11899, + "name": "IndexAccess", + "src": "20780:19:39" + } + ], + "id": 11900, + "name": "MemberAccess", + "src": "20780:32:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "setAmount", + "referencedDeclaration": 27930, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11857, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11901, + "name": "Identifier", + "src": "20815:14:39" + } + ], + "id": 11902, + "name": "MemberAccess", + "src": "20815:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 11903, + "name": "Literal", + "src": "20840:1:39" + } + ], + "id": 11904, + "name": "FunctionCall", + "src": "20815:27:39" + } + ], + "id": 11905, + "name": "Assignment", + "src": "20780:62:39" + } + ], + "id": 11906, + "name": "ExpressionStatement", + "src": "20780:62:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11067, + "type": "function (address,uint256)", + "value": "TokensSeized" + }, + "id": 11907, + "name": "Identifier", + "src": "20865:12:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11842, + "type": "address", + "value": "operator" + }, + "id": 11908, + "name": "Identifier", + "src": "20878:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11882, + "type": "uint256", + "value": "currentAmount" + }, + "id": 11909, + "name": "Identifier", + "src": "20888:13:39" + } + ], + "id": 11910, + "name": "FunctionCall", + "src": "20865:37:39" + } + ], + "id": 11911, + "name": "EmitStatement", + "src": "20860:42:39" + } + ], + "id": 11912, + "name": "Block", + "src": "20688:229:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11821, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11913, + "name": "Identifier", + "src": "20941:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11821, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11914, + "name": "Identifier", + "src": "20961:17:39" + } + ], + "id": 11915, + "name": "MemberAccess", + "src": "20961:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11806, + "type": "uint256", + "value": "amountToSeize" + }, + "id": 11916, + "name": "Identifier", + "src": "20983:13:39" + } + ], + "id": 11917, + "name": "FunctionCall", + "src": "20961:36:39" + } + ], + "id": 11918, + "name": "Assignment", + "src": "20941:56:39" + } + ], + "id": 11919, + "name": "ExpressionStatement", + "src": "20941:56:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11920, + "name": "Identifier", + "src": "21015:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11842, + "type": "address", + "value": "operator" + }, + "id": 11921, + "name": "Identifier", + "src": "21025:8:39" + } + ], + "id": 11922, + "name": "IndexAccess", + "src": "21015:19:39" + } + ], + "id": 11923, + "name": "MemberAccess", + "src": "21015:32:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "setAmount", + "referencedDeclaration": 27930, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11857, + "type": "uint256", + "value": "operatorParams" + }, + "id": 11924, + "name": "Identifier", + "src": "21050:14:39" + } + ], + "id": 11925, + "name": "MemberAccess", + "src": "21050:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 326, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11882, + "type": "uint256", + "value": "currentAmount" + }, + "id": 11926, + "name": "Identifier", + "src": "21096:13:39" + } + ], + "id": 11927, + "name": "MemberAccess", + "src": "21096:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11806, + "type": "uint256", + "value": "amountToSeize" + }, + "id": 11928, + "name": "Identifier", + "src": "21114:13:39" + } + ], + "id": 11929, + "name": "FunctionCall", + "src": "21096:32:39" + } + ], + "id": 11930, + "name": "FunctionCall", + "src": "21050:96:39" + } + ], + "id": 11931, + "name": "Assignment", + "src": "21015:131:39" + } + ], + "id": 11932, + "name": "ExpressionStatement", + "src": "21015:131:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11067, + "type": "function (address,uint256)", + "value": "TokensSeized" + }, + "id": 11933, + "name": "Identifier", + "src": "21169:12:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11842, + "type": "address", + "value": "operator" + }, + "id": 11934, + "name": "Identifier", + "src": "21182:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11806, + "type": "uint256", + "value": "amountToSeize" + }, + "id": 11935, + "name": "Identifier", + "src": "21192:13:39" + } + ], + "id": 11936, + "name": "FunctionCall", + "src": "21169:37:39" + } + ], + "id": 11937, + "name": "EmitStatement", + "src": "21164:42:39" + } + ], + "id": 11938, + "name": "Block", + "src": "20923:298:39" + } + ], + "id": 11939, + "name": "IfStatement", + "src": "20653:568:39" + } + ], + "id": 11940, + "name": "Block", + "src": "20101:1130:39" + } + ], + "id": 11941, + "name": "ForStatement", + "src": "20044:1187:39" + }, + { + "attributes": { + "assignments": [11943] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "tattletaleReward", + "scope": 11969, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 11942, + "name": "ElementaryTypeName", + "src": "21241:7:39" + } + ], + "id": 11943, + "name": "VariableDeclaration", + "src": "21241:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "percent", + "referencedDeclaration": 28042, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "percent", + "referencedDeclaration": 28042, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11821, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11944, + "name": "Identifier", + "src": "21281:17:39" + } + ], + "id": 11945, + "name": "MemberAccess", + "src": "21281:25:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "35", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 5", + "value": "5" + }, + "id": 11946, + "name": "Literal", + "src": "21307:1:39" + } + ], + "id": 11947, + "name": "FunctionCall", + "src": "21281:28:39" + } + ], + "id": 11948, + "name": "TupleExpression", + "src": "21280:30:39" + } + ], + "id": 11949, + "name": "MemberAccess", + "src": "21280:38:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11808, + "type": "uint256", + "value": "rewardMultiplier" + }, + "id": 11950, + "name": "Identifier", + "src": "21319:16:39" + } + ], + "id": 11951, + "name": "FunctionCall", + "src": "21280:56:39" + } + ], + "id": 11952, + "name": "VariableDeclarationStatement", + "src": "21241:95:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransfer", + "referencedDeclaration": 1183, + "type": "function (contract IERC20,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11093, + "type": "contract ERC20Burnable", + "value": "token" + }, + "id": 11953, + "name": "Identifier", + "src": "21347:5:39" + } + ], + "id": 11955, + "name": "MemberAccess", + "src": "21347:18:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11810, + "type": "address", + "value": "tattletale" + }, + "id": 11956, + "name": "Identifier", + "src": "21366:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11943, + "type": "uint256", + "value": "tattletaleReward" + }, + "id": 11957, + "name": "Identifier", + "src": "21378:16:39" + } + ], + "id": 11958, + "name": "FunctionCall", + "src": "21347:48:39" + } + ], + "id": 11959, + "name": "ExpressionStatement", + "src": "21347:48:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "burn", + "referencedDeclaration": 1009, + "type": "function (uint256) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11093, + "type": "contract ERC20Burnable", + "value": "token" + }, + "id": 11960, + "name": "Identifier", + "src": "21405:5:39" + } + ], + "id": 11962, + "name": "MemberAccess", + "src": "21405:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sub", + "referencedDeclaration": 326, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11821, + "type": "uint256", + "value": "totalAmountToBurn" + }, + "id": 11963, + "name": "Identifier", + "src": "21416:17:39" + } + ], + "id": 11964, + "name": "MemberAccess", + "src": "21416:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11943, + "type": "uint256", + "value": "tattletaleReward" + }, + "id": 11965, + "name": "Identifier", + "src": "21438:16:39" + } + ], + "id": 11966, + "name": "FunctionCall", + "src": "21416:39:39" + } + ], + "id": 11967, + "name": "FunctionCall", + "src": "21405:51:39" + } + ], + "id": 11968, + "name": "ExpressionStatement", + "src": "21405:51:39" + } + ], + "id": 11969, + "name": "Block", + "src": "19933:1530:39" + } + ], + "id": 11970, + "name": "FunctionDefinition", + "src": "19725:1738:39" + }, + { + "attributes": { + "documentation": "@notice Allows the current staking relationship owner to transfer the\n ownership to someone else.\n @param operator Address of the stake operator.\n @param newOwner Address of the new staking relationship owner.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "transferStakeOwnership", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operator", + "scope": 12001, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11971, + "name": "ElementaryTypeName", + "src": "21740:7:39" + } + ], + "id": 11972, + "name": "VariableDeclaration", + "src": "21740:16:39" + }, + { + "attributes": { + "constant": false, + "name": "newOwner", + "scope": 12001, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 11973, + "name": "ElementaryTypeName", + "src": "21758:7:39" + } + ], + "id": 11974, + "name": "VariableDeclaration", + "src": "21758:16:39" + } + ], + "id": 11975, + "name": "ParameterList", + "src": "21739:36:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 11976, + "name": "ParameterList", + "src": "21783:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 11977, + "name": "Identifier", + "src": "21793:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 11978, + "name": "Identifier", + "src": "21801:3:39" + } + ], + "id": 11979, + "name": "MemberAccess", + "src": "21801:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "owner", + "referencedDeclaration": 8829, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11980, + "name": "Identifier", + "src": "21815:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11972, + "type": "address", + "value": "operator" + }, + "id": 11981, + "name": "Identifier", + "src": "21825:8:39" + } + ], + "id": 11982, + "name": "IndexAccess", + "src": "21815:19:39" + } + ], + "id": 11983, + "name": "MemberAccess", + "src": "21815:25:39" + } + ], + "id": 11984, + "name": "BinaryOperation", + "src": "21801:39:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 11985, + "name": "Literal", + "src": "21842:16:39" + } + ], + "id": 11986, + "name": "FunctionCall", + "src": "21793:66:39" + } + ], + "id": 11987, + "name": "ExpressionStatement", + "src": "21793:66:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "owner", + "referencedDeclaration": 8829, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 11988, + "name": "Identifier", + "src": "21869:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11972, + "type": "address", + "value": "operator" + }, + "id": 11989, + "name": "Identifier", + "src": "21879:8:39" + } + ], + "id": 11990, + "name": "IndexAccess", + "src": "21869:19:39" + } + ], + "id": 11991, + "name": "MemberAccess", + "src": "21869:25:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11974, + "type": "address", + "value": "newOwner" + }, + "id": 11992, + "name": "Identifier", + "src": "21897:8:39" + } + ], + "id": 11993, + "name": "Assignment", + "src": "21869:36:39" + } + ], + "id": 11994, + "name": "ExpressionStatement", + "src": "21869:36:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11033, + "type": "function (address,address)", + "value": "StakeOwnershipTransferred" + }, + "id": 11995, + "name": "Identifier", + "src": "21920:25:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11972, + "type": "address", + "value": "operator" + }, + "id": 11996, + "name": "Identifier", + "src": "21946:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11974, + "type": "address", + "value": "newOwner" + }, + "id": 11997, + "name": "Identifier", + "src": "21956:8:39" + } + ], + "id": 11998, + "name": "FunctionCall", + "src": "21920:45:39" + } + ], + "id": 11999, + "name": "EmitStatement", + "src": "21915:50:39" + } + ], + "id": 12000, + "name": "Block", + "src": "21783:189:39" + } + ], + "id": 12001, + "name": "FunctionDefinition", + "src": "21708:264:39" + }, + { + "attributes": { + "documentation": "@notice Gets the eligible stake balance of the specified address.\n An eligible stake is a stake that passed the initialization period\n and is not currently undelegating. Also, the operator had to approve\n the specified operator contract.\n\n /// Operator with a minimum required amount of eligible stake can join the\n network and participate in new work selection.\n\n /// @param _operator address of stake operator.\n @param _operatorContract address of operator contract.\n @return an uint256 representing the eligible stake balance.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "eligibleStake", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 12039, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12002, + "name": "ElementaryTypeName", + "src": "22601:7:39" + } + ], + "id": 12003, + "name": "VariableDeclaration", + "src": "22601:17:39" + }, + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 12039, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12004, + "name": "ElementaryTypeName", + "src": "22620:7:39" + } + ], + "id": 12005, + "name": "VariableDeclaration", + "src": "22620:25:39" + } + ], + "id": 12006, + "name": "ParameterList", + "src": "22600:46:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "balance", + "scope": 12039, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12007, + "name": "ElementaryTypeName", + "src": "22692:7:39" + } + ], + "id": 12008, + "name": "VariableDeclaration", + "src": "22692:15:39" + } + ], + "id": 12009, + "name": "ParameterList", + "src": "22691:17:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [12011] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorParams", + "scope": 12038, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12010, + "name": "ElementaryTypeName", + "src": "22723:7:39" + } + ], + "id": 12011, + "name": "VariableDeclaration", + "src": "22723:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 12012, + "name": "Identifier", + "src": "22748:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12003, + "type": "address", + "value": "_operator" + }, + "id": 12013, + "name": "Identifier", + "src": "22758:9:39" + } + ], + "id": 12014, + "name": "IndexAccess", + "src": "22748:20:39" + } + ], + "id": 12015, + "name": "MemberAccess", + "src": "22748:33:39" + } + ], + "id": 12016, + "name": "VariableDeclarationStatement", + "src": "22723:58:39" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1713, + "type": "function (address,address) view returns (bool)", + "value": "isAuthorizedForOperator" + }, + "id": 12017, + "name": "Identifier", + "src": "23223:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12003, + "type": "address", + "value": "_operator" + }, + "id": 12018, + "name": "Identifier", + "src": "23247:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12005, + "type": "address", + "value": "_operatorContract" + }, + "id": 12019, + "name": "Identifier", + "src": "23258:17:39" + } + ], + "id": 12020, + "name": "FunctionCall", + "src": "23223:53:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12314, + "type": "function (uint256) view returns (bool)", + "value": "_isInitialized" + }, + "id": 12021, + "name": "Identifier", + "src": "23292:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12011, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12022, + "name": "Identifier", + "src": "23307:14:39" + } + ], + "id": 12023, + "name": "FunctionCall", + "src": "23292:30:39" + } + ], + "id": 12024, + "name": "BinaryOperation", + "src": "23223:99:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12339, + "type": "function (uint256) view returns (bool)", + "value": "_isUndelegating" + }, + "id": 12025, + "name": "Identifier", + "src": "23339:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12011, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12026, + "name": "Identifier", + "src": "23355:14:39" + } + ], + "id": 12027, + "name": "FunctionCall", + "src": "23339:31:39" + } + ], + "id": 12028, + "name": "UnaryOperation", + "src": "23338:32:39" + } + ], + "id": 12029, + "name": "BinaryOperation", + "src": "23223:147:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12008, + "type": "uint256", + "value": "balance" + }, + "id": 12030, + "name": "Identifier", + "src": "23395:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAmount", + "referencedDeclaration": 27910, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12011, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12031, + "name": "Identifier", + "src": "23405:14:39" + } + ], + "id": 12032, + "name": "MemberAccess", + "src": "23405:24:39" + } + ], + "id": 12033, + "name": "FunctionCall", + "src": "23405:26:39" + } + ], + "id": 12034, + "name": "Assignment", + "src": "23395:36:39" + } + ], + "id": 12035, + "name": "ExpressionStatement", + "src": "23395:36:39" + } + ], + "id": 12036, + "name": "Block", + "src": "23381:61:39" + } + ], + "id": 12037, + "name": "IfStatement", + "src": "23206:236:39" + } + ], + "id": 12038, + "name": "Block", + "src": "22713:735:39" + } + ], + "id": 12039, + "name": "FunctionDefinition", + "src": "22578:870:39" + }, + { + "attributes": { + "documentation": "@notice Gets the active stake balance of the specified address.\n An active stake is a stake that passed the initialization period,\n and may be in the process of undelegation\n but has not been released yet,\n either because the undelegation period is not over,\n or because the operator contract has an active lock on the operator.\n Also, the operator had to approve the specified operator contract.\n\n /// The difference between eligible stake is that active stake does not make\n the operator eligible for work selection but it may be still finishing\n earlier work until the stake is released.\n Operator with a minimum required\n amount of active stake can join the network but cannot be selected to any\n new work.\n\n /// @param _operator address of stake operator.\n @param _operatorContract address of operator contract.\n @return an uint256 representing the eligible stake balance.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "activeStake", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 12079, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12040, + "name": "ElementaryTypeName", + "src": "24472:7:39" + } + ], + "id": 12041, + "name": "VariableDeclaration", + "src": "24472:17:39" + }, + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 12079, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12042, + "name": "ElementaryTypeName", + "src": "24491:7:39" + } + ], + "id": 12043, + "name": "VariableDeclaration", + "src": "24491:25:39" + } + ], + "id": 12044, + "name": "ParameterList", + "src": "24471:46:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "balance", + "scope": 12079, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12045, + "name": "ElementaryTypeName", + "src": "24563:7:39" + } + ], + "id": 12046, + "name": "VariableDeclaration", + "src": "24563:15:39" + } + ], + "id": 12047, + "name": "ParameterList", + "src": "24562:17:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [12049] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorParams", + "scope": 12078, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12048, + "name": "ElementaryTypeName", + "src": "24594:7:39" + } + ], + "id": 12049, + "name": "VariableDeclaration", + "src": "24594:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 12050, + "name": "Identifier", + "src": "24619:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12041, + "type": "address", + "value": "_operator" + }, + "id": 12051, + "name": "Identifier", + "src": "24629:9:39" + } + ], + "id": 12052, + "name": "IndexAccess", + "src": "24619:20:39" + } + ], + "id": 12053, + "name": "MemberAccess", + "src": "24619:33:39" + } + ], + "id": 12054, + "name": "VariableDeclarationStatement", + "src": "24594:58:39" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 1713, + "type": "function (address,address) view returns (bool)", + "value": "isAuthorizedForOperator" + }, + "id": 12055, + "name": "Identifier", + "src": "24679:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12041, + "type": "address", + "value": "_operator" + }, + "id": 12056, + "name": "Identifier", + "src": "24703:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12043, + "type": "address", + "value": "_operatorContract" + }, + "id": 12057, + "name": "Identifier", + "src": "24714:17:39" + } + ], + "id": 12058, + "name": "FunctionCall", + "src": "24679:53:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12314, + "type": "function (uint256) view returns (bool)", + "value": "_isInitialized" + }, + "id": 12059, + "name": "Identifier", + "src": "24748:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12049, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12060, + "name": "Identifier", + "src": "24763:14:39" + } + ], + "id": 12061, + "name": "FunctionCall", + "src": "24748:30:39" + } + ], + "id": 12062, + "name": "BinaryOperation", + "src": "24679:99:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12390, + "type": "function (address,uint256,address) view returns (bool)", + "value": "_isStakeReleased" + }, + "id": 12063, + "name": "Identifier", + "src": "24795:16:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12041, + "type": "address", + "value": "_operator" + }, + "id": 12064, + "name": "Identifier", + "src": "24812:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12049, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12065, + "name": "Identifier", + "src": "24823:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12043, + "type": "address", + "value": "_operatorContract" + }, + "id": 12066, + "name": "Identifier", + "src": "24839:17:39" + } + ], + "id": 12067, + "name": "FunctionCall", + "src": "24795:62:39" + } + ], + "id": 12068, + "name": "UnaryOperation", + "src": "24794:63:39" + } + ], + "id": 12069, + "name": "BinaryOperation", + "src": "24679:178:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12046, + "type": "uint256", + "value": "balance" + }, + "id": 12070, + "name": "Identifier", + "src": "24882:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getAmount", + "referencedDeclaration": 27910, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12049, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12071, + "name": "Identifier", + "src": "24892:14:39" + } + ], + "id": 12072, + "name": "MemberAccess", + "src": "24892:24:39" + } + ], + "id": 12073, + "name": "FunctionCall", + "src": "24892:26:39" + } + ], + "id": 12074, + "name": "Assignment", + "src": "24882:36:39" + } + ], + "id": 12075, + "name": "ExpressionStatement", + "src": "24882:36:39" + } + ], + "id": 12076, + "name": "Block", + "src": "24868:61:39" + } + ], + "id": 12077, + "name": "IfStatement", + "src": "24662:267:39" + } + ], + "id": 12078, + "name": "Block", + "src": "24584:351:39" + } + ], + "id": 12079, + "name": "FunctionDefinition", + "src": "24451:484:39" + }, + { + "attributes": { + "documentation": "@notice Checks if the specified account has enough active stake to become\n network operator and that the specified operator contract has been\n authorized for potential slashing.\n\n /// Having the required minimum of active stake makes the operator eligible\n to join the network. If the active stake is not currently undelegating,\n operator is also eligible for work selection.\n\n /// @param staker Staker's address\n @param operatorContract Operator contract's address\n @return True if has enough active stake to participate in the network,\n false otherwise.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "hasMinimumStake", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "staker", + "scope": 12097, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12080, + "name": "ElementaryTypeName", + "src": "25599:7:39" + } + ], + "id": 12081, + "name": "VariableDeclaration", + "src": "25599:14:39" + }, + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 12097, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12082, + "name": "ElementaryTypeName", + "src": "25615:7:39" + } + ], + "id": 12083, + "name": "VariableDeclaration", + "src": "25615:24:39" + } + ], + "id": 12084, + "name": "ParameterList", + "src": "25598:42:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 12097, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 12085, + "name": "ElementaryTypeName", + "src": "25686:4:39" + } + ], + "id": 12086, + "name": "VariableDeclaration", + "src": "25686:4:39" + } + ], + "id": 12087, + "name": "ParameterList", + "src": "25685:6:39" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 12087 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12079, + "type": "function (address,address) view returns (uint256)", + "value": "activeStake" + }, + "id": 12088, + "name": "Identifier", + "src": "25713:11:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12081, + "type": "address", + "value": "staker" + }, + "id": 12089, + "name": "Identifier", + "src": "25725:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12083, + "type": "address", + "value": "operatorContract" + }, + "id": 12090, + "name": "Identifier", + "src": "25733:16:39" + } + ], + "id": 12091, + "name": "FunctionCall", + "src": "25713:37:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 11165, + "type": "function () view returns (uint256)", + "value": "minimumStake" + }, + "id": 12092, + "name": "Identifier", + "src": "25754:12:39" + } + ], + "id": 12093, + "name": "FunctionCall", + "src": "25754:14:39" + } + ], + "id": 12094, + "name": "BinaryOperation", + "src": "25713:55:39" + } + ], + "id": 12095, + "name": "Return", + "src": "25706:62:39" + } + ], + "id": 12096, + "name": "Block", + "src": "25696:79:39" + } + ], + "id": 12097, + "name": "FunctionDefinition", + "src": "25574:201:39" + }, + { + "attributes": { + "documentation": "@notice Delegates tokens to a new operator using beneficiary and\n authorizer passed in _extraData parameter.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and stake.\n @param _operator The new operator address.\n @param _extraData Data for stake delegation as passed to receiveApproval.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "delegate", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_from", + "scope": 12176, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12098, + "name": "ElementaryTypeName", + "src": "26207:7:39" + } + ], + "id": 12099, + "name": "VariableDeclaration", + "src": "26207:13:39" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "scope": 12176, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12100, + "name": "ElementaryTypeName", + "src": "26230:7:39" + } + ], + "id": 12101, + "name": "VariableDeclaration", + "src": "26230:14:39" + }, + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 12176, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12102, + "name": "ElementaryTypeName", + "src": "26254:7:39" + } + ], + "id": 12103, + "name": "VariableDeclaration", + "src": "26254:17:39" + }, + { + "attributes": { + "constant": false, + "name": "_extraData", + "scope": 12176, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 12104, + "name": "ElementaryTypeName", + "src": "26281:5:39" + } + ], + "id": 12105, + "name": "VariableDeclaration", + "src": "26281:23:39" + } + ], + "id": 12106, + "name": "ParameterList", + "src": "26197:113:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 12107, + "name": "ParameterList", + "src": "26320:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c6d66e5d14df06ecd5772a76d2f19421e7b2d8605daf8bd076cb516603943b67", + "typeString": "literal_string \"Less than the minimum stake\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 12108, + "name": "Identifier", + "src": "26330:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12101, + "type": "uint256", + "value": "_value" + }, + "id": 12109, + "name": "Identifier", + "src": "26338:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 11165, + "type": "function () view returns (uint256)", + "value": "minimumStake" + }, + "id": 12110, + "name": "Identifier", + "src": "26348:12:39" + } + ], + "id": 12111, + "name": "FunctionCall", + "src": "26348:14:39" + } + ], + "id": 12112, + "name": "BinaryOperation", + "src": "26338:24:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4c657373207468616e20746865206d696e696d756d207374616b65", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Less than the minimum stake\"", + "value": "Less than the minimum stake" + }, + "id": 12113, + "name": "Literal", + "src": "26364:29:39" + } + ], + "id": 12114, + "name": "FunctionCall", + "src": "26330:64:39" + } + ], + "id": 12115, + "name": "ExpressionStatement", + "src": "26330:64:39" + }, + { + "attributes": { + "assignments": [12117] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "beneficiary", + "scope": 12175, + "stateVariable": false, + "storageLocation": "default", + "type": "address payable", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "payable", + "type": "address payable" + }, + "id": 12116, + "name": "ElementaryTypeName", + "src": "26405:15:39" + } + ], + "id": 12117, + "name": "VariableDeclaration", + "src": "26405:27:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 12118, + "name": "ElementaryTypeNameExpression", + "src": "26435:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint160", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(uint160)", + "value": "uint160" + }, + "id": 12119, + "name": "ElementaryTypeNameExpression", + "src": "26443:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 27348, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12105, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 12120, + "name": "Identifier", + "src": "26451:10:39" + } + ], + "id": 12121, + "name": "MemberAccess", + "src": "26451:20:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 12122, + "name": "Literal", + "src": "26472:1:39" + } + ], + "id": 12123, + "name": "FunctionCall", + "src": "26451:23:39" + } + ], + "id": 12124, + "name": "FunctionCall", + "src": "26443:32:39" + } + ], + "id": 12125, + "name": "FunctionCall", + "src": "26435:41:39" + } + ], + "id": 12126, + "name": "VariableDeclarationStatement", + "src": "26405:71:39" + }, + { + "attributes": { + "assignments": [12128] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "authorizer", + "scope": 12175, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12127, + "name": "ElementaryTypeName", + "src": "26486:7:39" + } + ], + "id": 12128, + "name": "VariableDeclaration", + "src": "26486:18:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "toAddress", + "referencedDeclaration": 27348, + "type": "function (bytes memory,uint256) pure returns (address)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12105, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 12129, + "name": "Identifier", + "src": "26507:10:39" + } + ], + "id": 12130, + "name": "MemberAccess", + "src": "26507:20:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "3430", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 40", + "value": "40" + }, + "id": 12131, + "name": "Literal", + "src": "26528:2:39" + } + ], + "id": 12132, + "name": "FunctionCall", + "src": "26507:24:39" + } + ], + "id": 12133, + "name": "VariableDeclarationStatement", + "src": "26486:45:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 12134, + "name": "Identifier", + "src": "26542:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12103, + "type": "address", + "value": "_operator" + }, + "id": 12135, + "name": "Identifier", + "src": "26552:9:39" + } + ], + "id": 12136, + "name": "IndexAccess", + "src": "26542:20:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": true, + "lValueRequested": false, + "names": [null], + "type": "struct StakeDelegatable.Operator memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 8834, + "type": "type(struct StakeDelegatable.Operator storage pointer)", + "value": "Operator" + }, + "id": 12137, + "name": "Identifier", + "src": "26565:8:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "pack", + "referencedDeclaration": 27865, + "type": "function (uint256,uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28018, + "type": "type(library OperatorParams)", + "value": "OperatorParams" + }, + "id": 12138, + "name": "Identifier", + "src": "26587:14:39" + } + ], + "id": 12139, + "name": "MemberAccess", + "src": "26587:19:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12101, + "type": "uint256", + "value": "_value" + }, + "id": 12140, + "name": "Identifier", + "src": "26607:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28136, + "type": "block", + "value": "block" + }, + "id": 12141, + "name": "Identifier", + "src": "26615:5:39" + } + ], + "id": 12142, + "name": "MemberAccess", + "src": "26615:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 12143, + "name": "Literal", + "src": "26632:1:39" + } + ], + "id": 12144, + "name": "FunctionCall", + "src": "26587:47:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12099, + "type": "address", + "value": "_from" + }, + "id": 12145, + "name": "Identifier", + "src": "26648:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12117, + "type": "address payable", + "value": "beneficiary" + }, + "id": 12146, + "name": "Identifier", + "src": "26667:11:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12128, + "type": "address", + "value": "authorizer" + }, + "id": 12147, + "name": "Identifier", + "src": "26692:10:39" + } + ], + "id": 12148, + "name": "FunctionCall", + "src": "26565:147:39" + } + ], + "id": 12149, + "name": "Assignment", + "src": "26542:170:39" + } + ], + "id": 12150, + "name": "ExpressionStatement", + "src": "26542:170:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple(bool,uint256)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "tryCapturingDelegationData", + "referencedDeclaration": 19288, + "type": "function (struct GrantStaking.Storage storage pointer,contract TokenGrant,address,address,address,bytes memory) returns (bool,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11099, + "type": "struct GrantStaking.Storage storage ref", + "value": "grantStaking" + }, + "id": 12151, + "name": "Identifier", + "src": "26723:12:39" + } + ], + "id": 12153, + "name": "MemberAccess", + "src": "26723:39:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11095, + "type": "contract TokenGrant", + "value": "tokenGrant" + }, + "id": 12154, + "name": "Identifier", + "src": "26776:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 12155, + "name": "ElementaryTypeNameExpression", + "src": "26800:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11097, + "type": "contract TokenStakingEscrow", + "value": "escrow" + }, + "id": 12156, + "name": "Identifier", + "src": "26808:6:39" + } + ], + "id": 12157, + "name": "FunctionCall", + "src": "26800:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12099, + "type": "address", + "value": "_from" + }, + "id": 12158, + "name": "Identifier", + "src": "26829:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12103, + "type": "address", + "value": "_operator" + }, + "id": 12159, + "name": "Identifier", + "src": "26848:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12105, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 12160, + "name": "Identifier", + "src": "26871:10:39" + } + ], + "id": 12161, + "name": "FunctionCall", + "src": "26723:168:39" + } + ], + "id": 12162, + "name": "ExpressionStatement", + "src": "26723:168:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11017, + "type": "function (address,address)", + "value": "StakeDelegated" + }, + "id": 12163, + "name": "Identifier", + "src": "26907:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12099, + "type": "address", + "value": "_from" + }, + "id": 12164, + "name": "Identifier", + "src": "26922:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12103, + "type": "address", + "value": "_operator" + }, + "id": 12165, + "name": "Identifier", + "src": "26929:9:39" + } + ], + "id": 12166, + "name": "FunctionCall", + "src": "26907:32:39" + } + ], + "id": 12167, + "name": "EmitStatement", + "src": "26902:37:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 11027, + "type": "function (address,address,address,uint256)", + "value": "OperatorStaked" + }, + "id": 12168, + "name": "Identifier", + "src": "26954:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12103, + "type": "address", + "value": "_operator" + }, + "id": 12169, + "name": "Identifier", + "src": "26969:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12117, + "type": "address payable", + "value": "beneficiary" + }, + "id": 12170, + "name": "Identifier", + "src": "26980:11:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12128, + "type": "address", + "value": "authorizer" + }, + "id": 12171, + "name": "Identifier", + "src": "26993:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12101, + "type": "uint256", + "value": "_value" + }, + "id": 12172, + "name": "Identifier", + "src": "27005:6:39" + } + ], + "id": 12173, + "name": "FunctionCall", + "src": "26954:58:39" + } + ], + "id": 12174, + "name": "EmitStatement", + "src": "26949:63:39" + } + ], + "id": 12175, + "name": "Block", + "src": "26320:699:39" + } + ], + "id": 12176, + "name": "FunctionDefinition", + "src": "26180:839:39" + }, + { + "attributes": { + "documentation": "@notice Performs top-up to an existing operator. Tokens added during\n stake initialization period are immediatelly added to the stake and\n stake initialization timer is reset to the current block. Tokens added\n in a top-up after the stake initialization period is over are not\n included in the operator stake until the initialization period for\n a top-up passes and top-up is committed. Operator must not have the stake\n undelegated. It is expected that the top-up is done from the same source\n of tokens as the initial delegation. That is, if the tokens were\n delegated from a grant, top-up has to be performed from the same grant.\n If the delegation was done using liquid tokens, only liquid tokens from\n the same owner can be used to top-up the stake.\n Top-up can not be cancelled so it is important to be careful with the\n amount of KEEP added to the stake.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and top-up to\n an existing stake.\n @param _operator The new operator address.\n @param _extraData Data for stake delegation as passed to receiveApproval", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "topUp", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_from", + "scope": 12296, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12177, + "name": "ElementaryTypeName", + "src": "28307:7:39" + } + ], + "id": 12178, + "name": "VariableDeclaration", + "src": "28307:13:39" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "scope": 12296, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12179, + "name": "ElementaryTypeName", + "src": "28330:7:39" + } + ], + "id": 12180, + "name": "VariableDeclaration", + "src": "28330:14:39" + }, + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 12296, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12181, + "name": "ElementaryTypeName", + "src": "28354:7:39" + } + ], + "id": 12182, + "name": "VariableDeclaration", + "src": "28354:17:39" + }, + { + "attributes": { + "constant": false, + "name": "_extraData", + "scope": 12296, + "stateVariable": false, + "storageLocation": "memory", + "type": "bytes", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes", + "type": "bytes" + }, + "id": 12183, + "name": "ElementaryTypeName", + "src": "28381:5:39" + } + ], + "id": 12184, + "name": "VariableDeclaration", + "src": "28381:23:39" + } + ], + "id": 12185, + "name": "ParameterList", + "src": "28297:113:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 12186, + "name": "ParameterList", + "src": "28420:0:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [12188] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "isFromGrant", + "scope": 12295, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 12187, + "name": "ElementaryTypeName", + "src": "28609:4:39" + } + ], + "id": 12188, + "name": "VariableDeclaration", + "src": "28609:16:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "||", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenGrantStake_$10959", + "typeString": "contract TokenGrantStake" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 12189, + "name": "ElementaryTypeNameExpression", + "src": "28640:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "contract TokenGrantStake", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "grantStakes", + "referencedDeclaration": 9535, + "type": "function (address) view external returns (contract TokenGrantStake)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11095, + "type": "contract TokenGrant", + "value": "tokenGrant" + }, + "id": 12190, + "name": "Identifier", + "src": "28648:10:39" + } + ], + "id": 12191, + "name": "MemberAccess", + "src": "28648:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12192, + "name": "Identifier", + "src": "28671:9:39" + } + ], + "id": 12193, + "name": "FunctionCall", + "src": "28648:33:39" + } + ], + "id": 12194, + "name": "FunctionCall", + "src": "28640:42:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12178, + "type": "address", + "value": "_from" + }, + "id": 12195, + "name": "Identifier", + "src": "28686:5:39" + } + ], + "id": 12196, + "name": "BinaryOperation", + "src": "28640:51:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 12197, + "name": "ElementaryTypeNameExpression", + "src": "28711:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11097, + "type": "contract TokenStakingEscrow", + "value": "escrow" + }, + "id": 12198, + "name": "Identifier", + "src": "28719:6:39" + } + ], + "id": 12199, + "name": "FunctionCall", + "src": "28711:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12178, + "type": "address", + "value": "_from" + }, + "id": 12200, + "name": "Identifier", + "src": "28730:5:39" + } + ], + "id": 12201, + "name": "BinaryOperation", + "src": "28711:24:39" + } + ], + "id": 12202, + "name": "BinaryOperation", + "src": "28640:95:39" + } + ], + "id": 12203, + "name": "VariableDeclarationStatement", + "src": "28609:126:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "hasGrantDelegated", + "referencedDeclaration": 19375, + "type": "function (struct GrantStaking.Storage storage pointer,address) view returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11099, + "type": "struct GrantStaking.Storage storage ref", + "value": "grantStaking" + }, + "id": 12204, + "name": "Identifier", + "src": "28750:12:39" + } + ], + "id": 12205, + "name": "MemberAccess", + "src": "28750:30:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12206, + "name": "Identifier", + "src": "28781:9:39" + } + ], + "id": 12207, + "name": "FunctionCall", + "src": "28750:41:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1092761cfc456a4049616698cd1b06c91dd92ec092d312d87b620e0d3f83679", + "typeString": "literal_string \"Must be from a grant\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 12208, + "name": "Identifier", + "src": "28928:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12188, + "type": "bool", + "value": "isFromGrant" + }, + "id": 12209, + "name": "Identifier", + "src": "28936:11:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4d7573742062652066726f6d2061206772616e74", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Must be from a grant\"", + "value": "Must be from a grant" + }, + "id": 12210, + "name": "Literal", + "src": "28949:22:39" + } + ], + "id": 12211, + "name": "FunctionCall", + "src": "28928:44:39" + } + ], + "id": 12212, + "name": "ExpressionStatement", + "src": "28928:44:39" + }, + { + "attributes": { + "assignments": [12214] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "previousGrantId", + "scope": 12240, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12213, + "name": "ElementaryTypeName", + "src": "29171:7:39" + } + ], + "id": 12214, + "name": "VariableDeclaration", + "src": "29171:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "getGrantForOperator", + "referencedDeclaration": 19423, + "type": "function (struct GrantStaking.Storage storage pointer,address) view returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11099, + "type": "struct GrantStaking.Storage storage ref", + "value": "grantStaking" + }, + "id": 12215, + "name": "Identifier", + "src": "29213:12:39" + } + ], + "id": 12216, + "name": "MemberAccess", + "src": "29213:32:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12217, + "name": "Identifier", + "src": "29246:9:39" + } + ], + "id": 12218, + "name": "FunctionCall", + "src": "29213:43:39" + } + ], + "id": 12219, + "name": "VariableDeclarationStatement", + "src": "29171:85:39" + }, + { + "attributes": { + "assignments": [null, 12221] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "grantId", + "scope": 12240, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12220, + "name": "ElementaryTypeName", + "src": "29273:7:39" + } + ], + "id": 12221, + "name": "VariableDeclaration", + "src": "29273:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple(bool,uint256)", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenGrant_$10702", + "typeString": "contract TokenGrant" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "tryCapturingDelegationData", + "referencedDeclaration": 19288, + "type": "function (struct GrantStaking.Storage storage pointer,contract TokenGrant,address,address,address,bytes memory) returns (bool,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11099, + "type": "struct GrantStaking.Storage storage ref", + "value": "grantStaking" + }, + "id": 12222, + "name": "Identifier", + "src": "29308:12:39" + } + ], + "id": 12223, + "name": "MemberAccess", + "src": "29308:39:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11095, + "type": "contract TokenGrant", + "value": "tokenGrant" + }, + "id": 12224, + "name": "Identifier", + "src": "29369:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 12225, + "name": "ElementaryTypeNameExpression", + "src": "29401:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11097, + "type": "contract TokenStakingEscrow", + "value": "escrow" + }, + "id": 12226, + "name": "Identifier", + "src": "29409:6:39" + } + ], + "id": 12227, + "name": "FunctionCall", + "src": "29401:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12178, + "type": "address", + "value": "_from" + }, + "id": 12228, + "name": "Identifier", + "src": "29438:5:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12229, + "name": "Identifier", + "src": "29465:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12184, + "type": "bytes memory", + "value": "_extraData" + }, + "id": 12230, + "name": "Identifier", + "src": "29496:10:39" + } + ], + "id": 12231, + "name": "FunctionCall", + "src": "29308:216:39" + } + ], + "id": 12232, + "name": "VariableDeclarationStatement", + "src": "29270:254:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5f4a017829f7ac8e7cd46d1e5459ee834992c2456444c7e65c7080dfdc63201b", + "typeString": "literal_string \"Not the same grant\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 12233, + "name": "Identifier", + "src": "29538:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12221, + "type": "uint256", + "value": "grantId" + }, + "id": 12234, + "name": "Identifier", + "src": "29546:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12214, + "type": "uint256", + "value": "previousGrantId" + }, + "id": 12235, + "name": "Identifier", + "src": "29557:15:39" + } + ], + "id": 12236, + "name": "BinaryOperation", + "src": "29546:26:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f74207468652073616d65206772616e74", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not the same grant\"", + "value": "Not the same grant" + }, + "id": 12237, + "name": "Literal", + "src": "29574:20:39" + } + ], + "id": 12238, + "name": "FunctionCall", + "src": "29538:57:39" + } + ], + "id": 12239, + "name": "ExpressionStatement", + "src": "29538:57:39" + } + ], + "id": 12240, + "name": "Block", + "src": "28793:813:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2b9e7062844df2b17b3c62e7b067e153f062dbc06025785a7c52346348124675", + "typeString": "literal_string \"Must not be from a grant\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 12241, + "name": "Identifier", + "src": "29769:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12188, + "type": "bool", + "value": "isFromGrant" + }, + "id": 12242, + "name": "Identifier", + "src": "29778:11:39" + } + ], + "id": 12243, + "name": "UnaryOperation", + "src": "29777:12:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4d757374206e6f742062652066726f6d2061206772616e74", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Must not be from a grant\"", + "value": "Must not be from a grant" + }, + "id": 12244, + "name": "Literal", + "src": "29791:26:39" + } + ], + "id": 12245, + "name": "FunctionCall", + "src": "29769:49:39" + } + ], + "id": 12246, + "name": "ExpressionStatement", + "src": "29769:49:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_12e166bf4abcc24bd437fb26ce6b782ef4c55db948e745833feb167d0bd16206", + "typeString": "literal_string \"Not the same owner\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 12247, + "name": "Identifier", + "src": "29832:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "owner", + "referencedDeclaration": 8829, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 12248, + "name": "Identifier", + "src": "29840:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12249, + "name": "Identifier", + "src": "29850:9:39" + } + ], + "id": 12250, + "name": "IndexAccess", + "src": "29840:20:39" + } + ], + "id": 12251, + "name": "MemberAccess", + "src": "29840:26:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12178, + "type": "address", + "value": "_from" + }, + "id": 12252, + "name": "Identifier", + "src": "29870:5:39" + } + ], + "id": 12253, + "name": "BinaryOperation", + "src": "29840:35:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f74207468652073616d65206f776e6572", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not the same owner\"", + "value": "Not the same owner" + }, + "id": 12254, + "name": "Literal", + "src": "29877:20:39" + } + ], + "id": 12255, + "name": "FunctionCall", + "src": "29832:66:39" + } + ], + "id": 12256, + "name": "ExpressionStatement", + "src": "29832:66:39" + } + ], + "id": 12257, + "name": "Block", + "src": "29612:297:39" + } + ], + "id": 12258, + "name": "IfStatement", + "src": "28746:1163:39" + }, + { + "attributes": { + "assignments": [12260] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorParams", + "scope": 12295, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12259, + "name": "ElementaryTypeName", + "src": "29919:7:39" + } + ], + "id": 12260, + "name": "VariableDeclaration", + "src": "29919:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 12261, + "name": "Identifier", + "src": "29944:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12262, + "name": "Identifier", + "src": "29954:9:39" + } + ], + "id": 12263, + "name": "IndexAccess", + "src": "29944:20:39" + } + ], + "id": 12264, + "name": "MemberAccess", + "src": "29944:33:39" + } + ], + "id": 12265, + "name": "VariableDeclarationStatement", + "src": "29919:58:39" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!", + "prefix": true, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12314, + "type": "function (uint256) view returns (bool)", + "value": "_isInitialized" + }, + "id": 12266, + "name": "Identifier", + "src": "29992:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12260, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12267, + "name": "Identifier", + "src": "30007:14:39" + } + ], + "id": 12268, + "name": "FunctionCall", + "src": "29992:30:39" + } + ], + "id": 12269, + "name": "UnaryOperation", + "src": "29991:31:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "packedParams", + "referencedDeclaration": 8827, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "struct StakeDelegatable.Operator storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 8825, + "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", + "value": "operators" + }, + "id": 12270, + "name": "Identifier", + "src": "30184:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12271, + "name": "Identifier", + "src": "30194:9:39" + } + ], + "id": 12272, + "name": "IndexAccess", + "src": "30184:20:39" + } + ], + "id": 12273, + "name": "MemberAccess", + "src": "30184:33:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "instantComplete", + "referencedDeclaration": 20214, + "type": "function (struct TopUps.Storage storage pointer,uint256,address,uint256,contract TokenStakingEscrow) returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11103, + "type": "struct TopUps.Storage storage ref", + "value": "topUps" + }, + "id": 12274, + "name": "Identifier", + "src": "30220:6:39" + } + ], + "id": 12275, + "name": "MemberAccess", + "src": "30220:22:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12180, + "type": "uint256", + "value": "_value" + }, + "id": 12276, + "name": "Identifier", + "src": "30260:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12277, + "name": "Identifier", + "src": "30284:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12260, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12278, + "name": "Identifier", + "src": "30311:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11097, + "type": "contract TokenStakingEscrow", + "value": "escrow" + }, + "id": 12279, + "name": "Identifier", + "src": "30343:6:39" + } + ], + "id": 12280, + "name": "FunctionCall", + "src": "30220:143:39" + } + ], + "id": 12281, + "name": "Assignment", + "src": "30184:179:39" + } + ], + "id": 12282, + "name": "ExpressionStatement", + "src": "30184:179:39" + } + ], + "id": 12283, + "name": "Block", + "src": "30024:350:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "initiate", + "referencedDeclaration": 20279, + "type": "function (struct TopUps.Storage storage pointer,uint256,address,uint256,contract TokenStakingEscrow)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11103, + "type": "struct TopUps.Storage storage ref", + "value": "topUps" + }, + "id": 12284, + "name": "Identifier", + "src": "30616:6:39" + } + ], + "id": 12286, + "name": "MemberAccess", + "src": "30616:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12180, + "type": "uint256", + "value": "_value" + }, + "id": 12287, + "name": "Identifier", + "src": "30632:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12182, + "type": "address", + "value": "_operator" + }, + "id": 12288, + "name": "Identifier", + "src": "30640:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12260, + "type": "uint256", + "value": "operatorParams" + }, + "id": 12289, + "name": "Identifier", + "src": "30651:14:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11097, + "type": "contract TokenStakingEscrow", + "value": "escrow" + }, + "id": 12290, + "name": "Identifier", + "src": "30667:6:39" + } + ], + "id": 12291, + "name": "FunctionCall", + "src": "30616:58:39" + } + ], + "id": 12292, + "name": "ExpressionStatement", + "src": "30616:58:39" + } + ], + "id": 12293, + "name": "Block", + "src": "30380:305:39" + } + ], + "id": 12294, + "name": "IfStatement", + "src": "29987:698:39" + } + ], + "id": 12295, + "name": "Block", + "src": "28420:2271:39" + } + ], + "id": 12296, + "name": "FunctionDefinition", + "src": "28283:2408:39" + }, + { + "attributes": { + "documentation": "@notice Is the operator with the given params initialized", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_isInitialized", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorParams", + "scope": 12314, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12297, + "name": "ElementaryTypeName", + "src": "30787:7:39" + } + ], + "id": 12298, + "name": "VariableDeclaration", + "src": "30787:23:39" + } + ], + "id": 12299, + "name": "ParameterList", + "src": "30786:25:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 12314, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 12300, + "name": "ElementaryTypeName", + "src": "30859:4:39" + } + ], + "id": 12301, + "name": "VariableDeclaration", + "src": "30859:4:39" + } + ], + "id": 12302, + "name": "ParameterList", + "src": "30858:6:39" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 12302 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28136, + "type": "block", + "value": "block" + }, + "id": 12303, + "name": "Identifier", + "src": "30898:5:39" + } + ], + "id": 12304, + "name": "MemberAccess", + "src": "30898:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getCreationTimestamp", + "referencedDeclaration": 27945, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12298, + "type": "uint256", + "value": "_operatorParams" + }, + "id": 12305, + "name": "Identifier", + "src": "30928:15:39" + } + ], + "id": 12306, + "name": "MemberAccess", + "src": "30928:36:39" + } + ], + "id": 12307, + "name": "FunctionCall", + "src": "30928:38:39" + } + ], + "id": 12308, + "name": "MemberAccess", + "src": "30928:42:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11091, + "type": "uint256", + "value": "initializationPeriod" + }, + "id": 12309, + "name": "Identifier", + "src": "30971:20:39" + } + ], + "id": 12310, + "name": "FunctionCall", + "src": "30928:64:39" + } + ], + "id": 12311, + "name": "BinaryOperation", + "src": "30898:94:39" + } + ], + "id": 12312, + "name": "Return", + "src": "30879:113:39" + } + ], + "id": 12313, + "name": "Block", + "src": "30869:130:39" + } + ], + "id": 12314, + "name": "FunctionDefinition", + "src": "30763:236:39" + }, + { + "attributes": { + "documentation": "@notice Is the operator with the given params undelegating", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_isUndelegating", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorParams", + "scope": 12339, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12315, + "name": "ElementaryTypeName", + "src": "31097:7:39" + } + ], + "id": 12316, + "name": "VariableDeclaration", + "src": "31097:23:39" + } + ], + "id": 12317, + "name": "ParameterList", + "src": "31096:25:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 12339, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 12318, + "name": "ElementaryTypeName", + "src": "31169:4:39" + } + ], + "id": 12319, + "name": "VariableDeclaration", + "src": "31169:4:39" + } + ], + "id": 12320, + "name": "ParameterList", + "src": "31168:6:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [12322] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "undelegatedAt", + "scope": 12338, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12321, + "name": "ElementaryTypeName", + "src": "31189:7:39" + } + ], + "id": 12322, + "name": "VariableDeclaration", + "src": "31189:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getUndelegationTimestamp", + "referencedDeclaration": 27977, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12316, + "type": "uint256", + "value": "_operatorParams" + }, + "id": 12323, + "name": "Identifier", + "src": "31213:15:39" + } + ], + "id": 12324, + "name": "MemberAccess", + "src": "31213:40:39" + } + ], + "id": 12325, + "name": "FunctionCall", + "src": "31213:42:39" + } + ], + "id": 12326, + "name": "VariableDeclarationStatement", + "src": "31189:66:39" + }, + { + "attributes": { + "functionReturnParameters": 12320 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12322, + "type": "uint256", + "value": "undelegatedAt" + }, + "id": 12327, + "name": "Identifier", + "src": "31273:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 12328, + "name": "Literal", + "src": "31290:1:39" + } + ], + "id": 12329, + "name": "BinaryOperation", + "src": "31273:18:39" + } + ], + "id": 12330, + "name": "TupleExpression", + "src": "31272:20:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28136, + "type": "block", + "value": "block" + }, + "id": 12331, + "name": "Identifier", + "src": "31297:5:39" + } + ], + "id": 12332, + "name": "MemberAccess", + "src": "31297:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12322, + "type": "uint256", + "value": "undelegatedAt" + }, + "id": 12333, + "name": "Identifier", + "src": "31315:13:39" + } + ], + "id": 12334, + "name": "BinaryOperation", + "src": "31297:31:39" + } + ], + "id": 12335, + "name": "TupleExpression", + "src": "31296:33:39" + } + ], + "id": 12336, + "name": "BinaryOperation", + "src": "31272:57:39" + } + ], + "id": 12337, + "name": "Return", + "src": "31265:64:39" + } + ], + "id": 12338, + "name": "Block", + "src": "31179:157:39" + } + ], + "id": 12339, + "name": "FunctionDefinition", + "src": "31072:264:39" + }, + { + "attributes": { + "documentation": "@notice Has the operator with the given params finished undelegating", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_isUndelegatingFinished", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorParams", + "scope": 12368, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12340, + "name": "ElementaryTypeName", + "src": "31452:7:39" + } + ], + "id": 12341, + "name": "VariableDeclaration", + "src": "31452:23:39" + } + ], + "id": 12342, + "name": "ParameterList", + "src": "31451:25:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 12368, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 12343, + "name": "ElementaryTypeName", + "src": "31524:4:39" + } + ], + "id": 12344, + "name": "VariableDeclaration", + "src": "31524:4:39" + } + ], + "id": 12345, + "name": "ParameterList", + "src": "31523:6:39" + }, + { + "children": [ + { + "attributes": { + "assignments": [12347] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "undelegatedAt", + "scope": 12367, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12346, + "name": "ElementaryTypeName", + "src": "31544:7:39" + } + ], + "id": 12347, + "name": "VariableDeclaration", + "src": "31544:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "getUndelegationTimestamp", + "referencedDeclaration": 27977, + "type": "function (uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12341, + "type": "uint256", + "value": "_operatorParams" + }, + "id": 12348, + "name": "Identifier", + "src": "31568:15:39" + } + ], + "id": 12349, + "name": "MemberAccess", + "src": "31568:40:39" + } + ], + "id": 12350, + "name": "FunctionCall", + "src": "31568:42:39" + } + ], + "id": 12351, + "name": "VariableDeclarationStatement", + "src": "31544:66:39" + }, + { + "attributes": { + "functionReturnParameters": 12345 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12347, + "type": "uint256", + "value": "undelegatedAt" + }, + "id": 12352, + "name": "Identifier", + "src": "31640:13:39" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 12353, + "name": "Literal", + "src": "31657:1:39" + } + ], + "id": 12354, + "name": "BinaryOperation", + "src": "31640:18:39" + } + ], + "id": 12355, + "name": "TupleExpression", + "src": "31639:20:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "timestamp", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28136, + "type": "block", + "value": "block" + }, + "id": 12356, + "name": "Identifier", + "src": "31676:5:39" + } + ], + "id": 12357, + "name": "MemberAccess", + "src": "31676:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "add", + "referencedDeclaration": 310, + "type": "function (uint256,uint256) pure returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12347, + "type": "uint256", + "value": "undelegatedAt" + }, + "id": 12358, + "name": "Identifier", + "src": "31694:13:39" + } + ], + "id": 12359, + "name": "MemberAccess", + "src": "31694:17:39" + }, + { + "attributes": { + "argumentTypes": null, + "arguments": [null], + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [null], + "overloadedDeclarations": [null], + "referencedDeclaration": 11182, + "type": "function () view returns (uint256)", + "value": "undelegationPeriod" + }, + "id": 12360, + "name": "Identifier", + "src": "31712:18:39" + } + ], + "id": 12361, + "name": "FunctionCall", + "src": "31712:20:39" + } + ], + "id": 12362, + "name": "FunctionCall", + "src": "31694:39:39" + } + ], + "id": 12363, + "name": "BinaryOperation", + "src": "31676:57:39" + } + ], + "id": 12364, + "name": "TupleExpression", + "src": "31675:59:39" + } + ], + "id": 12365, + "name": "BinaryOperation", + "src": "31639:95:39" + } + ], + "id": 12366, + "name": "Return", + "src": "31620:114:39" + } + ], + "id": 12367, + "name": "Block", + "src": "31534:207:39" + } + ], + "id": 12368, + "name": "FunctionDefinition", + "src": "31419:322:39" + }, + { + "attributes": { + "documentation": "@notice Get whether the operator's stake is released\n as far as the operator contract is concerned.\n If the operator contract has a lock on the operator,\n the operator's stake is be released when the lock expires.\n Otherwise the stake is released when the operator finishes undelegating.", + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "_isStakeReleased", + "scope": 12435, + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 12390, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12369, + "name": "ElementaryTypeName", + "src": "32106:7:39" + } + ], + "id": 12370, + "name": "VariableDeclaration", + "src": "32106:17:39" + }, + { + "attributes": { + "constant": false, + "name": "_operatorParams", + "scope": 12390, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12371, + "name": "ElementaryTypeName", + "src": "32133:7:39" + } + ], + "id": 12372, + "name": "VariableDeclaration", + "src": "32133:23:39" + }, + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 12390, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12373, + "name": "ElementaryTypeName", + "src": "32166:7:39" + } + ], + "id": 12374, + "name": "VariableDeclaration", + "src": "32166:25:39" + } + ], + "id": 12375, + "name": "ParameterList", + "src": "32096:101:39" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 12390, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 12376, + "name": "ElementaryTypeName", + "src": "32221:4:39" + } + ], + "id": 12377, + "name": "VariableDeclaration", + "src": "32221:4:39" + } + ], + "id": 12378, + "name": "ParameterList", + "src": "32220:6:39" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 12378 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 12368, + "type": "function (uint256) view returns (bool)", + "value": "_isUndelegatingFinished" + }, + "id": 12379, + "name": "Identifier", + "src": "32256:23:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12372, + "type": "uint256", + "value": "_operatorParams" + }, + "id": 12380, + "name": "Identifier", + "src": "32280:15:39" + } + ], + "id": 12381, + "name": "FunctionCall", + "src": "32256:40:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "isStakeReleased", + "referencedDeclaration": 19984, + "type": "function (struct Locks.Storage storage pointer,address,address) view returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11101, + "type": "struct Locks.Storage storage ref", + "value": "locks" + }, + "id": 12382, + "name": "Identifier", + "src": "32312:5:39" + } + ], + "id": 12383, + "name": "MemberAccess", + "src": "32312:21:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12370, + "type": "address", + "value": "_operator" + }, + "id": 12384, + "name": "Identifier", + "src": "32334:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12374, + "type": "address", + "value": "_operatorContract" + }, + "id": 12385, + "name": "Identifier", + "src": "32345:17:39" + } + ], + "id": 12386, + "name": "FunctionCall", + "src": "32312:51:39" + } + ], + "id": 12387, + "name": "BinaryOperation", + "src": "32256:107:39" + } + ], + "id": 12388, + "name": "Return", + "src": "32237:126:39" + } + ], + "id": 12389, + "name": "Block", + "src": "32227:143:39" + } + ], + "id": 12390, + "name": "FunctionDefinition", + "src": "32071:299:39" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "transferOrDeposit", + "scope": 12435, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_owner", + "scope": 12434, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12391, + "name": "ElementaryTypeName", + "src": "32412:7:39" + } + ], + "id": 12392, + "name": "VariableDeclaration", + "src": "32412:14:39" + }, + { + "attributes": { + "constant": false, + "name": "_operator", + "scope": 12434, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 12393, + "name": "ElementaryTypeName", + "src": "32436:7:39" + } + ], + "id": 12394, + "name": "VariableDeclaration", + "src": "32436:17:39" + }, + { + "attributes": { + "constant": false, + "name": "_amount", + "scope": 12434, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 12395, + "name": "ElementaryTypeName", + "src": "32463:7:39" + } + ], + "id": 12396, + "name": "VariableDeclaration", + "src": "32463:15:39" + } + ], + "id": 12397, + "name": "ParameterList", + "src": "32402:82:39" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 12398, + "name": "ParameterList", + "src": "32494:0:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "hasGrantDelegated", + "referencedDeclaration": 19375, + "type": "function (struct GrantStaking.Storage storage pointer,address) view returns (bool)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11099, + "type": "struct GrantStaking.Storage storage ref", + "value": "grantStaking" + }, + "id": 12399, + "name": "Identifier", + "src": "32508:12:39" + } + ], + "id": 12400, + "name": "MemberAccess", + "src": "32508:30:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12394, + "type": "address", + "value": "_operator" + }, + "id": 12401, + "name": "Identifier", + "src": "32539:9:39" + } + ], + "id": 12402, + "name": "FunctionCall", + "src": "32508:41:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "approveAndCall", + "referencedDeclaration": 10970, + "type": "function (address,uint256,bytes memory) external" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "contract TokenSender", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 10971, + "type": "type(contract TokenSender)", + "value": "TokenSender" + }, + "id": 12403, + "name": "Identifier", + "src": "32641:11:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Burnable_$1023", + "typeString": "contract ERC20Burnable" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 12404, + "name": "ElementaryTypeNameExpression", + "src": "32653:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11093, + "type": "contract ERC20Burnable", + "value": "token" + }, + "id": 12405, + "name": "Identifier", + "src": "32661:5:39" + } + ], + "id": 12406, + "name": "FunctionCall", + "src": "32653:14:39" + } + ], + "id": 12407, + "name": "FunctionCall", + "src": "32641:27:39" + } + ], + "id": 12408, + "name": "MemberAccess", + "src": "32641:42:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", + "typeString": "contract TokenStakingEscrow" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 12409, + "name": "ElementaryTypeNameExpression", + "src": "32701:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11097, + "type": "contract TokenStakingEscrow", + "value": "escrow" + }, + "id": 12410, + "name": "Identifier", + "src": "32709:6:39" + } + ], + "id": 12411, + "name": "FunctionCall", + "src": "32701:15:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12396, + "type": "uint256", + "value": "_amount" + }, + "id": 12412, + "name": "Identifier", + "src": "32734:7:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bytes memory", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "encode", + "referencedDeclaration": null, + "type": "function () pure returns (bytes memory)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28133, + "type": "abi", + "value": "abi" + }, + "id": 12413, + "name": "Identifier", + "src": "32759:3:39" + } + ], + "id": 12414, + "name": "MemberAccess", + "src": "32759:10:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12394, + "type": "address", + "value": "_operator" + }, + "id": 12415, + "name": "Identifier", + "src": "32791:9:39" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "uint256", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "getGrantForOperator", + "referencedDeclaration": 19423, + "type": "function (struct GrantStaking.Storage storage pointer,address) view returns (uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 11099, + "type": "struct GrantStaking.Storage storage ref", + "value": "grantStaking" + }, + "id": 12416, + "name": "Identifier", + "src": "32822:12:39" + } + ], + "id": 12417, + "name": "MemberAccess", + "src": "32822:32:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12394, + "type": "address", + "value": "_operator" + }, + "id": 12418, + "name": "Identifier", + "src": "32855:9:39" + } + ], + "id": 12419, + "name": "FunctionCall", + "src": "32822:43:39" + } + ], + "id": 12420, + "name": "FunctionCall", + "src": "32759:124:39" + } + ], + "id": 12421, + "name": "FunctionCall", + "src": "32641:256:39" + } + ], + "id": 12422, + "name": "ExpressionStatement", + "src": "32641:256:39" + } + ], + "id": 12423, + "name": "Block", + "src": "32551:357:39" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "safeTransfer", + "referencedDeclaration": 1183, + "type": "function (contract IERC20,address,uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 11093, + "type": "contract ERC20Burnable", + "value": "token" + }, + "id": 12424, + "name": "Identifier", + "src": "33006:5:39" + } + ], + "id": 12426, + "name": "MemberAccess", + "src": "33006:18:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12392, + "type": "address", + "value": "_owner" + }, + "id": 12427, + "name": "Identifier", + "src": "33025:6:39" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 12396, + "type": "uint256", + "value": "_amount" + }, + "id": 12428, + "name": "Identifier", + "src": "33033:7:39" + } + ], + "id": 12429, + "name": "FunctionCall", + "src": "33006:35:39" + } + ], + "id": 12430, + "name": "ExpressionStatement", + "src": "33006:35:39" + } + ], + "id": 12431, + "name": "Block", + "src": "32914:138:39" + } + ], + "id": 12432, + "name": "IfStatement", + "src": "32504:548:39" + } + ], + "id": 12433, + "name": "Block", + "src": "32494:564:39" + } + ], + "id": 12434, + "name": "FunctionDefinition", + "src": "32376:682:39" + } + ], + "id": 12435, + "name": "ContractDefinition", + "src": "2690:30370:39" + } + ], + "id": 12436, + "name": "SourceUnit", + "src": "1837:31224:39" + }, + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang" + }, + "networks": { + "11155111": { + "events": { + "0x53232732101f51eae5873796ea83c72cecad5d155b851edfc11732b9dd4006f6": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + } + ], + "name": "ExpiredLockReleased", + "type": "event" + }, + "0x9519d27283057289b75ef2605d6818602822861717fc48c918d37fe1fdc523f4": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + } + ], + "name": "LockReleased", + "type": "event" + }, + "0x82358c8f3a8a41c7cae8a1196ae5106f7b58ce60eb38b7bc6fe3086d079d2a4e": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "until", + "type": "uint256" + } + ], + "name": "StakeLocked", + "type": "event" + }, + "0x4e5ca729097a0a93d0ffa83b56a620b4b516cbe2a02164cd809bf68fdbda23b2": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newAmount", + "type": "uint256" + } + ], + "name": "TopUpCompleted", + "type": "event" + }, + "0x7247f13a55f262369e97edefca12bc427eea3f7db14e50fa2fc6ff3a0a91bb6e": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "topUp", + "type": "uint256" + } + ], + "name": "TopUpInitiated", + "type": "event" + } + }, + "links": { + "GrantStaking": "0x5FB63D9e076a314023F2D1aB5dBFd7045C281EbA", + "Locks": "0xBcD7917282E529BAA6f232DdDc75F3901245A492", + "TopUps": "0x5D8e618f44A59dd528cce58d00801F4C8e5cfa8D" + }, + "address": "0x91Fe7128f74dBd4F031ea3D90FC5Ea4DCfD81818", + "transactionHash": "0x5bf52dbb3587adbae2c18a63e6d164a71da9178920e21708833890f47cbac789" + } + }, + "schemaVersion": "3.4.8", + "updatedAt": "2023-09-12T08:42:13.411Z", + "networkType": "ethereum", + "devdoc": { + "methods": { + "activeStake(address,address)": { + "params": { + "_operator": "address of stake operator.", + "_operatorContract": "address of operator contract." + }, + "return": "an uint256 representing the eligible stake balance." + }, + "authorizeOperatorContract(address,address)": { + "params": { + "_operator": "address of stake operator.", + "_operatorContract": "address of operator contract." + } + }, + "authorizerOf(address)": { + "return": "Authorizer address." + }, + "balanceOf(address)": { + "params": { + "_address": "The address to query the balance of." + }, + "return": "An uint256 representing the amount staked by the passed address." + }, + "beneficiaryOf(address)": { + "return": "Beneficiary address." + }, + "cancelStake(address)": { + "params": { + "_operator": "Address of the stake operator." + } + }, + "claimDelegatedAuthority(address)": { + "details": "If `delegatedAuthoritySource` is an approved operator contract and recognizes the claimant, this relationship will be recorded in `delegatedAuthority`. Later, the claimant can slash, seize, place locks etc. on operators that have authorized the `delegatedAuthoritySource`. If the `delegatedAuthoritySource` is disabled with the panic button, any recipients of delegated authority from it will also be disabled." + }, + "commitTopUp(address)": { + "params": { + "_operator": "The operator with a pending top-up that is getting committed." + } + }, + "constructor": { + "params": { + "_escrow": "Escrow dedicated for this staking contract.", + "_initializationPeriod": "To avoid certain attacks on work selection, recently created operators must wait for a specific period of time before being eligible for work selection.", + "_registry": "Keep contract registry contract.", + "_token": "KEEP token contract.", + "_tokenGrant": "KEEP token grant contract." + } + }, + "eligibleStake(address,address)": { + "params": { + "_operator": "address of stake operator.", + "_operatorContract": "address of operator contract." + }, + "return": "an uint256 representing the eligible stake balance." + }, + "getDelegationInfo(address)": { + "params": { + "_operator": "Operator address." + }, + "return": "amount The amount of tokens the given operator delegated.createdAt The time when the stake has been delegated.undelegatedAt The time when undelegation has been requested. If undelegation has not been requested, 0 is returned." + }, + "getLocks(address)": { + "return": "creators The addresses of operator contracts that have placed a lock on the operator.expirations The expiration times of the locks placed on the operator." + }, + "hasMinimumStake(address,address)": { + "params": { + "operatorContract": "Operator contract's address", + "staker": "Staker's address" + }, + "return": "True if has enough active stake to participate in the network, false otherwise." + }, + "isApprovedOperatorContract(address)": { + "params": { + "_operatorContract": "address of operator contract." + }, + "return": "True if operator contract is approved, false if operator contract has not been approved or if it was disabled by the panic button." + }, + "isAuthorizedForOperator(address,address)": { + "params": { + "_operator": "address of stake operator.", + "_operatorContract": "address of operator contract." + } + }, + "lockStake(address,uint256)": { + "params": { + "duration": "Lock duration in seconds.", + "operator": "Operator address." + } + }, + "ownerOf(address)": { + "return": "Stake owner address." + }, + "receiveApproval(address,uint256,address,bytes)": { + "details": "Requires that the provided token contract be the same one linked to this contract.", + "params": { + "_extraData": "Data for stake delegation. This byte array must have the following values concatenated: - Beneficiary address (20 bytes), ignored for a top-up - Operator address (20 bytes) - Authorizer address (20 bytes), ignored for a top-up - Grant ID (32 bytes) - required only when called by TokenStakingEscrow", + "_from": "The owner of the tokens who approved them to transfer.", + "_token": "Token contract address.", + "_value": "Approved amount for the transfer and stake." + } + }, + "recoverStake(address)": { + "params": { + "_operator": "Operator address." + } + }, + "releaseExpiredLock(address,address)": { + "details": "Necessary for removing locks placed by contracts that have been disabled by the panic button. Also applicable to prevent inadvertent DoS of `recoverStake` if too many operator contracts have failed to clean up their locks." + }, + "seize(uint256,uint256,address,address[])": { + "params": { + "amountToSeize": "Token amount to seize from every misbehaved operator.", + "misbehavedOperators": "Array of addresses to seize the tokens from.", + "rewardMultiplier": "Reward adjustment in percentage. Min 1% and 100% max.", + "tattletale": "Address to receive the 5% reward." + } + }, + "slash(uint256,address[])": { + "params": { + "amountToSlash": "Token amount to slash from every misbehaved operator.", + "misbehavedOperators": "Array of addresses to seize the tokens from." + } + }, + "transferStakeOwnership(address,address)": { + "params": { + "newOwner": "Address of the new staking relationship owner.", + "operator": "Address of the stake operator." + } + }, + "undelegate(address)": { + "params": { + "_operator": "Address of the stake operator." + } + }, + "undelegateAt(address,uint256)": { + "params": { + "_operator": "Address of the stake operator.", + "_undelegationTimestamp": "The timestamp undelegation is to start at." + } + }, + "unlockStake(address)": { + "details": "Only for operator contracts. To remove expired or disabled locks, use `releaseExpiredLocks`. The authorization check ensures that the caller must have been able to place a lock on the operator sometime in the past. We don't need to check for current approval status of the caller because unlocking stake cannot harm the operator nor interfere with other operator contracts. Therefore even disabled operator contracts may freely unlock stake.", + "params": { + "operator": "Operator address." + } + } + }, + "title": "TokenStaking" + }, + "userdoc": { + "methods": { + "activeStake(address,address)": { + "notice": "Gets the active stake balance of the specified address. An active stake is a stake that passed the initialization period, and may be in the process of undelegation but has not been released yet, either because the undelegation period is not over, or because the operator contract has an active lock on the operator. Also, the operator had to approve the specified operator contract. /// The difference between eligible stake is that active stake does not make the operator eligible for work selection but it may be still finishing earlier work until the stake is released. Operator with a minimum required amount of active stake can join the network but cannot be selected to any new work. " + }, + "authorizeOperatorContract(address,address)": { + "notice": "Authorizes operator contract to access staked token balance of the provided operator. Can only be executed by stake operator authorizer. Contracts using delegated authority cannot be authorized with `authorizeOperatorContract`. Instead, authorize `getAuthoritySource(_operatorContract)`." + }, + "authorizerOf(address)": { + "notice": "Gets the authorizer for the specified operator address." + }, + "balanceOf(address)": { + "notice": "Gets the stake balance of the specified address." + }, + "beneficiaryOf(address)": { + "notice": "Gets the beneficiary for the specified operator address." + }, + "cancelStake(address)": { + "notice": "Cancels stake of tokens within the operator initialization period without being subjected to the token lockup for the undelegation period. This can be used to undo mistaken delegation to the wrong operator address." + }, + "claimDelegatedAuthority(address)": { + "notice": "Grant the sender the same authority as `delegatedAuthoritySource`" + }, + "commitTopUp(address)": { + "notice": "Commits pending top-up for the provided operator. If the top-up did not pass the initialization period, the function fails." + }, + "constructor": "Creates a token staking contract for a provided Standard ERC20Burnable token.", + "eligibleStake(address,address)": { + "notice": "Gets the eligible stake balance of the specified address. An eligible stake is a stake that passed the initialization period and is not currently undelegating. Also, the operator had to approve the specified operator contract. /// Operator with a minimum required amount of eligible stake can join the network and participate in new work selection. " + }, + "getAuthoritySource(address)": { + "notice": "Get the source of the operator contract's authority. If the contract uses delegated authority, returns the original source of the delegated authority. If the contract doesn't use delegated authority, returns the contract itself. Authorize `getAuthoritySource(operatorContract)` to grant `operatorContract` the authority to penalize an operator." + }, + "getDelegationInfo(address)": { + "notice": "Gets stake delegation info for the given operator." + }, + "getLocks(address)": { + "notice": "Get the locks placed on the operator." + }, + "hasMinimumStake(address,address)": { + "notice": "Checks if the specified account has enough active stake to become network operator and that the specified operator contract has been authorized for potential slashing. /// Having the required minimum of active stake makes the operator eligible to join the network. If the active stake is not currently undelegating, operator is also eligible for work selection. " + }, + "isApprovedOperatorContract(address)": { + "notice": "Checks if the operator contract is authorized in the registry. If the contract uses delegated authority it checks authorization of the source contract." + }, + "isAuthorizedForOperator(address,address)": { + "notice": "Checks if operator contract has access to the staked token balance of the provided operator." + }, + "isStakeLocked(address)": { + "notice": "Check whether the operator has any active locks that haven't expired yet and whose creators aren't disabled by the panic button." + }, + "lockStake(address,uint256)": { + "notice": "Locks given operator stake for the specified duration. Locked stake may not be recovered until the lock expires or is released, even if the normal undelegation period has passed. Only previously authorized operator contract can lock the stake." + }, + "minimumStake()": { + "notice": "Returns minimum amount of KEEP that allows sMPC cluster client to participate in the Keep network. Expressed as number with 18-decimal places. Initial minimum stake is higher than the final and lowered periodically based on the amount of steps and the length of the minimum stake schedule in seconds." + }, + "ownerOf(address)": { + "notice": "Gets the stake owner for the specified operator address." + }, + "receiveApproval(address,uint256,address,bytes)": { + "notice": "Receives approval of token transfer and stakes the approved amount or adds the approved amount to an existing delegation (a “top-up”). In case of a top-up, it is expected that the operator stake is not undelegated and that the top-up is performed from the same source of tokens as the initial delegation. That is, if the tokens were delegated from a grant, top-up has to be performed from the same grant. If the delegation was done using liquid tokens, only liquid tokens from the same owner can be used to top-up the stake. Top-up can not be cancelled so it is important to be careful with the amount of KEEP added to the stake." + }, + "recoverStake(address)": { + "notice": "Recovers staked tokens and transfers them back to the owner. Recovering tokens can only be performed when the operator finished undelegating." + }, + "releaseExpiredLock(address,address)": { + "notice": "Removes the lock of the specified operator contract if the lock has expired or the contract has been disabled." + }, + "seize(uint256,uint256,address,address[])": { + "notice": "Seize provided token amount from every member in the misbehaved operators array. The tattletale is rewarded with 5% of the total seized amount scaled by the reward adjustment parameter and the rest 95% is burned." + }, + "slash(uint256,address[])": { + "notice": "Slash provided token amount from every member in the misbehaved operators array and burn 100% of all the tokens." + }, + "transferStakeOwnership(address,address)": { + "notice": "Allows the current staking relationship owner to transfer the ownership to someone else." + }, + "undelegate(address)": { + "notice": "Undelegates staked tokens. You will be able to recover your stake by calling `recoverStake()` with operator address once undelegation period is over." + }, + "undelegateAt(address,uint256)": { + "notice": "Set an undelegation time for staked tokens. Undelegation will begin at the specified timestamp. You will be able to recover your stake by calling `recoverStake()` with operator address once undelegation period is over." + }, + "undelegationPeriod()": { + "notice": "Returns the current value of the undelegation period. The staking contract guarantees that an undelegated operator’s stakes will stay locked for a period of time after undelegation, and thus available as collateral for any work the operator is engaged in. The undelegation period is two weeks for the first two months and two months after that." + }, + "unlockStake(address)": { + "notice": "Removes a lock the caller had previously placed on the operator." + } + }, + "notice": "A token staking contract for a specified standard ERC20Burnable token. A holder of the specified token can stake delegate its tokens to this contract and recover the stake after undelegation period is over." + } +} diff --git a/hardhat.config.ts b/hardhat.config.ts index 17bcfabb..299a897a 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -57,21 +57,13 @@ const config: HardhatUserConfig = { : undefined, tags: ["tenderly"], }, - rinkeby: { + sepolia: { url: process.env.CHAIN_API_URL || "", - chainId: 4, - accounts: process.env.CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY - ? [process.env.CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY] - : undefined, - tags: ["tenderly"], - }, - ropsten: { - url: process.env.CHAIN_API_URL || "", - chainId: 3, + chainId: 11155111, accounts: process.env.CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY ? [ process.env.CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY, - process.env.KEEP_CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY, + process.env.KEEP_CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY, // TODO: verify if we have different owner here or can we remove this ] : undefined, tags: ["tenderly"], @@ -100,6 +92,7 @@ const config: HardhatUserConfig = { // to the contract artifacts. hardhat: process.env.FORKING_URL ? ["./external/mainnet"] : [], goerli: ["./external/goerli"], + sepolia: ["./external/sepolia"], mainnet: ["./external/mainnet"], }, }, @@ -107,6 +100,7 @@ const config: HardhatUserConfig = { deployer: { default: 1, // take the first account as deployer goerli: 0, + sepolia: 0, // mainnet: "0x123694886DBf5Ac94DDA07135349534536D14cAf", }, thresholdCouncil: { @@ -114,8 +108,8 @@ const config: HardhatUserConfig = { }, keepRegistryKeeper: { default: 1, // same as the deployer - ropsten: "0x923C5Dbf353e99394A21Aa7B67F3327Ca111C67D", goerli: "0x68ad60CC5e8f3B7cC53beaB321cf0e6036962dBc", + sepolia: "0x68ad60CC5e8f3B7cC53beaB321cf0e6036962dBc", }, }, mocha: {