test-contracts-sovryn
Version:
Smart contracts for the Sovryn protocol and external integrations.
13,544 lines • 740 kB
JSON
{
"id": "8b68c356de7d4d9d4c34d15829eff298",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.5.17",
"solcLongVersion": "0.5.17+commit.d19bba13",
"input": {
"language": "Solidity",
"sources": {
"contracts/multisig/MultiSigWallet.sol": {
"content": "pragma solidity ^0.5.17;\n\n/**\n * @title Multisignature wallet - Allows multiple parties to agree on\n * transactions before execution.\n *\n * @author Stefan George - <stefan.george@consensys.net>\n * */\ncontract MultiSigWallet {\n\t/*\n\t * Events\n\t */\n\tevent Confirmation(address indexed sender, uint256 indexed transactionId);\n\tevent Revocation(address indexed sender, uint256 indexed transactionId);\n\tevent Submission(uint256 indexed transactionId);\n\tevent Execution(uint256 indexed transactionId);\n\tevent ExecutionFailure(uint256 indexed transactionId);\n\tevent Deposit(address indexed sender, uint256 value);\n\tevent OwnerAddition(address indexed owner);\n\tevent OwnerRemoval(address indexed owner);\n\tevent RequirementChange(uint256 required);\n\n\t/*\n\t * Constants\n\t */\n\tuint256 public constant MAX_OWNER_COUNT = 50;\n\n\t/*\n\t * Storage\n\t */\n\tmapping(uint256 => Transaction) public transactions;\n\tmapping(uint256 => mapping(address => bool)) public confirmations;\n\tmapping(address => bool) public isOwner;\n\taddress[] public owners;\n\tuint256 public required;\n\tuint256 public transactionCount;\n\n\tstruct Transaction {\n\t\taddress destination;\n\t\tuint256 value;\n\t\tbytes data;\n\t\tbool executed;\n\t}\n\n\t/*\n\t * Modifiers\n\t */\n\tmodifier onlyWallet() {\n\t\trequire(msg.sender == address(this));\n\t\t_;\n\t}\n\n\tmodifier ownerDoesNotExist(address owner) {\n\t\trequire(!isOwner[owner]);\n\t\t_;\n\t}\n\n\tmodifier ownerExists(address owner) {\n\t\trequire(isOwner[owner]);\n\t\t_;\n\t}\n\n\tmodifier transactionExists(uint256 transactionId) {\n\t\trequire(transactions[transactionId].destination != address(0));\n\t\t_;\n\t}\n\n\tmodifier confirmed(uint256 transactionId, address owner) {\n\t\trequire(confirmations[transactionId][owner]);\n\t\t_;\n\t}\n\n\tmodifier notConfirmed(uint256 transactionId, address owner) {\n\t\trequire(!confirmations[transactionId][owner]);\n\t\t_;\n\t}\n\n\tmodifier notExecuted(uint256 transactionId) {\n\t\trequire(!transactions[transactionId].executed);\n\t\t_;\n\t}\n\n\tmodifier notNull(address _address) {\n\t\trequire(_address != address(0));\n\t\t_;\n\t}\n\n\tmodifier validRequirement(uint256 ownerCount, uint256 _required) {\n\t\trequire(ownerCount <= MAX_OWNER_COUNT && _required <= ownerCount && _required != 0 && ownerCount != 0);\n\t\t_;\n\t}\n\n\t/// @notice Fallback function allows to deposit ether.\n\tfunction() external payable {\n\t\tif (msg.value > 0) emit Deposit(msg.sender, msg.value);\n\t}\n\n\t/*\n\t * Public functions\n\t */\n\n\t/**\n\t * @notice Contract constructor sets initial owners and required number\n\t * of confirmations.\n\t *\n\t * @param _owners List of initial owners.\n\t * @param _required Number of required confirmations.\n\t * */\n\tconstructor(address[] memory _owners, uint256 _required) public validRequirement(_owners.length, _required) {\n\t\tfor (uint256 i = 0; i < _owners.length; i++) {\n\t\t\trequire(!isOwner[_owners[i]] && _owners[i] != address(0));\n\t\t\tisOwner[_owners[i]] = true;\n\t\t}\n\t\towners = _owners;\n\t\trequired = _required;\n\t}\n\n\t/**\n\t * @notice Allows to add a new owner. Transaction has to be sent by wallet.\n\t * @param owner Address of new owner.\n\t * */\n\tfunction addOwner(address owner)\n\t\tpublic\n\t\tonlyWallet\n\t\townerDoesNotExist(owner)\n\t\tnotNull(owner)\n\t\tvalidRequirement(owners.length + 1, required)\n\t{\n\t\tisOwner[owner] = true;\n\t\towners.push(owner);\n\t\temit OwnerAddition(owner);\n\t}\n\n\t/**\n\t * @notice Allows to remove an owner. Transaction has to be sent by wallet.\n\t * @param owner Address of owner.\n\t * */\n\tfunction removeOwner(address owner) public onlyWallet ownerExists(owner) {\n\t\tisOwner[owner] = false;\n\t\tfor (uint256 i = 0; i < owners.length - 1; i++)\n\t\t\tif (owners[i] == owner) {\n\t\t\t\towners[i] = owners[owners.length - 1];\n\t\t\t\tbreak;\n\t\t\t}\n\t\towners.length -= 1;\n\t\tif (required > owners.length) changeRequirement(owners.length);\n\t\temit OwnerRemoval(owner);\n\t}\n\n\t/**\n\t * @notice Allows to replace an owner with a new owner. Transaction has\n\t * to be sent by wallet.\n\t *\n\t * @param owner Address of owner to be replaced.\n\t * @param newOwner Address of new owner.\n\t * */\n\tfunction replaceOwner(address owner, address newOwner) public onlyWallet ownerExists(owner) ownerDoesNotExist(newOwner) {\n\t\tfor (uint256 i = 0; i < owners.length; i++)\n\t\t\tif (owners[i] == owner) {\n\t\t\t\towners[i] = newOwner;\n\t\t\t\tbreak;\n\t\t\t}\n\t\tisOwner[owner] = false;\n\t\tisOwner[newOwner] = true;\n\t\temit OwnerRemoval(owner);\n\t\temit OwnerAddition(newOwner);\n\t}\n\n\t/**\n\t * @notice Allows to change the number of required confirmations.\n\t * Transaction has to be sent by wallet.\n\t *\n\t * @param _required Number of required confirmations.\n\t * */\n\tfunction changeRequirement(uint256 _required) public onlyWallet validRequirement(owners.length, _required) {\n\t\trequired = _required;\n\t\temit RequirementChange(_required);\n\t}\n\n\t/**\n\t * @notice Allows an owner to submit and confirm a transaction.\n\t *\n\t * @param destination Transaction target address.\n\t * @param value Transaction ether value.\n\t * @param data Transaction data payload.\n\t *\n\t * @return Returns transaction ID.\n\t * */\n\tfunction submitTransaction(\n\t\taddress destination,\n\t\tuint256 value,\n\t\tbytes memory data\n\t) public returns (uint256 transactionId) {\n\t\ttransactionId = addTransaction(destination, value, data);\n\t\tconfirmTransaction(transactionId);\n\t}\n\n\t/**\n\t * @notice Allows an owner to confirm a transaction.\n\t * @param transactionId Transaction ID.\n\t * */\n\tfunction confirmTransaction(uint256 transactionId)\n\t\tpublic\n\t\townerExists(msg.sender)\n\t\ttransactionExists(transactionId)\n\t\tnotConfirmed(transactionId, msg.sender)\n\t{\n\t\tconfirmations[transactionId][msg.sender] = true;\n\t\temit Confirmation(msg.sender, transactionId);\n\t\texecuteTransaction(transactionId);\n\t}\n\n\t/**\n\t * @notice Allows an owner to revoke a confirmation for a transaction.\n\t * @param transactionId Transaction ID.\n\t * */\n\tfunction revokeConfirmation(uint256 transactionId)\n\t\tpublic\n\t\townerExists(msg.sender)\n\t\tconfirmed(transactionId, msg.sender)\n\t\tnotExecuted(transactionId)\n\t{\n\t\tconfirmations[transactionId][msg.sender] = false;\n\t\temit Revocation(msg.sender, transactionId);\n\t}\n\n\t/**\n\t * @notice Allows anyone to execute a confirmed transaction.\n\t * @param transactionId Transaction ID.\n\t * */\n\tfunction executeTransaction(uint256 transactionId)\n\t\tpublic\n\t\townerExists(msg.sender)\n\t\tconfirmed(transactionId, msg.sender)\n\t\tnotExecuted(transactionId)\n\t{\n\t\tif (isConfirmed(transactionId)) {\n\t\t\tTransaction storage txn = transactions[transactionId];\n\t\t\ttxn.executed = true;\n\t\t\tif (external_call(txn.destination, txn.value, txn.data.length, txn.data)) emit Execution(transactionId);\n\t\t\telse {\n\t\t\t\temit ExecutionFailure(transactionId);\n\t\t\t\ttxn.executed = false;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Low level transaction execution.\n\t *\n\t * @dev Call has been separated into its own function in order to\n\t * take advantage of the Solidity's code generator to produce a\n\t * loop that copies tx.data into memory.\n\t *\n\t * @param destination The address of the Smart Contract to call.\n\t * @param value The amout of rBTC to send w/ the transaction.\n\t * @param dataLength The size of the payload.\n\t * @param data The payload.\n\t *\n\t * @return Success or failure.\n\t * */\n\tfunction external_call(\n\t\taddress destination,\n\t\tuint256 value,\n\t\tuint256 dataLength,\n\t\tbytes memory data\n\t) internal returns (bool) {\n\t\tbool result;\n\t\tassembly {\n\t\t\tlet x := mload(0x40) /// \"Allocate\" memory for output (0x40 is where \"free memory\" pointer is stored by convention)\n\t\t\tlet d := add(data, 32) /// First 32 bytes are the padded length of data, so exclude that\n\t\t\tresult := call(\n\t\t\t\tsub(gas, 34710), /// 34710 is the value that solidity is currently emitting\n\t\t\t\t/// It includes callGas (700) + callVeryLow (3, to pay for SUB) + callValueTransferGas (9000) +\n\t\t\t\t/// callNewAccountGas (25000, in case the destination address does not exist and needs creating)\n\t\t\t\tdestination,\n\t\t\t\tvalue,\n\t\t\t\td,\n\t\t\t\tdataLength, /// Size of the input (in bytes) - this is what fixes the padding problem\n\t\t\t\tx,\n\t\t\t\t0 /// Output is ignored, therefore the output size is zero\n\t\t\t)\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * @notice Returns the confirmation status of a transaction.\n\t * @param transactionId Transaction ID.\n\t * @return Confirmation status.\n\t * */\n\tfunction isConfirmed(uint256 transactionId) public view returns (bool) {\n\t\tuint256 count = 0;\n\t\tfor (uint256 i = 0; i < owners.length; i++) {\n\t\t\tif (confirmations[transactionId][owners[i]]) count += 1;\n\t\t\tif (count == required) return true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/*\n\t * Internal functions\n\t */\n\n\t/**\n\t * @notice Adds a new transaction to the transaction mapping,\n\t * if transaction does not exist yet.\n\t *\n\t * @param destination Transaction target address.\n\t * @param value Transaction ether value.\n\t * @param data Transaction data payload.\n\t *\n\t * @return Returns transaction ID.\n\t * */\n\tfunction addTransaction(\n\t\taddress destination,\n\t\tuint256 value,\n\t\tbytes memory data\n\t) internal notNull(destination) returns (uint256 transactionId) {\n\t\ttransactionId = transactionCount;\n\t\ttransactions[transactionId] = Transaction({ destination: destination, value: value, data: data, executed: false });\n\t\ttransactionCount += 1;\n\t\temit Submission(transactionId);\n\t}\n\n\t/*\n\t * Web3 call functions\n\t */\n\n\t/**\n\t * @notice Get the number of confirmations of a transaction.\n\t * @param transactionId Transaction ID.\n\t * @return Number of confirmations.\n\t * */\n\tfunction getConfirmationCount(uint256 transactionId) public view returns (uint256 count) {\n\t\tfor (uint256 i = 0; i < owners.length; i++) if (confirmations[transactionId][owners[i]]) count += 1;\n\t}\n\n\t/**\n\t * @notice Get the total number of transactions after filers are applied.\n\t * @param pending Include pending transactions.\n\t * @param executed Include executed transactions.\n\t * @return Total number of transactions after filters are applied.\n\t * */\n\tfunction getTransactionCount(bool pending, bool executed) public view returns (uint256 count) {\n\t\tfor (uint256 i = 0; i < transactionCount; i++)\n\t\t\tif ((pending && !transactions[i].executed) || (executed && transactions[i].executed)) count += 1;\n\t}\n\n\t/**\n\t * @notice Get the list of owners.\n\t * @return List of owner addresses.\n\t * */\n\tfunction getOwners() public view returns (address[] memory) {\n\t\treturn owners;\n\t}\n\n\t/**\n\t * @notice Get the array with owner addresses, which confirmed transaction.\n\t * @param transactionId Transaction ID.\n\t * @return Returns array of owner addresses.\n\t * */\n\tfunction getConfirmations(uint256 transactionId) public view returns (address[] memory _confirmations) {\n\t\taddress[] memory confirmationsTemp = new address[](owners.length);\n\t\tuint256 count = 0;\n\t\tuint256 i;\n\t\tfor (i = 0; i < owners.length; i++)\n\t\t\tif (confirmations[transactionId][owners[i]]) {\n\t\t\t\tconfirmationsTemp[count] = owners[i];\n\t\t\t\tcount += 1;\n\t\t\t}\n\t\t_confirmations = new address[](count);\n\t\tfor (i = 0; i < count; i++) _confirmations[i] = confirmationsTemp[i];\n\t}\n\n\t/**\n\t * @notice Get the list of transaction IDs in defined range.\n\t *\n\t * @param from Index start position of transaction array.\n\t * @param to Index end position of transaction array.\n\t * @param pending Include pending transactions.\n\t * @param executed Include executed transactions.\n\t *\n\t * @return Returns array of transaction IDs.\n\t * */\n\tfunction getTransactionIds(\n\t\tuint256 from,\n\t\tuint256 to,\n\t\tbool pending,\n\t\tbool executed\n\t) public view returns (uint256[] memory _transactionIds) {\n\t\tuint256[] memory transactionIdsTemp = new uint256[](transactionCount);\n\t\tuint256 count = 0;\n\t\tuint256 i;\n\t\tfor (i = 0; i < transactionCount; i++)\n\t\t\tif ((pending && !transactions[i].executed) || (executed && transactions[i].executed)) {\n\t\t\t\ttransactionIdsTemp[count] = i;\n\t\t\t\tcount += 1;\n\t\t\t}\n\t\t_transactionIds = new uint256[](to - from);\n\t\tfor (i = from; i < to; i++) _transactionIds[i - from] = transactionIdsTemp[i];\n\t}\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"devdoc",
"userdoc"
],
"": [
"ast"
]
}
}
}
},
"output": {
"contracts": {
"contracts/multisig/MultiSigWallet.sol": {
"MultiSigWallet": {
"abi": [
{
"inputs": [
{
"internalType": "address[]",
"name": "_owners",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "_required",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Confirmation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Deposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Execution",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "ExecutionFailure",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnerAddition",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnerRemoval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "required",
"type": "uint256"
}
],
"name": "RequirementChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Revocation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Submission",
"type": "event"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"constant": true,
"inputs": [],
"name": "MAX_OWNER_COUNT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "addOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_required",
"type": "uint256"
}
],
"name": "changeRequirement",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "confirmTransaction",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "confirmations",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "executeTransaction",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "getConfirmationCount",
"outputs": [
{
"internalType": "uint256",
"name": "count",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "getConfirmations",
"outputs": [
{
"internalType": "address[]",
"name": "_confirmations",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getOwners",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bool",
"name": "pending",
"type": "bool"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
}
],
"name": "getTransactionCount",
"outputs": [
{
"internalType": "uint256",
"name": "count",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "from",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "to",
"type": "uint256"
},
{
"internalType": "bool",
"name": "pending",
"type": "bool"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
}
],
"name": "getTransactionIds",
"outputs": [
{
"internalType": "uint256[]",
"name": "_transactionIds",
"type": "uint256[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "isConfirmed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "owners",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "removeOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "replaceOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "required",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "revokeConfirmation",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "destination",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "submitTransaction",
"outputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "transactionCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "transactions",
"outputs": [
{
"internalType": "address",
"name": "destination",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"author": "Stefan George - <stefan.george@consensys.net>",
"methods": {
"addOwner(address)": {
"params": {
"owner": "Address of new owner."
}
},
"changeRequirement(uint256)": {
"params": {
"_required": "Number of required confirmations."
}
},
"confirmTransaction(uint256)": {
"params": {
"transactionId": "Transaction ID."
}
},
"constructor": {
"params": {
"_owners": "List of initial owners.",
"_required": "Number of required confirmations."
}
},
"executeTransaction(uint256)": {
"params": {
"transactionId": "Transaction ID."
}
},
"getConfirmationCount(uint256)": {
"params": {
"transactionId": "Transaction ID."
},
"return": "Number of confirmations."
},
"getConfirmations(uint256)": {
"params": {
"transactionId": "Transaction ID."
},
"return": "Returns array of owner addresses."
},
"getOwners()": {
"return": "List of owner addresses."
},
"getTransactionCount(bool,bool)": {
"params": {
"executed": "Include executed transactions.",
"pending": "Include pending transactions."
},
"return": "Total number of transactions after filters are applied."
},
"getTransactionIds(uint256,uint256,bool,bool)": {
"params": {
"executed": "Include executed transactions.",
"from": "Index start position of transaction array.",
"pending": "Include pending transactions.",
"to": "Index end position of transaction array."
},
"return": "Returns array of transaction IDs."
},
"isConfirmed(uint256)": {
"params": {
"transactionId": "Transaction ID."
},
"return": "Confirmation status."
},
"removeOwner(address)": {
"params": {
"owner": "Address of owner."
}
},
"replaceOwner(address,address)": {
"params": {
"newOwner": "Address of new owner.",
"owner": "Address of owner to be replaced."
}
},
"revokeConfirmation(uint256)": {
"params": {
"transactionId": "Transaction ID."
}
},
"submitTransaction(address,uint256,bytes)": {
"params": {
"data": "Transaction data payload.",
"destination": "Transaction target address.",
"value": "Transaction ether value."
},
"return": "Returns transaction ID."
}
},
"title": "Multisignature wallet - Allows multiple parties to agree on transactions before execution."
},
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50604051620018b2380380620018b2833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b50505050919091016040525060200151835190925090508160328211801590620000e55750818111155b8015620000f157508015155b8015620000fd57508115155b6200010757600080fd5b60005b8451811015620001d957600260008683815181106200012557fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615801562000181575060006001600160a01b03168582815181106200016d57fe5b60200260200101516001600160a01b031614155b6200018b57600080fd5b6001600260008784815181106200019e57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016200010a565b508351620001ef906003906020870190620001fc565b5050506004555062000290565b82805482825590600052602060002090810192821562000254579160200282015b828111156200025457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200021d565b506200026292915062000266565b5090565b6200028d91905b80821115620002625780546001600160a01b03191681556001016200026d565b90565b61161280620002a06000396000f3fe60806040526004361061012a5760003560e01c8063a0e67e2b116100ab578063c01a8c841161006f578063c01a8c8414610534578063c64274741461055e578063d74f8edd14610626578063dc8452cd1461063b578063e20056e614610650578063ee22610b1461068b5761012a565b8063a0e67e2b14610426578063a8abe69a1461048b578063b5dc40c3146104cb578063b77bf600146104f5578063ba51a6df1461050a5761012a565b806354741525116100f2578063547415251461028c5780637065cb48146102d2578063784547a7146103055780638b51d13f1461032f5780639ace38c2146103595761012a565b8063025e7c2714610169578063173825d9146101af57806320ea8d86146101e25780632f54bf6e1461020c5780633411c81c14610253575b34156101675760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561017557600080fd5b506101936004803603602081101561018c57600080fd5b50356106b5565b604080516001600160a01b039092168252519081900360200190f35b3480156101bb57600080fd5b50610167600480360360208110156101d257600080fd5b50356001600160a01b03166106dc565b3480156101ee57600080fd5b506101676004803603602081101561020557600080fd5b5035610848565b34801561021857600080fd5b5061023f6004803603602081101561022f57600080fd5b50356001600160a01b03166108fe565b604080519115158252519081900360200190f35b34801561025f57600080fd5b5061023f6004803603604081101561027657600080fd5b50803590602001356001600160a01b0316610913565b34801561029857600080fd5b506102c0600480360360408110156102af57600080fd5b508035151590602001351515610933565b60408051918252519081900360200190f35b3480156102de57600080fd5b50610167600480360360208110156102f557600080fd5b50356001600160a01b031661099f565b34801561031157600080fd5b5061023f6004803603602081101561032857600080fd5b5035610ab3565b34801561033b57600080fd5b506102c06004803603602081101561035257600080fd5b5035610b3e565b34801561036557600080fd5b506103836004803603602081101561037c57600080fd5b5035610bad565b60405180856001600160a01b03166001600160a01b031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156103e85781810151838201526020016103d0565b50505050905090810190601f1680156104155780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561043257600080fd5b5061043b610c6b565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047757818101518382015260200161045f565b505050509050019250505060405180910390f35b34801561049757600080fd5b5061043b600480360360808110156104ae57600080fd5b508035906020810135906040810135151590606001351515610cce565b3480156104d757600080fd5b5061043b600480360360208110156104ee57600080fd5b5035610df9565b34801561050157600080fd5b506102c0610f70565b34801561051657600080fd5b506101676004803603602081101561052d57600080fd5b5035610f76565b34801561054057600080fd5b506101676004803603602081101561055757600080fd5b5035610ff3565b34801561056a57600080fd5b506102c06004803603606081101561058157600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156105b157600080fd5b8201836020820111156105c357600080fd5b803590602001918460018302840111640100000000831117156105e557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110ba945050505050565b34801561063257600080fd5b506102c06110d9565b34801561064757600080fd5b506102c06110de565b34801561065c57600080fd5b506101676004803603604081101561067357600080fd5b506001600160a01b03813581169160200135166110e4565b34801561069757600080fd5b50610167600480360360208110156106ae57600080fd5b5035611261565b600381815481106106c257fe5b6000918252602090912001546001600160a01b0316905081565b3330146106e857600080fd5b6001600160a01b038116600090815260026020526040902054819060ff1661070f57600080fd5b6001600160a01b0382166000908152600260205260408120805460ff191690555b600354600019018110156107e357826001600160a01b03166003828154811061075557fe5b6000918252602090912001546001600160a01b031614156107db5760038054600019810190811061078257fe5b600091825260209091200154600380546001600160a01b0390921691839081106107a857fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506107e3565b600101610730565b506003805460001901906107f7908261151c565b5060035460045411156108105760035461081090610f76565b6040516001600160a01b038316907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25050565b3360008181526002602052604090205460ff1661086457600080fd5b60008281526001602090815260408083203380855292529091205483919060ff1661088e57600080fd5b600084815260208190526040902060030154849060ff16156108af57600080fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b60055481101561099857838015610960575060008181526020819052604090206003015460ff16155b806109845750828015610984575060008181526020819052604090206003015460ff165b15610990576001820191505b600101610937565b5092915050565b3330146109ab57600080fd5b6001600160a01b038116600090815260026020526040902054819060ff16156109d357600080fd5b816001600160a01b0381166109e757600080fd5b60038054905060010160045460328211158015610a045750818111155b8015610a0f57508015155b8015610a1a57508115155b610a2357600080fd5b6001600160a01b038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b600354811015610b325760008481526001602052604081206003805491929184908110610ae157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615610b15576001820191505b600454821415610b2a57600192505050610b39565b600101610ab8565b5060009150505b919050565b6000805b600354811015610ba75760008381526001602052604081206003805491929184908110610b6b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615610b9f576001820191505b600101610b42565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f81018890048802840188019096528583526001600160a01b0390931695909491929190830182828015610c585780601f10610c2d57610100808354040283529160200191610c58565b820191906000526020600020905b815481529060010190602001808311610c3b57829003601f168201915b5050506003909301549192505060ff1684565b60606003805480602002602001604051908101604052809291908181526020018280548015610cc357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ca5575b505050505090505b90565b606080600554604051908082528060200260200182016040528015610cfd578160200160208202803883390190505b5090506000805b600554811015610d7e57858015610d2d575060008181526020819052604090206003015460ff16155b80610d515750848015610d51575060008181526020819052604090206003015460ff165b15610d765780838381518110610d6357fe5b6020026020010181815250506001820191505b600101610d04565b878703604051908082528060200260200182016040528015610daa578160200160208202803883390190505b5093508790505b86811015610dee57828181518110610dc557fe5b60200260200101518489830381518110610ddb57fe5b6020908102919091010152600101610db1565b505050949350505050565b606080600380549050604051908082528060200260200182016040528015610e2b578160200160208202803883390190505b5090506000805b600354811015610eee5760008581526001602052604081206003805491929184908110610e5b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615610ee65760038181548110610e9557fe5b9060005260206000200160009054906101000a90046001600160a01b0316838381518110610ebf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001820191505b600101610e32565b81604051908082528060200260200182016040528015610f18578160200160208202803883390190505b509350600090505b81811015610f6857828181518110610f3457fe5b6020026020010151848281518110610f4857fe5b6001600160a01b0390921660209283029190910190910152600101610f20565b505050919050565b60055481565b333014610f8257600080fd5b6003548160328211801590610f975750818111155b8015610fa257508015155b8015610fad57508115155b610fb657600080fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b3360008181526002602052604090205460ff1661100f57600080fd5b60008281526020819052604090205482906001600160a01b031661103257600080fd5b60008381526001602090815260408083203380855292529091205484919060ff161561105d57600080fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a36110b385611261565b5050505050565b60006110c7848484611418565b90506110d281610ff3565b9392505050565b603281565b60045481565b3330146110f057600080fd5b6001600160a01b038216600090815260026020526040902054829060ff1661111757600080fd5b6001600160a01b038216600090815260026020526040902054829060ff161561113f57600080fd5b60005b6003548110156111c757846001600160a01b03166003828154811061116357fe5b6000918252602090912001546001600160a01b031614156111bf57836003828154811061118c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506111c7565b600101611142565b506001600160a01b03808516600081815260026020526040808220805460ff1990811690915593871682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a26040516001600160a01b038416907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a250505050565b3360008181526002602052604090205460ff1661127d57600080fd5b60008281526001602090815260408083203380855292529091205483919060ff166112a757600080fd5b600084815260208190526040902060030154849060ff16156112c857600080fd5b6112d185610ab3565b156110b3576000858152602081815260409182902060038101805460ff19166001908117909155815481830154600280850180548851601f6000199783161561010002979097019091169290920494850187900487028201870190975283815293956113a3956001600160a01b039093169491939283908301828280156113995780601f1061136e57610100808354040283529160200191611399565b820191906000526020600020905b81548152906001019060200180831161137c57829003601f168201915b50505050506114f9565b156113d85760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2611410565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038101805460ff191690555b505050505050565b6000836001600160a01b03811661142e57600080fd5b600554604080516080810182526001600160a01b038881168252602080830189815283850189815260006060860181905287815280845295909520845181546001600160a01b031916941693909317835551600183015592518051949650919390926114a1926002850192910190611545565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b815481835581811115611540576000838152602090206115409181019083016115c3565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061158657805160ff19168380011785556115b3565b828001600101855582156115b3579182015b828111156115b3578251825591602001919060010190611598565b506115bf9291506115c3565b5090565b610ccb91905b808211156115bf57600081556001016115c956fea265627a7a72315820eb5382304691d303af45acb8b32ac722d011a70d2ca2517911ca8d1356b48aea64736f6c63430005110032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x18B2 CODESIZE SUB DUP1 PUSH3 0x18B2 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA1 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP PUSH1 0x20 ADD MLOAD DUP4 MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH1 0x32 DUP3 GT DUP1 ISZERO SWAP1 PUSH3 0xE5 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xF1 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xFD JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH3 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH3 0x1D9 JUMPI PUSH1 0x2 PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x125 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH3 0x181 JUMPI POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x16D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST PUSH3 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x2 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x19E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH3 0x10A JUMP JUMPDEST POP DUP4 MLOAD PUSH3 0x1EF SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 PUSH3 0x1FC JUMP JUMPDEST POP POP POP PUSH1 0x4 SSTORE POP PUSH3 0x290 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x254 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x254 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x21D JUMP JUMPDEST POP PUSH3 0x262 SWAP3 SWAP2 POP PUSH3 0x266 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x28D SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x262 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x26D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1612 DUP1 PUSH3 0x2A0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0E67E2B GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xC01A8C84 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xC01A8C84 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xC6427474 EQ PUSH2 0x55E JUMPI DUP1 PUSH4 0xD74F8EDD EQ PUSH2 0x626 JUMPI DUP1 PUSH4 0xDC8452CD EQ PUSH2 0x63B JUMPI DUP1 PUSH4 0xE20056E6 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0xEE22610B EQ PUSH2 0x68B JUMPI PUSH2 0x12A JUMP JUMPDEST DUP1 PUSH4 0xA0E67E2B EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0xA8ABE69A EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0xB5DC40C3 EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0xB77BF600 EQ PUSH2 0x4F5 JUMPI DUP1 PUSH4 0xBA51A6DF EQ PUSH2 0x50A JUMPI PUSH2 0x12A JUMP JUMPDEST DUP1 PUSH4 0x54741525 GT PUSH2 0xF2 JUMPI DUP1 PUSH4 0x54741525 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x7065CB48 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x784547A7 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x8B51D13F EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x9ACE38C2 EQ PUSH2 0x359 JUMPI PUSH2 0x12A JUMP JUMPDEST DUP1 PUSH4 0x25E7C27 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x173825D9 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0x20EA8D86 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x2F54BF6E EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x3411C81C EQ PUSH2 0x253 JUMPI JUMPDEST CALLVALUE ISZERO PUSH2 0x167 JUMPI PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x848 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x913 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x933 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x99F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x383 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3E8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x415 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43B PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x477 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x45F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xCCE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xDF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH2 0xF70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xF76 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x581 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x10BA SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH2 0x10D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH2 0x10DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x10E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x697 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1261 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x6C2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x70F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 NOT ADD DUP2 LT ISZERO PUSH2 0x7E3 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x755 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x7DB JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x782 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x7A8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x7E3 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x730 JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 PUSH2 0x7F7 SWAP1 DUP3 PUSH2 0x151C JUMP JUMPDEST POP PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD GT ISZERO PUSH2 0x810 JUMPI PUSH1 0x3 SLOAD PUSH2 0x810 SWAP1 PUSH2 0xF76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x8001553A916EF2F495D26A907CC54D96ED840D7BDA71E73194BF5A9DF7A76B90 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF AND PUSH2 0x88E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP5 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD DUP8 SWAP3 PUSH32 0xF6A317157440607F36269043EB55F1287A5A19BA2216AFEAB88CD46CBCFB88E9 SWAP2 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0x998 JUMPI DUP4 DUP1 ISZERO PUSH2 0x960 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0x984 JUMPI POP DUP3 DUP1 ISZERO PUSH2 0x984 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x990 JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x937 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x9AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH1 0x1 ADD PUSH1 0x4 SLOAD PUSH1 0x32 DUP3 GT ISZERO DUP1 ISZERO PUSH2 0xA04 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xA0F JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xA1A JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH2 0xA23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE DUP4 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD PUSH32 0xF39E6E1EB0EDCF53C221607B54B00CD28F3196FED0A24994DC308B8F611B682D SWAP2 SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xB32 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP1 SLOAD SWAP2 SWAP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0xAE1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB15 JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x4 SLOAD DUP3 EQ ISZERO PUSH2 0xB2A JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0xB39 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xAB8 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xBA7 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP1 SLOAD SWAP2 SWAP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0xB6B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB9F JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB42 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP4 ADD SLOAD PUSH1 0x2 DUP1 DUP6 ADD DUP1 SLOAD DUP8 MLOAD PUSH2 0x100 SWAP6 DUP3 AND ISZERO SWAP6 SWAP1 SWAP6 MUL PUSH1 0x0 NOT ADD AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP9 SWAP1 DIV DUP9 MUL DUP5 ADD DUP9 ADD SWAP1 SWAP7 MSTORE DUP6 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP6 SWAP1 SWAP5 SWAP2 SWAP3 SWAP2 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC58 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC2D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC58 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC3B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 POP POP PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCA5 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xCFD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0xD7E JUMPI DUP6 DUP1 ISZERO PUSH2 0xD2D JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0xD51 JUMPI POP DUP5 DUP1 ISZERO PUSH2 0xD51 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0xD76 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD63 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD04 JUMP JUMPDEST DUP8 DUP8 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xDAA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP8 SWAP1 POP JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xDEE JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xDC5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP10 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0xDDB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xDB1 JUMP JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE2B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xEEE JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP1 SLOAD SWAP2 SWAP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0xE5B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xEE6 JUMPI PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xE95 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEBF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xE32 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF18 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF68 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xF34 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF48 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF20 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xF82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD DUP2 PUSH1 0x32 DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0xF97 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xFA2 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xFAD JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xA3F1EE9126A074D9326C682F561767F710E927FAA811F7A99829D49DC421797A SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x100F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1032 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP5 SWAP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x105D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 CALLER DUP1 DUP7 MSTORE SWAP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE SWAP1 MLOAD DUP8 SWAP3 PUSH32 0x4A504A94899432A9846E1AA406DCEB1BCFD538BB839071D49D1E5E23F5BE30EF SWAP2 LOG3 PUSH2 0x10B3 DUP6 PUSH2 0x1261 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C7 DUP5 DUP5 DUP5 PUSH2 0x1418 JUMP JUMPDEST SWAP1 POP PUSH2 0x10D2 DUP2 PUSH2 0xFF3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x32 DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH1 0xFF AND PUSH2 0x1117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x113F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0x11C7 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1163 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x11BF JUMPI DUP4 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x118C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x11C7 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1142 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE SWAP4 DUP8 AND DUP3 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD SWAP1 SWAP5 AND PUSH1 0x1 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 PUSH32 0x8001553A916EF2F495D26A907CC54D96ED840D7BDA71E73194BF5A9DF7A76B90 SWAP2 LOG2 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xF39E6E1EB0EDCF53C221607B54B00CD28F3196FED0A24994DC308B8F611B682D SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x127D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF AND PUSH2 0x12A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP5 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x12C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12D1 DUP6 PUSH2 0xAB3 JUMP JUMPDEST ISZERO PUSH2 0x10B3 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SLOAD DUP2 DUP4 ADD SLOAD PUSH1 0x2 DUP1 DUP6 ADD DUP1 SLOAD DUP9 MLOAD PUSH1 0x1F PUSH1 0x0 NOT SWAP8 DUP4 AND ISZERO PUSH2 0x100 MUL SWAP8 SWAP1 SWAP8 ADD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 DIV SWAP5 DUP6 ADD DUP8 SWAP1 DIV DUP8 MUL DUP3 ADD DUP8 ADD SWAP1 SWAP8 MSTORE DUP4 DUP2 MSTORE SWAP4 SWAP6 PUSH2 0x13A3 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP5 SWAP2 SWAP4 SWAP3 DUP4 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1399 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x136E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1399 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x137C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x14F9 JUMP JUMPDEST ISZERO PUSH2 0x13D8 JUMPI PUSH1 0x40 MLOAD DUP7 SWAP1 PUSH32 0x33E13ECB54C3076D8E8BB8C2881800A4D972B792045FFAE98FDF46DF365FED75 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0x1410 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 SWAP1 PUSH32 0x526441BB6C1ABA3C9A4A6CA1D6545DA9C2333C8C48343EF398EB858D72B79236 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP10 DUP2 MSTORE DUP4 DUP6 ADD DUP10 DUP2 MSTORE PUSH1 0x0 PUSH1 0x60 DUP7 ADD DUP2 SWAP1 MSTORE DUP8 DUP2 MSTORE DUP1 DUP5 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP5 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP4 SSTORE MLOAD PUSH1 0x1 DUP4 ADD SSTORE SWAP3 MLOAD DUP1 MLOAD SWAP5 SWAP7 POP SWAP2 SWAP4 SWAP1 SWAP3 PUSH2 0x14A1 SWAP3 PUSH1 0x2 DUP6 ADD SWAP3 SWAP2 ADD SWAP1 PUSH2 0x1545 JUMP JUMPDEST POP PUSH1 0x60 SWAP2 SWAP1 SWAP2 ADD MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH32 0xC0BA8FE4B176C1714197D43B9CC6BCF797A4A7461C5FE8D0EF6E184AE7601E51 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 DUP3 DUP8 DUP4 DUP11 DUP13 PUSH2 0x8796 GAS SUB CALL SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x1540 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x1540 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x15C3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1586 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x15B3 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x15B3 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x15B3 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1598 JUMP JUMPDEST POP PUSH2 0x15BF SWAP3 SWAP2 POP PUSH2 0x15C3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xCCB SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x15BF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x15C9 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEB MSTORE8 DUP3 ADDRESS CHAINID SWAP2 0xD3 SUB 0xAF GASLIMIT 0xAC 0xB8 0xB3 0x2A 0xC7 0x22 0xD0 GT 0xA7 0xD 0x2C LOG2 MLOAD PUSH26 0x11CA8D1356B48AEA64736F6C6343000511003200000000000000 ",
"sourceMap": "202:11444:0:-;;;2569:302;8:9:-1;5:2;;;30:1;27;20:12;5:2;2569:302:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2569:302:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;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;373:25;;-1:-1;2569:302:0;;421:4:-1;412:14;;;;2569:302:0;;;;;412:14:-1;2569:302:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;2569:302:0;;;;;;-1:-1:-1;2569:302:0;;;2650:14;;2569:302;;-1:-1:-1;2650:14:0;-1:-1:-1;2569:302:0;810:2;2072:29;;;;;:56;;;2118:10;2105:9;:23;;2072:56;:74;;;;-1:-1:-1;2132:14:0;;;2072:74;:93;;;;-1:-1:-1;2150:15:0;;;2072:93;2064:102;;;;;;2686:9;2681:143;2705:7;:14;2701:1;:18;2681:143;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2740:19:0;;;;;;;;;;;-1:-1:-1;2740:19:0;;;;2739:20;:48;;;;;2785:1;-1:-1:-1;;;;;2763:24:0;:7;2771:1;2763:10;;;;;;;;;;;;;;-1:-1:-1;;;;;2763:24:0;;;2739:48;2731:57;;;;;;2815:4;2793:7;:19;2801:7;2809:1;2801:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2793:19:0;;;;;;;;;;;-1:-1:-1;2793:19:0;:26;;-1:-1:-1;;2793:26:0;;;;;;;;;;-1:-1:-1;2721:3:0;2681:143;;;-1:-1:-1;2827:16:0;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;;;2847:8:0;:20;-1:-1:-1;202:11444:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;202:11444:0;-1:-1:-1;;;;;202:11444:0;;;;;;;;;;;-1:-1:-1;202:11444:0;;;;;;;-1:-1:-1;202:11444:0;;;-1:-1:-1;202:11444:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;202:11444:0;;;;;;;;;:::o;:::-;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "60806040526004361061012a5760003560e01c8063a0e67e2b116100ab578063c01a8c841161006f578063c01a8c8414610534578063c64274741461055e578063d74f8edd14610626578063dc8452cd1461063b578063e20056e614610650578063ee22610b1461068b5761012a565b8063a0e67e2b14610426578063a8abe69a1461048b578063b5dc40c3146104cb578063b77bf600146104f5578063ba51a6df1461050a5761012a565b806354741525116100f2578063547415251461028c5780637065cb48146102d2578063784547a7146103055780638b51d13f1461032f5780639ace38c2146103595761012a565b8063025e7c2714610169578063173825d9146101af57806320ea8d86146101e25780632f54bf6e1461020c5780633411c81c14610253575b34156101675760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561017557600080fd5b506101936004803603602081101561018c57600080fd5b50356106b5565b604080516001600160a01b039092168252519081900360200190f35b3480156101bb57600080fd5b50610167600480360360208110156101d257600080fd5b50356001600160a01b03166106dc565b3480156101ee57600080fd5b506101676004803603602081101561020557600080fd5b5035610848565b34801561021857600080fd5b5061023f6004803603602081101561022f57600080fd5b50356001600160a01b03166108fe565b604080519115158252519081900360200190f35b34801561025f57600080fd5b5061023f6004803603604081101561027657600080fd5b50803590602001356001600160a01b0316610913565b34801561029857600080fd5b506102c0600480360360408110156102af57600080fd5b508035151590602001351515610933565b60408051918252519081900360200190f35b3480156102de57600080fd5b50610167600480360360208110156102f557600080fd5b50356001600160a01b031661099f565b34801561031157600080fd5b5061023f6004803603602081101561032857600080fd5b5035610ab3565b34801561033b57600080fd5b506102c06004803603602081101561035257600080fd5b5035610b3e565b34801561036557600080fd5b506103836004803603602081101561037c57600080fd5b5035610bad565b60405180856001600160a01b03166001600160a01b031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156103e85781810151838201526020016103d0565b50505050905090810190601f1680156104155780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561043257600080fd5b5061043b610c6b565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047757818101518382015260200161045f565b505050509050019250505060405180910390f35b34801561049757600080fd5b5061043b600480360360808110156104ae57600080fd5b508035906020810135906040810135151590606001351515610cce565b3480156104d757600080fd5b5061043b600480360360208110156104ee57600080fd5b5035610df9565b34801561050157600080fd5b506102c0610f70565b34801561051657600080fd5b506101676004803603602081101561052d57600080fd5b5035610f76565b34801561054057600080fd5b506101676004803603602081101561055757600080fd5b5035610ff3565b34801561056a57600080fd5b506102c06004803603606081101561058157600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156105b157600080fd5b8201836020820111156105c357600080fd5b803590602001918460018302840111640100000000831117156105e557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110ba945050505050565b34801561063257600080fd5b506102c06110d9565b34801561064757600080fd5b506102c06110de565b34801561065c57600080fd5b506101676004803603604081101561067357600080fd5b506001600160a01b03813581169160200135166110e4565b34801561069757600080fd5b50610167600480360360208110156106ae57600080fd5b5035611261565b600381815481106106c257fe5b6000918252602090912001546001600160a01b0316905081565b3330146106e857600080fd5b6001600160a01b038116600090815260026020526040902054819060ff1661070f57600080fd5b6001600160a01b0382166000908152600260205260408120805460ff191690555b600354600019018110156107e357826001600160a01b03166003828154811061075557fe5b6000918252602090912001546001600160a01b031614156107db5760038054600019810190811061078257fe5b600091825260209091200154600380546001600160a01b0390921691839081106107a857fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506107e3565b600101610730565b506003805460001901906107f7908261151c565b5060035460045411156108105760035461081090610f76565b6040516001600160a01b038316907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25050565b3360008181526002602052604090205460ff1661086457600080fd5b60008281526001602090815260408083203380855292529091205483919060ff1661088e57600080fd5b600084815260208190526040902060030154849060ff16156108af57600080fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b60055481101561099857838015610960575060008181526020819052604090206003015460ff16155b806109845750828015610984575060008181526020819052604090206003015460ff165b15610990576001820191505b600101610937565b5092915050565b3330146109ab57600080fd5b6001600160a01b038116600090815260026020526040902054819060ff16156109d357600080fd5b816001600160a01b0381166109e757600080fd5b60038054905060010160045460328211158015610a045750818111155b8015610a0f57508015155b8015610a1a57508115155b610a2357600080fd5b6001600160a01b038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b600354811015610b325760008481526001602052604081206003805491929184908110610ae157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615610b15576001820191505b600454821415610b2a57600192505050610b39565b600101610ab8565b5060009150505b919050565b6000805b600354811015610ba75760008381526001602052604081206003805491929184908110610b6b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615610b9f576001820191505b600101610b42565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f81018890048802840188019096528583526001600160a01b0390931695909491929190830182828015610c585780601f10610c2d57610100808354040283529160200191610c58565b820191906000526020600020905b815481529060010190602001808311610c3b57829003601f168201915b5050506003909301549192505060ff1684565b60606003805480602002602001604051908101604052809291908181526020018280548015610cc357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ca5575b505050505090505b90565b606080600554604051908082528060200260200182016040528015610cfd578160200160208202803883390190505b5090506000805b600554811015610d7e57858015610d2d575060008181526020819052604090206003015460ff16155b80610d515750848015610d51575060008181526020819052604090206003015460ff165b15610d765780838381518110610d6357fe5b6020026020010181815250506001820191505b600101610d04565b878703604051908082528060200260200182016040528015610daa578160200160208202803883390190505b5093508790505b86811015610dee57828181518110610dc557fe5b60200260200101518489830381518110610ddb57fe5b6020908102919091010152600101610db1565b505050949350505050565b606080600380549050604051908082528060200260200182016040528015610e2b578160200160208202803883390190505b5090506000805b600354811015610eee5760008581526001602052604081206003805491929184908110610e5b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615610ee65760038181548110610e9557fe5b9060005260206000200160009054906101000a90046001600160a01b0316838381518110610ebf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001820191505b600101610e32565b81604051908082528060200260200182016040528015610f18578160200160208202803883390190505b509350600090505b81811015610f6857828181518110610f3457fe5b6020026020010151848281518110610f4857fe5b6001600160a01b0390921660209283029190910190910152600101610f20565b505050919050565b60055481565b333014610f8257600080fd5b6003548160328211801590610f975750818111155b8015610fa257508015155b8015610fad57508115155b610fb657600080fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b3360008181526002602052604090205460ff1661100f57600080fd5b60008281526020819052604090205482906001600160a01b031661103257600080fd5b60008381526001602090815260408083203380855292529091205484919060ff161561105d57600080fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a36110b385611261565b5050505050565b60006110c7848484611418565b90506110d281610ff3565b9392505050565b603281565b60045481565b3330146110f057600080fd5b6001600160a01b038216600090815260026020526040902054829060ff1661111757600080fd5b6001600160a01b038216600090815260026020526040902054829060ff161561113f57600080fd5b60005b6003548110156111c757846001600160a01b03166003828154811061116357fe5b6000918252602090912001546001600160a01b031614156111bf57836003828154811061118c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506111c7565b600101611142565b506001600160a01b03808516600081815260026020526040808220805460ff1990811690915593871682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a26040516001600160a01b038416907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a250505050565b3360008181526002602052604090205460ff1661127d57600080fd5b60008281526001602090815260408083203380855292529091205483919060ff166112a757600080fd5b600084815260208190526040902060030154849060ff16156112c857600080fd5b6112d185610ab3565b156110b3576000858152602081815260409182902060038101805460ff19166001908117909155815481830154600280850180548851601f6000199783161561010002979097019091169290920494850187900487028201870190975283815293956113a3956001600160a01b039093169491939283908301828280156113995780601f1061136e57610100808354040283529160200191611399565b820191906000526020600020905b81548152906001019060200180831161137c57829003601f168201915b50505050506114f9565b156113d85760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2611410565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038101805460ff191690555b505050505050565b6000836001600160a01b03811661142e57600080fd5b600554604080516080810182526001600160a01b038881168252602080830189815283850189815260006060860181905287815280845295909520845181546001600160a01b031916941693909317835551600183015592518051949650919390926114a1926002850192910190611545565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b815481835581811115611540576000838152602090206115409181019083016115c3565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061158657805160ff19168380011785556115b3565b828001600101855582156115b3579182015b828111156115b3578251825591602001919060010190611598565b506115bf9291506115c3565b5090565b610ccb91905b808211156115bf57600081556001016115c956fea265627a7a72315820eb5382304691d303af45acb8b32ac722d011a70d2ca2517911ca8d1356b48aea64736f6c63430005110032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0E67E2B GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xC01A8C84 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xC01A8C84 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xC6427474 EQ PUSH2 0x55E JUMPI DUP1 PUSH4 0xD74F8EDD EQ PUSH2 0x626 JUMPI DUP1 PUSH4 0xDC8452CD EQ PUSH2 0x63B JUMPI DUP1 PUSH4 0xE20056E6 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0xEE22610B EQ PUSH2 0x68B JUMPI PUSH2 0x12A JUMP JUMPDEST DUP1 PUSH4 0xA0E67E2B EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0xA8ABE69A EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0xB5DC40C3 EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0xB77BF600 EQ PUSH2 0x4F5 JUMPI DUP1 PUSH4 0xBA51A6DF EQ PUSH2 0x50A JUMPI PUSH2 0x12A JUMP JUMPDEST DUP1 PUSH4 0x54741525 GT PUSH2 0xF2 JUMPI DUP1 PUSH4 0x54741525 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x7065CB48 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x784547A7 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x8B51D13F EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x9ACE38C2 EQ PUSH2 0x359 JUMPI PUSH2 0x12A JUMP JUMPDEST DUP1 PUSH4 0x25E7C27 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x173825D9 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0x20EA8D86 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x2F54BF6E EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x3411C81C EQ PUSH2 0x253 JUMPI JUMPDEST CALLVALUE ISZERO PUSH2 0x167 JUMPI PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x848 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x913 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x933 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x99F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x383 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3E8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x415 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43B PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x477 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x45F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x60 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xCCE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xDF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH2 0xF70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xF76 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x581 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x10BA SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH2 0x10D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C0 PUSH2 0x10DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x10E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x697 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1261 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x6C2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x70F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 NOT ADD DUP2 LT ISZERO PUSH2 0x7E3 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x755 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x7DB JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x782 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x7A8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x7E3 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x730 JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 PUSH2 0x7F7 SWAP1 DUP3 PUSH2 0x151C JUMP JUMPDEST POP PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD GT ISZERO PUSH2 0x810 JUMPI PUSH1 0x3 SLOAD PUSH2 0x810 SWAP1 PUSH2 0xF76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x8001553A916EF2F495D26A907CC54D96ED840D7BDA71E73194BF5A9DF7A76B90 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF AND PUSH2 0x88E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP5 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD DUP8 SWAP3 PUSH32 0xF6A317157440607F36269043EB55F1287A5A19BA2216AFEAB88CD46CBCFB88E9 SWAP2 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0x998 JUMPI DUP4 DUP1 ISZERO PUSH2 0x960 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0x984 JUMPI POP DUP3 DUP1 ISZERO PUSH2 0x984 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x990 JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x937 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x9AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH1 0x1 ADD PUSH1 0x4 SLOAD PUSH1 0x32 DUP3 GT ISZERO DUP1 ISZERO PUSH2 0xA04 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xA0F JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xA1A JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH2 0xA23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE DUP4 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD PUSH32 0xF39E6E1EB0EDCF53C221607B54B00CD28F3196FED0A24994DC308B8F611B682D SWAP2 SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xB32 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP1 SLOAD SWAP2 SWAP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0xAE1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB15 JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x4 SLOAD DUP3 EQ ISZERO PUSH2 0xB2A JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0xB39 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xAB8 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xBA7 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP1 SLOAD SWAP2 SWAP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0xB6B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB9F JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB42 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP4 ADD SLOAD PUSH1 0x2 DUP1 DUP6 ADD DUP1 SLOAD DUP8 MLOAD PUSH2 0x100 SWAP6 DUP3 AND ISZERO SWAP6 SWAP1 SWAP6 MUL PUSH1 0x0 NOT ADD AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP9 SWAP1 DIV DUP9 MUL DUP5 ADD DUP9 ADD SWAP1 SWAP7 MSTORE DUP6 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP6 SWAP1 SWAP5 SWAP2 SWAP3 SWAP2 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xC58 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC2D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC58 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC3B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 POP POP PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCA5 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xCFD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0xD7E JUMPI DUP6 DUP1 ISZERO PUSH2 0xD2D JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0xD51 JUMPI POP DUP5 DUP1 ISZERO PUSH2 0xD51 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0xD76 JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD63 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD04 JUMP JUMPDEST DUP8 DUP8 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xDAA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP8 SWAP1 POP JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xDEE JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xDC5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP10 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0xDDB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xDB1 JUMP JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE2B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xEEE JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP1 SLOAD SWAP2 SWAP3 SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0xE5B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xEE6 JUMPI PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xE95 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEBF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH1 0x1 DUP3 ADD SWAP2 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xE32 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF18 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF68 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xF34 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF48 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF20 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xF82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD DUP2 PUSH1 0x32 DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0xF97 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xFA2 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xFAD JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xA3F1EE9126A074D9326C682F561767F710E927FAA811F7A99829D49DC421797A SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x100F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1032 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP5 SWAP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x105D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 CALLER DUP1 DUP7 MSTORE SWAP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE SWAP1 MLOAD DUP8 SWAP3 PUSH32 0x4A504A94899432A9846E1AA406DCEB1BCFD538BB839071D49D1E5E23F5BE30EF SWAP2 LOG3 PUSH2 0x10B3 DUP6 PUSH2 0x1261 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C7 DUP5 DUP5 DUP5 PUSH2 0x1418 JUMP JUMPDEST SWAP1 POP PUSH2 0x10D2 DUP2 PUSH2 0xFF3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x32 DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH1 0xFF AND PUSH2 0x1117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x113F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0x11C7 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1163 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x11BF JUMPI DUP4 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x118C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x11C7 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1142 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE SWAP4 DUP8 AND DUP3 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD SWAP1 SWAP5 AND PUSH1 0x1 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 PUSH32 0x8001553A916EF2F495D26A907CC54D96ED840D7BDA71E73194BF5A9DF7A76B90 SWAP2 LOG2 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xF39E6E1EB0EDCF53C221607B54B00CD28F3196FED0A24994DC308B8F611B682D SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x127D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0xFF AND PUSH2 0x12A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP5 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x12C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12D1 DUP6 PUSH2 0xAB3 JUMP JUMPDEST ISZERO PUSH2 0x10B3 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SLOAD DUP2 DUP4 ADD SLOAD PUSH1 0x2 DUP1 DUP6 ADD DUP1 SLOAD DUP9 MLOAD PUSH1 0x1F PUSH1 0x0 NOT SWAP8 DUP4 AND ISZERO PUSH2 0x100 MUL SWAP8 SWAP1 SWAP8 ADD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 DIV SWAP5 DUP6 ADD DUP8 SWAP1 DIV DUP8 MUL DUP3 ADD DUP8 ADD SWAP1 SWAP8 MSTORE DUP4 DUP2 MSTORE SWAP4 SWAP6 PUSH2 0x13A3 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP5 SWAP2 SWAP4 SWAP3 DUP4 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1399 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x136E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1399 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x137C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP PUSH2 0x14F9 JUMP JUMPDEST ISZERO PUSH2 0x13D8 JUMPI PUSH1 0x40 MLOAD DUP7 SWAP1 PUSH32 0x33E13ECB54C3076D8E8BB8C2881800A4D972B792045FFAE98FDF46DF365FED75 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0x1410 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 SWAP1 PUSH32 0x526441BB6C1ABA3C9A4A6CA1D6545DA9C2333C8C48343EF398EB858D72B79236 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x142E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP10 DUP2 MSTORE DUP4 DUP6 ADD DUP10 DUP2 MSTORE PUSH1 0x0 PUSH1 0x60 DUP7 ADD DUP2 SWAP1 MSTORE DUP8 DUP2 MSTORE DUP1 DUP5 MSTORE SWAP6 SWAP1 SWAP6 KECCAK256 DUP5 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP4 SSTORE MLOAD PUSH1 0x1 DUP4 ADD SSTORE SWAP3 MLOAD DUP1 MLOAD SWAP5 SWAP7 POP SWAP2 SWAP4 SWAP1 SWAP3 PUSH2 0x14A1 SWAP3 PUSH1 0x2 DUP6 ADD SWAP3 SWAP2 ADD SWAP1 PUSH2 0x1545 JUMP JUMPDEST POP PUSH1 0x60 SWAP2 SWAP1 SWAP2 ADD MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH32 0xC0BA8FE4B176C1714197D43B9CC6BCF797A4A7461C5FE8D0EF6E184AE7601E51 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 DUP3 DUP8 DUP4 DUP11 DUP13 PUSH2 0x8796 GAS SUB CALL SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x1540 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x1540 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x15C3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1586 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x15B3 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x15B3 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x15B3 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1598 JUMP JUMPDEST POP PUSH2 0x15BF SWAP3 SWAP2 POP PUSH2 0x15C3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xCCB SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x15BF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x15C9 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEB MSTORE8 DUP3 ADDRESS CHAINID SWAP2 0xD3 SUB 0xAF GASLIMIT 0xAC 0xB8 0xB3 0x2A 0xC7 0x22 0xD0 GT 0xA7 0xD 0x2C LOG2 MLOAD PUSH26 0x11CA8D1356B48AEA64736F6C6343000511003200000000000000 ",
"sourceMap": "202:11444:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2270:9;:13;2266:54;;2290:30;;;2310:9;2290:30;;;;2298:10;;2290:30;;;;;;;;;;2266:54;202:11444;1002:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1002:23:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1002:23:0;;:::i;:::-;;;;-1:-1:-1;;;;;1002:23:0;;;;;;;;;;;;;;3357:357;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3357:357:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3357:357:0;-1:-1:-1;;;;;3357:357:0;;:::i;5668:257::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5668:257:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5668:257:0;;:::i;960:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:39:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;960:39:0;-1:-1:-1;;;;;960:39:0;;:::i;:::-;;;;;;;;;;;;;;;;;;892:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;892:65:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;892:65:0;;;;;;-1:-1:-1;;;;;892:65:0;;:::i;9655:248::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9655:248:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9655:248:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3002:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3002:228:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3002:228:0;-1:-1:-1;;;;;3002:228:0;;:::i;8050:264::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8050:264:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8050:264:0;;:::i;9201:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9201:196:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9201:196:0;;:::i;838:51::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:51:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;838:51:0;;:::i;:::-;;;;;-1:-1:-1;;;;;838:51:0;-1:-1:-1;;;;;838:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;838:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9991:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9991:81:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9991:81:0;;;;;;;;;;;;;;;;;11070:574;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11070:574:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;11070:574:0;;;;;;;;;;;;;;;;;;;;;:::i;10251:474::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10251:474:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10251:474:0;;:::i;1054:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1054:31:0;;;:::i;4464:172::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4464:172:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4464:172:0;;:::i;5236:304::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5236:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5236:304:0;;:::i;4895:231::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4895:231:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;4895:231:0;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4895:231:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4895:231:0;;;;;;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;4895:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4895:231:0;;-1:-1:-1;4895:231:0;;-1:-1:-1;;;;;4895:231:0:i;768:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;768:44:0;;;:::i;1028:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1028:23:0;;;:::i;3926:355::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3926:355:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3926:355:0;;;;;;;;;;:::i;6043:472::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6043:472:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6043:472:0;;:::i;1002:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1002:23:0;;-1:-1:-1;1002:23:0;:::o;3357:357::-;1244:10;1266:4;1244:27;1236:36;;;;;;-1:-1:-1;;;;;1414:14:0;;;;;;:7;:14;;;;;;3423:5;;1414:14;;1406:23;;;;;;-1:-1:-1;;;;;3434:14:0;;3451:5;3434:14;;;:7;:14;;;;;:22;;-1:-1:-1;;3434:22:0;;;3460:135;3484:6;:13;-1:-1:-1;;3484:17:0;3480:21;;3460:135;;;3528:5;-1:-1:-1;;;;;3515:18:0;:6;3522:1;3515:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3515:9:0;:18;3511:84;;;3553:6;3560:13;;-1:-1:-1;;3560:17:0;;;3553:25;;;;;;;;;;;;;;;;3541:6;:9;;-1:-1:-1;;;;;3553:25:0;;;;3548:1;;3541:9;;;;;;;;;;;;;;:37;;;;;-1:-1:-1;;;;;3541:37:0;;;;;-1:-1:-1;;;;;3541:37:0;;;;;;3584:5;;3511:84;3503:3;;3460:135;;;-1:-1:-1;3598:6:0;:18;;-1:-1:-1;;3598:18:0;;;;;;:::i;:::-;-1:-1:-1;3635:6:0;:13;3624:8;;:24;3620:62;;;3668:6;:13;3650:32;;:17;:32::i;:::-;3691:19;;-1:-1:-1;;;;;3691:19:0;;;;;;;;1276:1;3357:357;:::o;5668:257::-;5742:10;1414:14;;;;:7;:14;;;;;;;;1406:23;;;;;;1638:28;;;;:13;:28;;;;;;;;5781:10;1638:35;;;;;;;;;5766:13;;5781:10;1638:35;;1630:44;;;;;;1864:12;:27;;;;;;;;;;:36;;;5807:13;;1864:36;;1863:37;1855:46;;;;;;5870:5;5827:28;;;:13;:28;;;;;;;;5856:10;5827:40;;;;;;;;:48;;-1:-1:-1;;5827:48:0;;;5884:37;5841:13;;5884:37;;;1678:1;1433;;5668:257;;:::o;960:39::-;;;;;;;;;;;;;;;:::o;892:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9655:248::-;9734:13;;9753:146;9777:16;;9773:1;:20;9753:146;;;9808:7;:36;;;;-1:-1:-1;9820:12:0;:15;;;;;;;;;;:24;;;;;9819:25;9808:36;9807:80;;;;9850:8;:36;;;;-1:-1:-1;9862:12:0;:15;;;;;;;;;;:24;;;;;9850:36;9803:96;;;9898:1;9889:10;;;;9803:96;9795:3;;9753:146;;;;9655:248;;;;:::o;3002:228::-;1244:10;1266:4;1244:27;1236:36;;;;;;-1:-1:-1;;;;;1339:14:0;;;;;;:7;:14;;;;;;3077:5;;1339:14;;1338:15;1330:24;;;;;;3094:5;-1:-1:-1;;;;;1960:22:0;;1952:31;;;;;;3120:6;:13;;;;3136:1;3120:17;3139:8;;810:2;2072:10;:29;;:56;;;;;2118:10;2105:9;:23;;2072:56;:74;;;;-1:-1:-1;2132:14:0;;;2072:74;:93;;;;-1:-1:-1;2150:15:0;;;2072:93;2064:102;;;;;;-1:-1:-1;;;;;3154:14:0;;;;;;:7;:14;;;;;;:21;;-1:-1:-1;;3154:21:0;3171:4;3154:21;;;;;;3179:6;27:10:-1;;23:18;;;45:23;;3179:18:0;;;;;;-1:-1:-1;;;;;;3179:18:0;;;;;3206:20;;;3154:14;3206:20;1987:1;;1358;1276;3002:228;:::o;8050:264::-;8115:4;;;8146:148;8170:6;:13;8166:17;;8146:148;;;8199:28;;;;:13;:28;;;;;8228:6;:9;;8199:28;;;8235:1;;8228:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8228:9:0;8199:39;;;;;;;;;;;;;;;8195:55;;;8249:1;8240:10;;;;8195:55;8268:8;;8259:5;:17;8255:34;;;8285:4;8278:11;;;;;;8255:34;8185:3;;8146:148;;;;8305:5;8298:12;;;8050:264;;;;:::o;9201:196::-;9275:13;;9294:99;9318:6;:13;9314:17;;9294:99;;;9342:28;;;;:13;:28;;;;;9371:6;:9;;9342:28;;;9378:1;;9371:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9371:9:0;9342:39;;;;;;;;;;;;;;;9338:55;;;9392:1;9383:10;;;;9338:55;9333:3;;9294:99;;;;9201:196;;;:::o;838:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;838:51:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;838:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;838:51:0;;;;;;;-1:-1:-1;;838:51:0;;;:::o;9991:81::-;10033:16;10062:6;10055:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10055:13:0;;;;;;;;;;;;;;;;;;;;;;;9991:81;;:::o;11070:574::-;11184:32;11222:35;11274:16;;11260:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;11260:31:0;-1:-1:-1;11222:69:0;-1:-1:-1;11295:13:0;;11329:185;11345:16;;11341:1;:20;11329:185;;;11376:7;:36;;;;-1:-1:-1;11388:12:0;:15;;;;;;;;;;:24;;;;;11387:25;11376:36;11375:80;;;;11418:8;:36;;;;-1:-1:-1;11430:12:0;:15;;;;;;;;;;:24;;;;;11418:36;11371:143;;;11491:1;11463:18;11482:5;11463:25;;;;;;;;;;;;;:29;;;;;11507:1;11498:10;;;;11371:143;11363:3;;11329:185;;;11554:4;11549:2;:9;11535:24;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;11535:24:0;;11517:42;;11572:4;11568:8;;11563:77;11582:2;11578:1;:6;11563:77;;;11619:18;11638:1;11619:21;;;;;;;;;;;;;;11591:15;11611:4;11607:1;:8;11591:25;;;;;;;;;;;;;;;;;:49;11586:3;;11563:77;;;11070:574;;;;;;;;;:::o;10251:474::-;10321:31;10358:34;10409:6;:13;;;;10395:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10395:28:0;-1:-1:-1;10358:65:0;-1:-1:-1;10427:13:0;;10461:148;10477:6;:13;10473:17;;10461:148;;;10504:28;;;;:13;:28;;;;;10533:6;:9;;10504:28;;;10540:1;;10533:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10533:9:0;10504:39;;;;;;;;;;;;;;;10500:109;;;10578:6;10585:1;10578:9;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10578:9:0;10551:17;10569:5;10551:24;;;;;;;;;;;;;:36;-1:-1:-1;;;;;10551:36:0;;;-1:-1:-1;;;;;10551:36:0;;;;;10602:1;10593:10;;;;10500:109;10492:3;;10461:148;;;10643:5;10629:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10629:20:0;;10612:37;;10662:1;10658:5;;10653:68;10669:5;10665:1;:9;10653:68;;;10701:17;10719:1;10701:20;;;;;;;;;;;;;;10681:14;10696:1;10681:17;;;;;;;;-1:-1:-1;;;;;10681:40:0;;;:17;;;;;;;;;;;:40;10676:3;;10653:68;;;10251:474;;;;;;:::o;1054:31::-;;;;:::o;4464:172::-;1244:10;1266:4;1244:27;1236:36;;;;;;4545:6;:13;4560:9;810:2;2072:29;;;;;:56;;;2118:10;2105:9;:23;;2072:56;:74;;;;-1:-1:-1;2132:14:0;;;2072:74;:93;;;;-1:-1:-1;2150:15:0;;;2072:93;2064:102;;;;;;4575:8;:20;;;4604:28;;;;;;;;;;;;;;;;;1276:1;;4464:172;:::o;5236:304::-;5310:10;1414:14;;;;:7;:14;;;;;;;;1406:23;;;;;;1554:1;1503:27;;;;;;;;;;:39;5342:13;;-1:-1:-1;;;;;1503:39:0;1495:62;;;;;;1759:28;;;;:13;:28;;;;;;;;5387:10;1759:35;;;;;;;;;5372:13;;5387:10;1759:35;;1758:36;1750:45;;;;;;5404:28;;;;5447:4;5404:28;;;;;;;;5433:10;5404:40;;;;;;;;:47;;-1:-1:-1;;5404:47:0;;;;;;;5460:39;;5418:13;;5460:39;;;5503:33;5522:13;5503:18;:33::i;:::-;1561:1;;1433;5236:304;;:::o;4895:231::-;5002:21;5045:40;5060:11;5073:5;5080:4;5045:14;:40::i;:::-;5029:56;;5089:33;5108:13;5089:18;:33::i;:::-;4895:231;;;;;:::o;768:44::-;810:2;768:44;:::o;1028:23::-;;;;:::o;3926:355::-;1244:10;1266:4;1244:27;1236:36;;;;;;-1:-1:-1;;;;;1414:14:0;;;;;;:7;:14;;;;;;4011:5;;1414:14;;1406:23;;;;;;-1:-1:-1;;;;;1339:14:0;;;;;;:7;:14;;;;;;4036:8;;1339:14;;1338:15;1330:24;;;;;;4055:9;4050:114;4074:6;:13;4070:17;;4050:114;;;4114:5;-1:-1:-1;;;;;4101:18:0;:6;4108:1;4101:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4101:9:0;:18;4097:67;;;4139:8;4127:6;4134:1;4127:9;;;;;;;;;;;;;;;;:20;;;;;-1:-1:-1;;;;;4127:20:0;;;;;-1:-1:-1;;;;;4127:20:0;;;;;;4153:5;;4097:67;4089:3;;4050:114;;;-1:-1:-1;;;;;;4167:14:0;;;4184:5;4167:14;;;:7;:14;;;;;;:22;;-1:-1:-1;;4167:22:0;;;;;;4193:17;;;;;;;;:24;;;;;4167:22;4193:24;;;;4226:19;;4167:14;;4226:19;;;4254:23;;-1:-1:-1;;;;;4254:23:0;;;;;;;;1433:1;1276;3926:355;;:::o;6043:472::-;6117:10;1414:14;;;;:7;:14;;;;;;;;1406:23;;;;;;1638:28;;;;:13;:28;;;;;;;;6156:10;1638:35;;;;;;;;;6141:13;;6156:10;1638:35;;1630:44;;;;;;1864:12;:27;;;;;;;;;;:36;;;6182:13;;1864:36;;1863:37;1855:46;;;;;;6206:26;6218:13;6206:11;:26::i;:::-;6202:310;;;6239:23;6265:27;;;;;;;;;;;;6297:12;;;:19;;-1:-1:-1;;6297:19:0;6312:4;6297:19;;;;;;6339:15;;6356:9;;;;6367:8;;;;:15;;6325:68;;;-1:-1:-1;;6367:15:0;;;;6297:19;6367:15;;;;;;;;;;;;6325:68;;;;;;;;;;;;;;;;;;6265:27;;6325:68;;-1:-1:-1;;;;;6339:15:0;;;;6356:9;;6367:15;;;6325:68;;6367:8;:15;6325:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:68::i;:::-;6321:187;;;6400:24;;6410:13;;6400:24;;;;;6321:187;;;6445:31;;6462:13;;6445:31;;;;;6482:12;;;:20;;-1:-1:-1;;6482:20:0;;;6321:187;6202:310;1678:1;1433;;6043:472;;:::o;8645:367::-;8772:21;8750:11;-1:-1:-1;;;;;1960:22:0;;1952:31;;;;;;8815:16;;8865:84;;;;;;;;-1:-1:-1;;;;;8865:84:0;;;;;;;;;;;;;;;;;;-1:-1:-1;8865:84:0;;;;;;8835:27;;;;;;;;;;:114;;;;-1:-1:-1;;;;;;8835:114:0;;;;;;;;;;-1:-1:-1;8835:114:0;;;;;;;8815:16;;-1:-1:-1;8865:84:0;;8835:27;;:114;;;;;;;;;;:::i;:::-;-1:-1:-1;8835:114:0;;;;;;;;;;;;-1:-1:-1;;8835:114:0;;;;;;;;;;8953:16;:21;;-1:-1:-1;8953:21:0;;;8983:25;;8994:13;;8983:25;;-1:-1:-1;;8983:25:0;8645:367;;;;;;:::o;7002:897::-;7129:4;7139:11;7183:4;7177:11;7306:2;7300:4;7296:13;7812:1;7805;7715:10;7708:1;7697:5;7680:11;7408:5;7403:3;7399:15;7389:486;7379:496;7002:897;-1:-1:-1;;;;;;;;7002:897:0:o;202:11444::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;202:11444:0;;;-1:-1:-1;202:11444:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;"
},
"methodIdentifiers": {
"MAX_OWNER_COUNT()": "d74f8edd",
"addOwner(address)": "7065cb48",
"changeRequirement(uint256)": "ba51a6df",
"confirmTransaction(uint256)": "c01a8c84",
"confirmations(uint256,address)": "3411c81c",
"executeTransaction(uint256)": "ee22610b",
"getConfirmationCount(uint256)": "8b51d13f",
"getConfirmations(uint256)": "b5dc40c3",
"getOwners()": "a0e67e2b",
"getTransactionCount(bool,bool)": "54741525",
"getTransactionIds(uint256,uint256,bool,bool)": "a8abe69a",
"isConfirmed(uint256)": "784547a7",
"isOwner(address)": "2f54bf6e",
"owners(uint256)": "025e7c27",
"removeOwner(address)": "173825d9",
"replaceOwner(address,address)": "e20056e6",
"required()": "dc8452cd",
"revokeConfirmation(uint256)": "20ea8d86",
"submitTransaction(address,uint256,bytes)": "c6427474",
"transactionCount()": "b77bf600",
"transactions(uint256)": "9ace38c2"
}
},
"userdoc": {
"methods": {
"addOwner(address)": {
"notice": "Allows to add a new owner. Transaction has to be sent by wallet."
},
"changeRequirement(uint256)": {
"notice": "Allows to change the number of required confirmations. Transaction has to be sent by wallet."
},
"confirmTransaction(uint256)": {
"notice": "Allows an owner to confirm a transaction."
},
"constructor": "Contract constructor sets initial owners and required number of confirmations.",
"executeTransaction(uint256)": {
"notice": "Allows anyone to execute a confirmed transaction."
},
"getConfirmationCount(uint256)": {
"notice": "Get the number of confirmations of a transaction."
},
"getConfirmations(uint256)": {
"notice": "Get the array with owner addresses, which confirmed transaction."
},
"getOwners()": {
"notice": "Get the list of owners."
},
"getTransactionCount(bool,bool)": {
"notice": "Get the total number of transactions after filers are applied."
},
"getTransactionIds(uint256,uint256,bool,bool)": {
"notice": "Get the list of transaction IDs in defined range."
},
"isConfirmed(uint256)": {
"notice": "Returns the confirmation status of a transaction."
},
"removeOwner(address)": {
"notice": "Allows to remove an owner. Transaction has to be sent by wallet."
},
"replaceOwner(address,address)": {
"notice": "Allows to replace an owner with a new owner. Transaction has to be sent by wallet."
},
"revokeConfirmation(uint256)": {
"notice": "Allows an owner to revoke a confirmation for a transaction."
},
"submitTransaction(address,uint256,bytes)": {
"notice": "Allows an owner to submit and confirm a transaction."
}
}
}
}
}
},
"sources": {
"contracts/multisig/MultiSigWallet.sol": {
"ast": {
"absolutePath": "contracts/multisig/MultiSigWallet.sol",
"exportedSymbols": {
"MultiSigWallet": [
1016
]
},
"id": 1017,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.5",
".17"
],
"nodeType": "PragmaDirective",
"src": "0:24:0"
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": "@title Multisignature wallet - Allows multiple parties to agree on\n transactions before execution.\n * @author Stefan George - <stefan.george@consensys.net>\n",
"fullyImplemented": true,
"id": 1016,
"linearizedBaseContracts": [
1016
],
"name": "MultiSigWallet",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"documentation": null,
"id": 7,
"name": "Confirmation",
"nodeType": "EventDefinition",
"parameters": {
"id": 6,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3,
"indexed": true,
"name": "sender",
"nodeType": "VariableDeclaration",
"scope": 7,
"src": "269:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "269:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 5,
"indexed": true,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 7,
"src": "293:29:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "293:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "268:55:0"
},
"src": "250:74:0"
},
{
"anonymous": false,
"documentation": null,
"id": 13,
"name": "Revocation",
"nodeType": "EventDefinition",
"parameters": {
"id": 12,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 9,
"indexed": true,
"name": "sender",
"nodeType": "VariableDeclaration",
"scope": 13,
"src": "343:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 8,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "343:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 11,
"indexed": true,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 13,
"src": "367:29:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "367:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "342:55:0"
},
"src": "326:72:0"
},
{
"anonymous": false,
"documentation": null,
"id": 17,
"name": "Submission",
"nodeType": "EventDefinition",
"parameters": {
"id": 16,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 15,
"indexed": true,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 17,
"src": "417:29:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 14,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "417:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "416:31:0"
},
"src": "400:48:0"
},
{
"anonymous": false,
"documentation": null,
"id": 21,
"name": "Execution",
"nodeType": "EventDefinition",
"parameters": {
"id": 20,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 19,
"indexed": true,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 21,
"src": "466:29:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 18,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "466:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "465:31:0"
},
"src": "450:47:0"
},
{
"anonymous": false,
"documentation": null,
"id": 25,
"name": "ExecutionFailure",
"nodeType": "EventDefinition",
"parameters": {
"id": 24,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 23,
"indexed": true,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 25,
"src": "522:29:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 22,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "522:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "521:31:0"
},
"src": "499:54:0"
},
{
"anonymous": false,
"documentation": null,
"id": 31,
"name": "Deposit",
"nodeType": "EventDefinition",
"parameters": {
"id": 30,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 27,
"indexed": true,
"name": "sender",
"nodeType": "VariableDeclaration",
"scope": 31,
"src": "569:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "569:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 29,
"indexed": false,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 31,
"src": "593:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 28,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "593:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "568:39:0"
},
"src": "555:53:0"
},
{
"anonymous": false,
"documentation": null,
"id": 35,
"name": "OwnerAddition",
"nodeType": "EventDefinition",
"parameters": {
"id": 34,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33,
"indexed": true,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 35,
"src": "630:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 32,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "630:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "629:23:0"
},
"src": "610:43:0"
},
{
"anonymous": false,
"documentation": null,
"id": 39,
"name": "OwnerRemoval",
"nodeType": "EventDefinition",
"parameters": {
"id": 38,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 37,
"indexed": true,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 39,
"src": "674:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 36,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "674:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "673:23:0"
},
"src": "655:42:0"
},
{
"anonymous": false,
"documentation": null,
"id": 43,
"name": "RequirementChange",
"nodeType": "EventDefinition",
"parameters": {
"id": 42,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 41,
"indexed": false,
"name": "required",
"nodeType": "VariableDeclaration",
"scope": 43,
"src": "723:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 40,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "723:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "722:18:0"
},
"src": "699:42:0"
},
{
"constant": true,
"id": 46,
"name": "MAX_OWNER_COUNT",
"nodeType": "VariableDeclaration",
"scope": 1016,
"src": "768:44:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 44,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "768:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"hexValue": "3530",
"id": 45,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "810:2:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_50_by_1",
"typeString": "int_const 50"
},
"value": "50"
},
"visibility": "public"
},
{
"constant": false,
"id": 50,
"name": "transactions",
"nodeType": "VariableDeclaration",
"scope": 1016,
"src": "838:51:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction)"
},
"typeName": {
"id": 49,
"keyType": {
"id": 47,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "846:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "838:31:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction)"
},
"valueType": {
"contractScope": null,
"id": 48,
"name": "Transaction",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 76,
"src": "857:11:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 56,
"name": "confirmations",
"nodeType": "VariableDeclaration",
"scope": 1016,
"src": "892:65:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
},
"typeName": {
"id": 55,
"keyType": {
"id": 51,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "900:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "892:44:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
},
"valueType": {
"id": 54,
"keyType": {
"id": 52,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "919:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "911:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 53,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "930:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 60,
"name": "isOwner",
"nodeType": "VariableDeclaration",
"scope": 1016,
"src": "960:39:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 59,
"keyType": {
"id": 57,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "968:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "960:24:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 58,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "979:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 63,
"name": "owners",
"nodeType": "VariableDeclaration",
"scope": 1016,
"src": "1002:23:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 61,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1002:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 62,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1002:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 65,
"name": "required",
"nodeType": "VariableDeclaration",
"scope": 1016,
"src": "1028:23:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 64,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1028:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 67,
"name": "transactionCount",
"nodeType": "VariableDeclaration",
"scope": 1016,
"src": "1054:31:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 66,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1054:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"canonicalName": "MultiSigWallet.Transaction",
"id": 76,
"members": [
{
"constant": false,
"id": 69,
"name": "destination",
"nodeType": "VariableDeclaration",
"scope": 76,
"src": "1112:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 68,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1112:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 71,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 76,
"src": "1135:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1135:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 73,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 76,
"src": "1152:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 72,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1152:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 75,
"name": "executed",
"nodeType": "VariableDeclaration",
"scope": 76,
"src": "1166:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 74,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1166:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Transaction",
"nodeType": "StructDefinition",
"scope": 1016,
"src": "1089:94:0",
"visibility": "public"
},
{
"body": {
"id": 88,
"nodeType": "Block",
"src": "1232:49:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"id": 84,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 79,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "1244:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 80,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1244:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 82,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1045,
"src": "1266:4:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_MultiSigWallet_$1016",
"typeString": "contract MultiSigWallet"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_MultiSigWallet_$1016",
"typeString": "contract MultiSigWallet"
}
],
"id": 81,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1258:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 83,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1258:13:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "1244:27:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 78,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "1236:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 85,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1236:36:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 86,
"nodeType": "ExpressionStatement",
"src": "1236:36:0"
},
{
"id": 87,
"nodeType": "PlaceholderStatement",
"src": "1276:1:0"
}
]
},
"documentation": null,
"id": 89,
"name": "onlyWallet",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 77,
"nodeType": "ParameterList",
"parameters": [],
"src": "1229:2:0"
},
"src": "1210:71:0",
"visibility": "internal"
},
{
"body": {
"id": 101,
"nodeType": "Block",
"src": "1326:37:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 97,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1338:15:0",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 94,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "1339:7:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 96,
"indexExpression": {
"argumentTypes": null,
"id": 95,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 91,
"src": "1347:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1339:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 93,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "1330:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 98,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1330:24:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 99,
"nodeType": "ExpressionStatement",
"src": "1330:24:0"
},
{
"id": 100,
"nodeType": "PlaceholderStatement",
"src": "1358:1:0"
}
]
},
"documentation": null,
"id": 102,
"name": "ownerDoesNotExist",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 92,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 91,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 102,
"src": "1311:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 90,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1311:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1310:15:0"
},
"src": "1284:79:0",
"visibility": "internal"
},
{
"body": {
"id": 113,
"nodeType": "Block",
"src": "1402:36:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 107,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "1414:7:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 109,
"indexExpression": {
"argumentTypes": null,
"id": 108,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 104,
"src": "1422:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1414:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 106,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "1406:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 110,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1406:23:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 111,
"nodeType": "ExpressionStatement",
"src": "1406:23:0"
},
{
"id": 112,
"nodeType": "PlaceholderStatement",
"src": "1433:1:0"
}
]
},
"documentation": null,
"id": 114,
"name": "ownerExists",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 105,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 104,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 114,
"src": "1387:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 103,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1387:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1386:15:0"
},
"src": "1366:72:0",
"visibility": "internal"
},
{
"body": {
"id": 130,
"nodeType": "Block",
"src": "1491:75:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 126,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 119,
"name": "transactions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50,
"src": "1503:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction storage ref)"
}
},
"id": 121,
"indexExpression": {
"argumentTypes": null,
"id": 120,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 116,
"src": "1516:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1503:27:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"id": 122,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "destination",
"nodeType": "MemberAccess",
"referencedDeclaration": 69,
"src": "1503:39:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 124,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1554:1:0",
"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": 123,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1546:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 125,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1546:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "1503:53:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 118,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "1495:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1495:62:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 128,
"nodeType": "ExpressionStatement",
"src": "1495:62:0"
},
{
"id": 129,
"nodeType": "PlaceholderStatement",
"src": "1561:1:0"
}
]
},
"documentation": null,
"id": 131,
"name": "transactionExists",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 117,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 116,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 131,
"src": "1468:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 115,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1468:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1467:23:0"
},
"src": "1441:125:0",
"visibility": "internal"
},
{
"body": {
"id": 146,
"nodeType": "Block",
"src": "1626:57:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 138,
"name": "confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
"src": "1638:13:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
}
},
"id": 140,
"indexExpression": {
"argumentTypes": null,
"id": 139,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 133,
"src": "1652:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1638:28:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 142,
"indexExpression": {
"argumentTypes": null,
"id": 141,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 135,
"src": "1667:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1638:35:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 137,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "1630:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 143,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1630:44:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 144,
"nodeType": "ExpressionStatement",
"src": "1630:44:0"
},
{
"id": 145,
"nodeType": "PlaceholderStatement",
"src": "1678:1:0"
}
]
},
"documentation": null,
"id": 147,
"name": "confirmed",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 136,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 133,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 147,
"src": "1588:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 132,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1588:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 135,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 147,
"src": "1611:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 134,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1611:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1587:38:0"
},
"src": "1569:114:0",
"visibility": "internal"
},
{
"body": {
"id": 163,
"nodeType": "Block",
"src": "1746:58:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 159,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1758:36:0",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 154,
"name": "confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
"src": "1759:13:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
}
},
"id": 156,
"indexExpression": {
"argumentTypes": null,
"id": 155,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 149,
"src": "1773:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1759:28:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 158,
"indexExpression": {
"argumentTypes": null,
"id": 157,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 151,
"src": "1788:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1759:35:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 153,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "1750:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1750:45:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 161,
"nodeType": "ExpressionStatement",
"src": "1750:45:0"
},
{
"id": 162,
"nodeType": "PlaceholderStatement",
"src": "1799:1:0"
}
]
},
"documentation": null,
"id": 164,
"name": "notConfirmed",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 152,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 149,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 164,
"src": "1708:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 148,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1708:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 151,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 164,
"src": "1731:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 150,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1731:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1707:38:0"
},
"src": "1686:118:0",
"visibility": "internal"
},
{
"body": {
"id": 177,
"nodeType": "Block",
"src": "1851:59:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1863:37:0",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 169,
"name": "transactions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50,
"src": "1864:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction storage ref)"
}
},
"id": 171,
"indexExpression": {
"argumentTypes": null,
"id": 170,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 166,
"src": "1877:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1864:27:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"id": 172,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "executed",
"nodeType": "MemberAccess",
"referencedDeclaration": 75,
"src": "1864:36:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 168,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "1855:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 174,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1855:46:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 175,
"nodeType": "ExpressionStatement",
"src": "1855:46:0"
},
{
"id": 176,
"nodeType": "PlaceholderStatement",
"src": "1905:1:0"
}
]
},
"documentation": null,
"id": 178,
"name": "notExecuted",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 167,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 166,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 178,
"src": "1828:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 165,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1828:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1827:23:0"
},
"src": "1807:103:0",
"visibility": "internal"
},
{
"body": {
"id": 191,
"nodeType": "Block",
"src": "1948:44:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 187,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 183,
"name": "_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 180,
"src": "1960:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 185,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1980:1:0",
"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": 184,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1972:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 186,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1972:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "1960:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 182,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "1952:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 188,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1952:31:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 189,
"nodeType": "ExpressionStatement",
"src": "1952:31:0"
},
{
"id": 190,
"nodeType": "PlaceholderStatement",
"src": "1987:1:0"
}
]
},
"documentation": null,
"id": 192,
"name": "notNull",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 181,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 180,
"name": "_address",
"nodeType": "VariableDeclaration",
"scope": 192,
"src": "1930:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 179,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1930:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1929:18:0"
},
"src": "1913:79:0",
"visibility": "internal"
},
{
"body": {
"id": 217,
"nodeType": "Block",
"src": "2060:115:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 213,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 209,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 205,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 201,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 199,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 194,
"src": "2072:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 200,
"name": "MAX_OWNER_COUNT",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46,
"src": "2086:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2072:29:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 202,
"name": "_required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 196,
"src": "2105:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 203,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 194,
"src": "2118:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2105:23:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2072:56:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 206,
"name": "_required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 196,
"src": "2132:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 207,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2145:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2132:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2072:74:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 212,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 210,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 194,
"src": "2150:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 211,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2164:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2150:15:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2072:93:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 198,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "2064:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 214,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2064:102:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 215,
"nodeType": "ExpressionStatement",
"src": "2064:102:0"
},
{
"id": 216,
"nodeType": "PlaceholderStatement",
"src": "2170:1:0"
}
]
},
"documentation": null,
"id": 218,
"name": "validRequirement",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 197,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 194,
"name": "ownerCount",
"nodeType": "VariableDeclaration",
"scope": 218,
"src": "2021:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 193,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2021:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 196,
"name": "_required",
"nodeType": "VariableDeclaration",
"scope": 218,
"src": "2041:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 195,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2041:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2020:39:0"
},
"src": "1995:180:0",
"visibility": "internal"
},
{
"body": {
"id": 233,
"nodeType": "Block",
"src": "2262:62:0",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 224,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 221,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "2270:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 222,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2270:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 223,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2282:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2270:13:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 232,
"nodeType": "IfStatement",
"src": "2266:54:0",
"trueBody": {
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 226,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "2298:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2298:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 228,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "2310:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 229,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2310:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 225,
"name": "Deposit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31,
"src": "2290:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2290:30:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 231,
"nodeType": "EmitStatement",
"src": "2285:35:0"
}
}
]
},
"documentation": "@notice Fallback function allows to deposit ether.",
"id": 234,
"implemented": true,
"kind": "fallback",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 219,
"nodeType": "ParameterList",
"parameters": [],
"src": "2242:2:0"
},
"returnParameters": {
"id": 220,
"nodeType": "ParameterList",
"parameters": [],
"src": "2262:0:0"
},
"scope": 1016,
"src": "2234:90:0",
"stateMutability": "payable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 293,
"nodeType": "Block",
"src": "2677:194:0",
"statements": [
{
"body": {
"id": 283,
"nodeType": "Block",
"src": "2726:98:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 272,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2739:20:0",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 259,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "2740:7:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 263,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 260,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 237,
"src": "2748:7:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 262,
"indexExpression": {
"argumentTypes": null,
"id": 261,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 248,
"src": "2756:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2748:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2740:19:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 271,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 265,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 237,
"src": "2763:7:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 267,
"indexExpression": {
"argumentTypes": null,
"id": 266,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 248,
"src": "2771:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2763:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 269,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2785:1:0",
"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": 268,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2777:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 270,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2777:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2763:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2739:48:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 258,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
1034,
1035
],
"referencedDeclaration": 1034,
"src": "2731:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 273,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2731:57:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 274,
"nodeType": "ExpressionStatement",
"src": "2731:57:0"
},
{
"expression": {
"argumentTypes": null,
"id": 281,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 275,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "2793:7:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 279,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 276,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 237,
"src": "2801:7:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 278,
"indexExpression": {
"argumentTypes": null,
"id": 277,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 248,
"src": "2809:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2801:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2793:19:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 280,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2815:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2793:26:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 282,
"nodeType": "ExpressionStatement",
"src": "2793:26:0"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 251,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 248,
"src": "2701:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 252,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 237,
"src": "2705:7:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2705:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2701:18:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 284,
"initializationExpression": {
"assignments": [
248
],
"declarations": [
{
"constant": false,
"id": 248,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 284,
"src": "2686:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 247,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2686:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 250,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 249,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2698:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "2686:13:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 256,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2721:3:0",
"subExpression": {
"argumentTypes": null,
"id": 255,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 248,
"src": "2721:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 257,
"nodeType": "ExpressionStatement",
"src": "2721:3:0"
},
"nodeType": "ForStatement",
"src": "2681:143:0"
},
{
"expression": {
"argumentTypes": null,
"id": 287,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 285,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "2827:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 286,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 237,
"src": "2836:7:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"src": "2827:16:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 288,
"nodeType": "ExpressionStatement",
"src": "2827:16:0"
},
{
"expression": {
"argumentTypes": null,
"id": 291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 289,
"name": "required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 65,
"src": "2847:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 290,
"name": "_required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 239,
"src": "2858:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2847:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 292,
"nodeType": "ExpressionStatement",
"src": "2847:20:0"
}
]
},
"documentation": "@notice Contract constructor sets initial owners and required number\n of confirmations.\n\t * @param _owners List of initial owners.\n@param _required Number of required confirmations.\n",
"id": 294,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 242,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 237,
"src": "2650:7:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2650:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 244,
"name": "_required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 239,
"src": "2666:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 245,
"modifierName": {
"argumentTypes": null,
"id": 241,
"name": "validRequirement",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 218,
"src": "2633:16:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$_t_uint256_$",
"typeString": "modifier (uint256,uint256)"
}
},
"nodeType": "ModifierInvocation",
"src": "2633:43:0"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 240,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 237,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 294,
"src": "2581:24:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 235,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2581:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 236,
"length": null,
"nodeType": "ArrayTypeName",
"src": "2581:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 239,
"name": "_required",
"nodeType": "VariableDeclaration",
"scope": 294,
"src": "2607:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 238,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2607:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2580:45:0"
},
"returnParameters": {
"id": 246,
"nodeType": "ParameterList",
"parameters": [],
"src": "2677:0:0"
},
"scope": 1016,
"src": "2569:302:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 330,
"nodeType": "Block",
"src": "3150:80:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 318,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 314,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "3154:7:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 316,
"indexExpression": {
"argumentTypes": null,
"id": 315,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 296,
"src": "3162:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3154:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 317,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3171:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "3154:21:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 319,
"nodeType": "ExpressionStatement",
"src": "3154:21:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 323,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 296,
"src": "3191:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 320,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3179:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3179:11:0",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) returns (uint256)"
}
},
"id": 324,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3179:18:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 325,
"nodeType": "ExpressionStatement",
"src": "3179:18:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 327,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 296,
"src": "3220:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 326,
"name": "OwnerAddition",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "3206:13:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 328,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3206:20:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 329,
"nodeType": "EmitStatement",
"src": "3201:25:0"
}
]
},
"documentation": "@notice Allows to add a new owner. Transaction has to be sent by wallet.\n@param owner Address of new owner.\n",
"id": 331,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 299,
"modifierName": {
"argumentTypes": null,
"id": 298,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 89,
"src": "3046:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3046:10:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 301,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 296,
"src": "3077:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 302,
"modifierName": {
"argumentTypes": null,
"id": 300,
"name": "ownerDoesNotExist",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
"src": "3059:17:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "3059:24:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 304,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 296,
"src": "3094:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 305,
"modifierName": {
"argumentTypes": null,
"id": 303,
"name": "notNull",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 192,
"src": "3086:7:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "3086:14:0"
},
{
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 310,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 307,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3120:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 308,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3120:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 309,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3136:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3120:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 311,
"name": "required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 65,
"src": "3139:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 312,
"modifierName": {
"argumentTypes": null,
"id": 306,
"name": "validRequirement",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 218,
"src": "3103:16:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$_t_uint256_$",
"typeString": "modifier (uint256,uint256)"
}
},
"nodeType": "ModifierInvocation",
"src": "3103:45:0"
}
],
"name": "addOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 297,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 296,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 331,
"src": "3020:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 295,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3020:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3019:15:0"
},
"returnParameters": {
"id": 313,
"nodeType": "ParameterList",
"parameters": [],
"src": "3150:0:0"
},
"scope": 1016,
"src": "3002:228:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 400,
"nodeType": "Block",
"src": "3430:284:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 341,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "3434:7:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 343,
"indexExpression": {
"argumentTypes": null,
"id": 342,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 333,
"src": "3442:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3434:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 344,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3451:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "3434:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 346,
"nodeType": "ExpressionStatement",
"src": "3434:22:0"
},
{
"body": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 360,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3515:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 362,
"indexExpression": {
"argumentTypes": null,
"id": 361,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 348,
"src": "3522:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3515:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 363,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 333,
"src": "3528:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3515:18:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 378,
"nodeType": "IfStatement",
"src": "3511:84:0",
"trueBody": {
"id": 377,
"nodeType": "Block",
"src": "3535:60:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 374,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 365,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3541:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 367,
"indexExpression": {
"argumentTypes": null,
"id": 366,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 348,
"src": "3548:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3541:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 368,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3553:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 373,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 369,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3560:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 370,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3560:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 371,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3576:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3560:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3553:25:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3541:37:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 375,
"nodeType": "ExpressionStatement",
"src": "3541:37:0"
},
{
"id": 376,
"nodeType": "Break",
"src": "3584:5:0"
}
]
}
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 356,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 351,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 348,
"src": "3480:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 355,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 352,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3484:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 353,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3484:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 354,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3500:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3484:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3480:21:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 379,
"initializationExpression": {
"assignments": [
348
],
"declarations": [
{
"constant": false,
"id": 348,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 379,
"src": "3465:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 347,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3465:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 350,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 349,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3477:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "3465:13:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 358,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "3503:3:0",
"subExpression": {
"argumentTypes": null,
"id": 357,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 348,
"src": "3503:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 359,
"nodeType": "ExpressionStatement",
"src": "3503:3:0"
},
"nodeType": "ForStatement",
"src": "3460:135:0"
},
{
"expression": {
"argumentTypes": null,
"id": 384,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 380,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3598:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 382,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3598:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 383,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3615:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3598:18:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 385,
"nodeType": "ExpressionStatement",
"src": "3598:18:0"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 389,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 386,
"name": "required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 65,
"src": "3624:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 387,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3635:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 388,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3635:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3624:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 395,
"nodeType": "IfStatement",
"src": "3620:62:0",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 391,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "3668:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 392,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3668:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 390,
"name": "changeRequirement",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 484,
"src": "3650:17:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 393,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3650:32:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 394,
"nodeType": "ExpressionStatement",
"src": "3650:32:0"
}
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 397,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 333,
"src": "3704:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 396,
"name": "OwnerRemoval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
"src": "3691:12:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 398,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3691:19:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 399,
"nodeType": "EmitStatement",
"src": "3686:24:0"
}
]
},
"documentation": "@notice Allows to remove an owner. Transaction has to be sent by wallet.\n@param owner Address of owner.\n",
"id": 401,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 336,
"modifierName": {
"argumentTypes": null,
"id": 335,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 89,
"src": "3400:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3400:10:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 338,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 333,
"src": "3423:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 339,
"modifierName": {
"argumentTypes": null,
"id": 337,
"name": "ownerExists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "3411:11:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "3411:18:0"
}
],
"name": "removeOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 334,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 333,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 401,
"src": "3378:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 332,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3378:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3377:15:0"
},
"returnParameters": {
"id": 340,
"nodeType": "ParameterList",
"parameters": [],
"src": "3430:0:0"
},
"scope": 1016,
"src": "3357:357:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 462,
"nodeType": "Block",
"src": "4046:235:0",
"statements": [
{
"body": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 431,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 427,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "4101:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 429,
"indexExpression": {
"argumentTypes": null,
"id": 428,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 417,
"src": "4108:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4101:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 430,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 403,
"src": "4114:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4101:18:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 440,
"nodeType": "IfStatement",
"src": "4097:67:0",
"trueBody": {
"id": 439,
"nodeType": "Block",
"src": "4121:43:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 432,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "4127:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 434,
"indexExpression": {
"argumentTypes": null,
"id": 433,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 417,
"src": "4134:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4127:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 435,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 405,
"src": "4139:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4127:20:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 437,
"nodeType": "ExpressionStatement",
"src": "4127:20:0"
},
{
"id": 438,
"nodeType": "Break",
"src": "4153:5:0"
}
]
}
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 423,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 420,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 417,
"src": "4070:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 421,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "4074:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 422,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4074:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4070:17:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 441,
"initializationExpression": {
"assignments": [
417
],
"declarations": [
{
"constant": false,
"id": 417,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 441,
"src": "4055:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 416,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4055:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 419,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 418,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4067:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "4055:13:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 425,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "4089:3:0",
"subExpression": {
"argumentTypes": null,
"id": 424,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 417,
"src": "4089:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 426,
"nodeType": "ExpressionStatement",
"src": "4089:3:0"
},
"nodeType": "ForStatement",
"src": "4050:114:0"
},
{
"expression": {
"argumentTypes": null,
"id": 446,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 442,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "4167:7:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 444,
"indexExpression": {
"argumentTypes": null,
"id": 443,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 403,
"src": "4175:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4167:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 445,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4184:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "4167:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 447,
"nodeType": "ExpressionStatement",
"src": "4167:22:0"
},
{
"expression": {
"argumentTypes": null,
"id": 452,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 448,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "4193:7:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 450,
"indexExpression": {
"argumentTypes": null,
"id": 449,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 405,
"src": "4201:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4193:17:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 451,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4213:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "4193:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 453,
"nodeType": "ExpressionStatement",
"src": "4193:24:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 455,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 403,
"src": "4239:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 454,
"name": "OwnerRemoval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
"src": "4226:12:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 456,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4226:19:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 457,
"nodeType": "EmitStatement",
"src": "4221:24:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 459,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 405,
"src": "4268:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 458,
"name": "OwnerAddition",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "4254:13:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4254:23:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 461,
"nodeType": "EmitStatement",
"src": "4249:28:0"
}
]
},
"documentation": "@notice Allows to replace an owner with a new owner. Transaction has\n to be sent by wallet.\n\t * @param owner Address of owner to be replaced.\n@param newOwner Address of new owner.\n",
"id": 463,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 408,
"modifierName": {
"argumentTypes": null,
"id": 407,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 89,
"src": "3988:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3988:10:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 410,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 403,
"src": "4011:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 411,
"modifierName": {
"argumentTypes": null,
"id": 409,
"name": "ownerExists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "3999:11:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "3999:18:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 413,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 405,
"src": "4036:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 414,
"modifierName": {
"argumentTypes": null,
"id": 412,
"name": "ownerDoesNotExist",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
"src": "4018:17:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "4018:27:0"
}
],
"name": "replaceOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 406,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 403,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 463,
"src": "3948:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 402,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3948:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 405,
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 463,
"src": "3963:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 404,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3963:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3947:33:0"
},
"returnParameters": {
"id": 415,
"nodeType": "ParameterList",
"parameters": [],
"src": "4046:0:0"
},
"scope": 1016,
"src": "3926:355:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 483,
"nodeType": "Block",
"src": "4571:65:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 477,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 475,
"name": "required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 65,
"src": "4575:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 476,
"name": "_required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 465,
"src": "4586:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4575:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 478,
"nodeType": "ExpressionStatement",
"src": "4575:20:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 480,
"name": "_required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 465,
"src": "4622:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 479,
"name": "RequirementChange",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "4604:17:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 481,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4604:28:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 482,
"nodeType": "EmitStatement",
"src": "4599:33:0"
}
]
},
"documentation": "@notice Allows to change the number of required confirmations.\nTransaction has to be sent by wallet.\n\t * @param _required Number of required confirmations.\n",
"id": 484,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 468,
"modifierName": {
"argumentTypes": null,
"id": 467,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 89,
"src": "4517:10:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4517:10:0"
},
{
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 470,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "4545:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 471,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4545:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 472,
"name": "_required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 465,
"src": "4560:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 473,
"modifierName": {
"argumentTypes": null,
"id": 469,
"name": "validRequirement",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 218,
"src": "4528:16:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$_t_uint256_$",
"typeString": "modifier (uint256,uint256)"
}
},
"nodeType": "ModifierInvocation",
"src": "4528:42:0"
}
],
"name": "changeRequirement",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 466,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 465,
"name": "_required",
"nodeType": "VariableDeclaration",
"scope": 484,
"src": "4491:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 464,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4491:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4490:19:0"
},
"returnParameters": {
"id": 474,
"nodeType": "ParameterList",
"parameters": [],
"src": "4571:0:0"
},
"scope": 1016,
"src": "4464:172:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 507,
"nodeType": "Block",
"src": "5025:101:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 501,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 495,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 493,
"src": "5029:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 497,
"name": "destination",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 486,
"src": "5060:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 498,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 488,
"src": "5073:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 499,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 490,
"src": "5080:4:0",
"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"
}
],
"id": 496,
"name": "addTransaction",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "5045:14:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
"typeString": "function (address,uint256,bytes memory) returns (uint256)"
}
},
"id": 500,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5045:40:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5029:56:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 502,
"nodeType": "ExpressionStatement",
"src": "5029:56:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 504,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 493,
"src": "5108:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 503,
"name": "confirmTransaction",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 545,
"src": "5089:18:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 505,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5089:33:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 506,
"nodeType": "ExpressionStatement",
"src": "5089:33:0"
}
]
},
"documentation": "@notice Allows an owner to submit and confirm a transaction.\n\t * @param destination Transaction target address.\n@param value Transaction ether value.\n@param data Transaction data payload.\n\t * @return Returns transaction ID.\n",
"id": 508,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "submitTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 491,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 486,
"name": "destination",
"nodeType": "VariableDeclaration",
"scope": 508,
"src": "4925:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 485,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4925:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 488,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 508,
"src": "4948:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 487,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4948:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 490,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 508,
"src": "4965:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 489,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4965:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4921:64:0"
},
"returnParameters": {
"id": 494,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 493,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 508,
"src": "5002:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 492,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5002:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5001:23:0"
},
"scope": 1016,
"src": "4895:231:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 544,
"nodeType": "Block",
"src": "5400:140:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 532,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 525,
"name": "confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
"src": "5404:13:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
}
},
"id": 529,
"indexExpression": {
"argumentTypes": null,
"id": 526,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "5418:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5404:28:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 530,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 527,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "5433:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 528,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5433:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5404:40:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 531,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5447:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "5404:47:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 533,
"nodeType": "ExpressionStatement",
"src": "5404:47:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 535,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "5473:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 536,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5473:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 537,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "5485:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 534,
"name": "Confirmation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "5460:12:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 538,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5460:39:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 539,
"nodeType": "EmitStatement",
"src": "5455:44:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 541,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "5522:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 540,
"name": "executeTransaction",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 640,
"src": "5503:18:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 542,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5503:33:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 543,
"nodeType": "ExpressionStatement",
"src": "5503:33:0"
}
]
},
"documentation": "@notice Allows an owner to confirm a transaction.\n@param transactionId Transaction ID.\n",
"id": 545,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 513,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "5310:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 514,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5310:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"id": 515,
"modifierName": {
"argumentTypes": null,
"id": 512,
"name": "ownerExists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "5298:11:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "5298:23:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 517,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "5342:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 518,
"modifierName": {
"argumentTypes": null,
"id": 516,
"name": "transactionExists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 131,
"src": "5324:17:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$",
"typeString": "modifier (uint256)"
}
},
"nodeType": "ModifierInvocation",
"src": "5324:32:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 520,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "5372:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 521,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "5387:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 522,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5387:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"id": 523,
"modifierName": {
"argumentTypes": null,
"id": 519,
"name": "notConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 164,
"src": "5359:12:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$_t_address_$",
"typeString": "modifier (uint256,address)"
}
},
"nodeType": "ModifierInvocation",
"src": "5359:39:0"
}
],
"name": "confirmTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 511,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 510,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 545,
"src": "5264:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 509,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5264:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5263:23:0"
},
"returnParameters": {
"id": 524,
"nodeType": "ParameterList",
"parameters": [],
"src": "5400:0:0"
},
"scope": 1016,
"src": "5236:304:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 577,
"nodeType": "Block",
"src": "5823:102:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 569,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 562,
"name": "confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
"src": "5827:13:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
}
},
"id": 566,
"indexExpression": {
"argumentTypes": null,
"id": 563,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 547,
"src": "5841:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5827:28:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 567,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 564,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "5856:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 565,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5856:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5827:40:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 568,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5870:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "5827:48:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 570,
"nodeType": "ExpressionStatement",
"src": "5827:48:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 572,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "5895:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5895:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 574,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 547,
"src": "5907:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 571,
"name": "Revocation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13,
"src": "5884:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5884:37:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 576,
"nodeType": "EmitStatement",
"src": "5879:42:0"
}
]
},
"documentation": "@notice Allows an owner to revoke a confirmation for a transaction.\n@param transactionId Transaction ID.\n",
"id": 578,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 550,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "5742:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5742:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"id": 552,
"modifierName": {
"argumentTypes": null,
"id": 549,
"name": "ownerExists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "5730:11:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "5730:23:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 554,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 547,
"src": "5766:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 555,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "5781:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 556,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5781:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"id": 557,
"modifierName": {
"argumentTypes": null,
"id": 553,
"name": "confirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 147,
"src": "5756:9:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$_t_address_$",
"typeString": "modifier (uint256,address)"
}
},
"nodeType": "ModifierInvocation",
"src": "5756:36:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 559,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 547,
"src": "5807:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 560,
"modifierName": {
"argumentTypes": null,
"id": 558,
"name": "notExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 178,
"src": "5795:11:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$",
"typeString": "modifier (uint256)"
}
},
"nodeType": "ModifierInvocation",
"src": "5795:26:0"
}
],
"name": "revokeConfirmation",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 548,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 547,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 578,
"src": "5696:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 546,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5696:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5695:23:0"
},
"returnParameters": {
"id": 561,
"nodeType": "ParameterList",
"parameters": [],
"src": "5823:0:0"
},
"scope": 1016,
"src": "5668:257:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 639,
"nodeType": "Block",
"src": "6198:317:0",
"statements": [
{
"condition": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 596,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 580,
"src": "6218:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 595,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 705,
"src": "6206:11:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6206:26:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 638,
"nodeType": "IfStatement",
"src": "6202:310:0",
"trueBody": {
"id": 637,
"nodeType": "Block",
"src": "6234:278:0",
"statements": [
{
"assignments": [
599
],
"declarations": [
{
"constant": false,
"id": 599,
"name": "txn",
"nodeType": "VariableDeclaration",
"scope": 637,
"src": "6239:23:0",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction"
},
"typeName": {
"contractScope": null,
"id": 598,
"name": "Transaction",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 76,
"src": "6239:11:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 603,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 600,
"name": "transactions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50,
"src": "6265:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction storage ref)"
}
},
"id": 602,
"indexExpression": {
"argumentTypes": null,
"id": 601,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 580,
"src": "6278:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6265:27:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6239:53:0"
},
{
"expression": {
"argumentTypes": null,
"id": 608,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 604,
"name": "txn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 599,
"src": "6297:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction storage pointer"
}
},
"id": 606,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "executed",
"nodeType": "MemberAccess",
"referencedDeclaration": 75,
"src": "6297:12:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 607,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6312:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "6297:19:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 609,
"nodeType": "ExpressionStatement",
"src": "6297:19:0"
},
{
"condition": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 611,
"name": "txn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 599,
"src": "6339:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction storage pointer"
}
},
"id": 612,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "destination",
"nodeType": "MemberAccess",
"referencedDeclaration": 69,
"src": "6339:15:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 613,
"name": "txn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 599,
"src": "6356:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction storage pointer"
}
},
"id": 614,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": 71,
"src": "6356:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 615,
"name": "txn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 599,
"src": "6367:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction storage pointer"
}
},
"id": 616,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "data",
"nodeType": "MemberAccess",
"referencedDeclaration": 73,
"src": "6367:8:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage",
"typeString": "bytes storage ref"
}
},
"id": 617,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6367:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 618,
"name": "txn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 599,
"src": "6384:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction storage pointer"
}
},
"id": 619,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "data",
"nodeType": "MemberAccess",
"referencedDeclaration": 73,
"src": "6384:8:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage",
"typeString": "bytes storage ref"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_storage",
"typeString": "bytes storage ref"
}
],
"id": 610,
"name": "external_call",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 660,
"src": "6325:13:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,uint256,uint256,bytes memory) returns (bool)"
}
},
"id": 620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6325:68:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 635,
"nodeType": "Block",
"src": "6434:74:0",
"statements": [
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 626,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 580,
"src": "6462:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 625,
"name": "ExecutionFailure",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
"src": "6445:16:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6445:31:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 628,
"nodeType": "EmitStatement",
"src": "6440:36:0"
},
{
"expression": {
"argumentTypes": null,
"id": 633,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 629,
"name": "txn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 599,
"src": "6482:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage_ptr",
"typeString": "struct MultiSigWallet.Transaction storage pointer"
}
},
"id": 631,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "executed",
"nodeType": "MemberAccess",
"referencedDeclaration": 75,
"src": "6482:12:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 632,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6497:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "6482:20:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 634,
"nodeType": "ExpressionStatement",
"src": "6482:20:0"
}
]
},
"id": 636,
"nodeType": "IfStatement",
"src": "6321:187:0",
"trueBody": {
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 622,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 580,
"src": "6410:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 621,
"name": "Execution",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21,
"src": "6400:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6400:24:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 624,
"nodeType": "EmitStatement",
"src": "6395:29:0"
}
}
]
}
}
]
},
"documentation": "@notice Allows anyone to execute a confirmed transaction.\n@param transactionId Transaction ID.\n",
"id": 640,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 583,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "6117:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6117:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"id": 585,
"modifierName": {
"argumentTypes": null,
"id": 582,
"name": "ownerExists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "6105:11:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "6105:23:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 587,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 580,
"src": "6141:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 588,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "6156:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 589,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6156:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"id": 590,
"modifierName": {
"argumentTypes": null,
"id": 586,
"name": "confirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 147,
"src": "6131:9:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$_t_address_$",
"typeString": "modifier (uint256,address)"
}
},
"nodeType": "ModifierInvocation",
"src": "6131:36:0"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 592,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 580,
"src": "6182:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 593,
"modifierName": {
"argumentTypes": null,
"id": 591,
"name": "notExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 178,
"src": "6170:11:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_uint256_$",
"typeString": "modifier (uint256)"
}
},
"nodeType": "ModifierInvocation",
"src": "6170:26:0"
}
],
"name": "executeTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 581,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 580,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 640,
"src": "6071:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 579,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6071:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6070:23:0"
},
"returnParameters": {
"id": 594,
"nodeType": "ParameterList",
"parameters": [],
"src": "6198:0:0"
},
"scope": 1016,
"src": "6043:472:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 659,
"nodeType": "Block",
"src": "7135:764:0",
"statements": [
{
"assignments": [
654
],
"declarations": [
{
"constant": false,
"id": 654,
"name": "result",
"nodeType": "VariableDeclaration",
"scope": 659,
"src": "7139:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 653,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7139:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 655,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "7139:11:0"
},
{
"externalReferences": [
{
"result": {
"declaration": 654,
"isOffset": false,
"isSlot": false,
"src": "7379:6:0",
"valueSize": 1
}
},
{
"data": {
"declaration": 648,
"isOffset": false,
"isSlot": false,
"src": "7300:4:0",
"valueSize": 1
}
},
{
"destination": {
"declaration": 642,
"isOffset": false,
"isSlot": false,
"src": "7680:11:0",
"valueSize": 1
}
},
{
"value": {
"declaration": 644,
"isOffset": false,
"isSlot": false,
"src": "7697:5:0",
"valueSize": 1
}
},
{
"dataLength": {
"declaration": 646,
"isOffset": false,
"isSlot": false,
"src": "7715:10:0",
"valueSize": 1
}
}
],
"id": 656,
"nodeType": "InlineAssembly",
"operations": "{\n let x := mload(0x40)\n let d := add(data, 32)\n result := call(sub(gas(), 34710), destination, value, d, dataLength, x, 0)\n}",
"src": "7154:725:0"
},
{
"expression": {
"argumentTypes": null,
"id": 657,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 654,
"src": "7889:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 652,
"id": 658,
"nodeType": "Return",
"src": "7882:13:0"
}
]
},
"documentation": "@notice Low level transaction execution.\n\t * @dev Call has been separated into its own function in order to\n take advantage of the Solidity's code generator to produce a\n loop that copies tx.data into memory.\n\t * @param destination The address of the Smart Contract to call.\n@param value The amout of rBTC to send w/ the transaction.\n@param dataLength The size of the payload.\n@param data The payload.\n\t * @return Success or failure.\n",
"id": 660,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "external_call",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 649,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 642,
"name": "destination",
"nodeType": "VariableDeclaration",
"scope": 660,
"src": "7028:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 641,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7028:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 644,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 660,
"src": "7051:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 643,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7051:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 646,
"name": "dataLength",
"nodeType": "VariableDeclaration",
"scope": 660,
"src": "7068:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 645,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7068:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 648,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 660,
"src": "7090:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 647,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "7090:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7024:86:0"
},
"returnParameters": {
"id": 652,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 651,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 660,
"src": "7129:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 650,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7129:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7128:6:0"
},
"scope": 1016,
"src": "7002:897:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 704,
"nodeType": "Block",
"src": "8121:193:0",
"statements": [
{
"assignments": [
668
],
"declarations": [
{
"constant": false,
"id": 668,
"name": "count",
"nodeType": "VariableDeclaration",
"scope": 704,
"src": "8125:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 667,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8125:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 670,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 669,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8141:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "8125:17:0"
},
{
"body": {
"id": 700,
"nodeType": "Block",
"src": "8190:104:0",
"statements": [
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 682,
"name": "confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
"src": "8199:13:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
}
},
"id": 684,
"indexExpression": {
"argumentTypes": null,
"id": 683,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 662,
"src": "8213:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8199:28:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 688,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 685,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "8228:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 687,
"indexExpression": {
"argumentTypes": null,
"id": 686,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 672,
"src": "8235:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8228:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8199:39:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 693,
"nodeType": "IfStatement",
"src": "8195:55:0",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 691,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 689,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 668,
"src": "8240:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 690,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8249:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "8240:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 692,
"nodeType": "ExpressionStatement",
"src": "8240:10:0"
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 696,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 694,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 668,
"src": "8259:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 695,
"name": "required",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 65,
"src": "8268:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8259:17:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 699,
"nodeType": "IfStatement",
"src": "8255:34:0",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 697,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8285:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 666,
"id": 698,
"nodeType": "Return",
"src": "8278:11:0"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 678,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 675,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 672,
"src": "8166:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 676,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "8170:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 677,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8170:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8166:17:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 701,
"initializationExpression": {
"assignments": [
672
],
"declarations": [
{
"constant": false,
"id": 672,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 701,
"src": "8151:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 671,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8151:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 674,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 673,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8163:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "8151:13:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 680,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "8185:3:0",
"subExpression": {
"argumentTypes": null,
"id": 679,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 672,
"src": "8185:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 681,
"nodeType": "ExpressionStatement",
"src": "8185:3:0"
},
"nodeType": "ForStatement",
"src": "8146:148:0"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8305:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 666,
"id": 703,
"nodeType": "Return",
"src": "8298:12:0"
}
]
},
"documentation": "@notice Returns the confirmation status of a transaction.\n@param transactionId Transaction ID.\n@return Confirmation status.\n",
"id": 705,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isConfirmed",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 663,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 662,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 705,
"src": "8071:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 661,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8071:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8070:23:0"
},
"returnParameters": {
"id": 666,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 665,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 705,
"src": "8115:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 664,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "8115:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8114:6:0"
},
"scope": 1016,
"src": "8050:264:0",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 742,
"nodeType": "Block",
"src": "8795:217:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 721,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 719,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 717,
"src": "8799:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 720,
"name": "transactionCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 67,
"src": "8815:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8799:32:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 722,
"nodeType": "ExpressionStatement",
"src": "8799:32:0"
},
{
"expression": {
"argumentTypes": null,
"id": 732,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 723,
"name": "transactions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50,
"src": "8835:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction storage ref)"
}
},
"id": 725,
"indexExpression": {
"argumentTypes": null,
"id": 724,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 717,
"src": "8848:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "8835:27:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 727,
"name": "destination",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 707,
"src": "8892:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 728,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 709,
"src": "8912:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 729,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 711,
"src": "8925:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 730,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8941:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 726,
"name": "Transaction",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 76,
"src": "8865:11:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_Transaction_$76_storage_ptr_$",
"typeString": "type(struct MultiSigWallet.Transaction storage pointer)"
}
},
"id": 731,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"names": [
"destination",
"value",
"data",
"executed"
],
"nodeType": "FunctionCall",
"src": "8865:84:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_memory",
"typeString": "struct MultiSigWallet.Transaction memory"
}
},
"src": "8835:114:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"id": 733,
"nodeType": "ExpressionStatement",
"src": "8835:114:0"
},
{
"expression": {
"argumentTypes": null,
"id": 736,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 734,
"name": "transactionCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 67,
"src": "8953:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 735,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8973:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "8953:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 737,
"nodeType": "ExpressionStatement",
"src": "8953:21:0"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 739,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 717,
"src": "8994:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 738,
"name": "Submission",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17,
"src": "8983:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 740,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8983:25:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 741,
"nodeType": "EmitStatement",
"src": "8978:30:0"
}
]
},
"documentation": "@notice Adds a new transaction to the transaction mapping,\n if transaction does not exist yet.\n\t * @param destination Transaction target address.\n@param value Transaction ether value.\n@param data Transaction data payload.\n\t * @return Returns transaction ID.\n",
"id": 743,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 714,
"name": "destination",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 707,
"src": "8750:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 715,
"modifierName": {
"argumentTypes": null,
"id": 713,
"name": "notNull",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 192,
"src": "8742:7:0",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "8742:20:0"
}
],
"name": "addTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 712,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 707,
"name": "destination",
"nodeType": "VariableDeclaration",
"scope": 743,
"src": "8672:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 706,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8672:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 709,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 743,
"src": "8695:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 708,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8695:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 711,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 743,
"src": "8712:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 710,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "8712:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8668:64:0"
},
"returnParameters": {
"id": 718,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 717,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 743,
"src": "8772:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 716,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8772:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8771:23:0"
},
"scope": 1016,
"src": "8645:367:0",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 774,
"nodeType": "Block",
"src": "9290:107:0",
"statements": [
{
"body": {
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 761,
"name": "confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
"src": "9342:13:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
}
},
"id": 763,
"indexExpression": {
"argumentTypes": null,
"id": 762,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 745,
"src": "9356:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9342:28:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 767,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 764,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "9371:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 766,
"indexExpression": {
"argumentTypes": null,
"id": 765,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 751,
"src": "9378:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9371:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9342:39:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 772,
"nodeType": "IfStatement",
"src": "9338:55:0",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 770,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 768,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 748,
"src": "9383:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 769,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9392:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "9383:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 771,
"nodeType": "ExpressionStatement",
"src": "9383:10:0"
}
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 757,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 754,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 751,
"src": "9314:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 755,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "9318:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 756,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9318:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9314:17:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 773,
"initializationExpression": {
"assignments": [
751
],
"declarations": [
{
"constant": false,
"id": 751,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 773,
"src": "9299:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 750,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9299:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 753,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 752,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9311:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "9299:13:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 759,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "9333:3:0",
"subExpression": {
"argumentTypes": null,
"id": 758,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 751,
"src": "9333:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 760,
"nodeType": "ExpressionStatement",
"src": "9333:3:0"
},
"nodeType": "ForStatement",
"src": "9294:99:0"
}
]
},
"documentation": "@notice Get the number of confirmations of a transaction.\n@param transactionId Transaction ID.\n@return Number of confirmations.\n",
"id": 775,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConfirmationCount",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 746,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 745,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 775,
"src": "9231:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 744,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9231:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9230:23:0"
},
"returnParameters": {
"id": 749,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 748,
"name": "count",
"nodeType": "VariableDeclaration",
"scope": 775,
"src": "9275:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 747,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9275:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9274:15:0"
},
"scope": 1016,
"src": "9201:196:0",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 816,
"nodeType": "Block",
"src": "9749:154:0",
"statements": [
{
"body": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 809,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 800,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 794,
"name": "pending",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 777,
"src": "9808:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"id": 799,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "9819:25:0",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 795,
"name": "transactions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50,
"src": "9820:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction storage ref)"
}
},
"id": 797,
"indexExpression": {
"argumentTypes": null,
"id": 796,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 785,
"src": "9833:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9820:15:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"id": 798,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "executed",
"nodeType": "MemberAccess",
"referencedDeclaration": 75,
"src": "9820:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "9808:36:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 801,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "9807:38:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 807,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 802,
"name": "executed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 779,
"src": "9850:8:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 803,
"name": "transactions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50,
"src": "9862:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction storage ref)"
}
},
"id": 805,
"indexExpression": {
"argumentTypes": null,
"id": 804,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 785,
"src": "9875:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9862:15:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"id": 806,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "executed",
"nodeType": "MemberAccess",
"referencedDeclaration": 75,
"src": "9862:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "9850:36:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 808,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "9849:38:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "9807:80:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 814,
"nodeType": "IfStatement",
"src": "9803:96:0",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 812,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 810,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 782,
"src": "9889:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 811,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9898:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "9889:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 813,
"nodeType": "ExpressionStatement",
"src": "9889:10:0"
}
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 790,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 788,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 785,
"src": "9773:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 789,
"name": "transactionCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 67,
"src": "9777:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9773:20:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 815,
"initializationExpression": {
"assignments": [
785
],
"declarations": [
{
"constant": false,
"id": 785,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 815,
"src": "9758:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 784,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9758:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 787,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 786,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9770:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "9758:13:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 792,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "9795:3:0",
"subExpression": {
"argumentTypes": null,
"id": 791,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 785,
"src": "9795:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 793,
"nodeType": "ExpressionStatement",
"src": "9795:3:0"
},
"nodeType": "ForStatement",
"src": "9753:146:0"
}
]
},
"documentation": "@notice Get the total number of transactions after filers are applied.\n@param pending Include pending transactions.\n@param executed Include executed transactions.\n@return Total number of transactions after filters are applied.\n",
"id": 817,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getTransactionCount",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 780,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 777,
"name": "pending",
"nodeType": "VariableDeclaration",
"scope": 817,
"src": "9684:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 776,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9684:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 779,
"name": "executed",
"nodeType": "VariableDeclaration",
"scope": 817,
"src": "9698:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 778,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9698:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9683:29:0"
},
"returnParameters": {
"id": 783,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 782,
"name": "count",
"nodeType": "VariableDeclaration",
"scope": 817,
"src": "9734:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 781,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9734:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9733:15:0"
},
"scope": 1016,
"src": "9655:248:0",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 825,
"nodeType": "Block",
"src": "10051:21:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 823,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "10062:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 822,
"id": 824,
"nodeType": "Return",
"src": "10055:13:0"
}
]
},
"documentation": "@notice Get the list of owners.\n@return List of owner addresses.\n",
"id": 826,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 818,
"nodeType": "ParameterList",
"parameters": [],
"src": "10009:2:0"
},
"returnParameters": {
"id": 822,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 821,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 826,
"src": "10033:16:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 819,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10033:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 820,
"length": null,
"nodeType": "ArrayTypeName",
"src": "10033:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10032:18:0"
},
"scope": 1016,
"src": "9991:81:0",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 912,
"nodeType": "Block",
"src": "10354:371:0",
"statements": [
{
"assignments": [
837
],
"declarations": [
{
"constant": false,
"id": 837,
"name": "confirmationsTemp",
"nodeType": "VariableDeclaration",
"scope": 912,
"src": "10358:34:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 835,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10358:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 836,
"length": null,
"nodeType": "ArrayTypeName",
"src": "10358:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 844,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 841,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "10409:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 842,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10409:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 840,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "10395:13:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
"typeString": "function (uint256) pure returns (address[] memory)"
},
"typeName": {
"baseType": {
"id": 838,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10399:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 839,
"length": null,
"nodeType": "ArrayTypeName",
"src": "10399:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
}
},
"id": 843,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10395:28:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory",
"typeString": "address[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10358:65:0"
},
{
"assignments": [
846
],
"declarations": [
{
"constant": false,
"id": 846,
"name": "count",
"nodeType": "VariableDeclaration",
"scope": 912,
"src": "10427:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 845,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10427:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 848,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 847,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10443:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "10427:17:0"
},
{
"assignments": [
850
],
"declarations": [
{
"constant": false,
"id": 850,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 912,
"src": "10448:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 849,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10448:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 851,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "10448:9:0"
},
{
"body": {
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 863,
"name": "confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
"src": "10504:13:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(uint256 => mapping(address => bool))"
}
},
"id": 865,
"indexExpression": {
"argumentTypes": null,
"id": 864,
"name": "transactionId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "10518:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10504:28:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 869,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 866,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "10533:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 868,
"indexExpression": {
"argumentTypes": null,
"id": 867,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10540:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10533:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10504:39:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 883,
"nodeType": "IfStatement",
"src": "10500:109:0",
"trueBody": {
"id": 882,
"nodeType": "Block",
"src": "10545:64:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 876,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 870,
"name": "confirmationsTemp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 837,
"src": "10551:17:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 872,
"indexExpression": {
"argumentTypes": null,
"id": 871,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "10569:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10551:24:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 873,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "10578:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 875,
"indexExpression": {
"argumentTypes": null,
"id": 874,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10585:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10578:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10551:36:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 877,
"nodeType": "ExpressionStatement",
"src": "10551:36:0"
},
{
"expression": {
"argumentTypes": null,
"id": 880,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 878,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "10593:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 879,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10602:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10593:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 881,
"nodeType": "ExpressionStatement",
"src": "10593:10:0"
}
]
}
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 856,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10473:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 857,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "10477:6:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 858,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10477:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10473:17:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 884,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 854,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 852,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10466:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 853,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10470:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10466:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 855,
"nodeType": "ExpressionStatement",
"src": "10466:5:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 861,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "10492:3:0",
"subExpression": {
"argumentTypes": null,
"id": 860,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10492:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 862,
"nodeType": "ExpressionStatement",
"src": "10492:3:0"
},
"nodeType": "ForStatement",
"src": "10461:148:0"
},
{
"expression": {
"argumentTypes": null,
"id": 891,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 885,
"name": "_confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "10612:14:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 889,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "10643:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 888,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "10629:13:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
"typeString": "function (uint256) pure returns (address[] memory)"
},
"typeName": {
"baseType": {
"id": 886,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10633:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 887,
"length": null,
"nodeType": "ArrayTypeName",
"src": "10633:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
}
},
"id": 890,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10629:20:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory",
"typeString": "address[] memory"
}
},
"src": "10612:37:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 892,
"nodeType": "ExpressionStatement",
"src": "10612:37:0"
},
{
"body": {
"expression": {
"argumentTypes": null,
"id": 909,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 903,
"name": "_confirmations",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "10681:14:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 905,
"indexExpression": {
"argumentTypes": null,
"id": 904,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10696:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10681:17:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 906,
"name": "confirmationsTemp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 837,
"src": "10701:17:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 908,
"indexExpression": {
"argumentTypes": null,
"id": 907,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10719:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10701:20:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10681:40:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 910,
"nodeType": "ExpressionStatement",
"src": "10681:40:0"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 899,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 897,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10665:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 898,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 846,
"src": "10669:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10665:9:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 911,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 895,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 893,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10658:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 894,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10662:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10658:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 896,
"nodeType": "ExpressionStatement",
"src": "10658:5:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 901,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "10676:3:0",
"subExpression": {
"argumentTypes": null,
"id": 900,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 850,
"src": "10676:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 902,
"nodeType": "ExpressionStatement",
"src": "10676:3:0"
},
"nodeType": "ForStatement",
"src": "10653:68:0"
}
]
},
"documentation": "@notice Get the array with owner addresses, which confirmed transaction.\n@param transactionId Transaction ID.\n@return Returns array of owner addresses.\n",
"id": 913,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getConfirmations",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 829,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 828,
"name": "transactionId",
"nodeType": "VariableDeclaration",
"scope": 913,
"src": "10277:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 827,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10277:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10276:23:0"
},
"returnParameters": {
"id": 833,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 832,
"name": "_confirmations",
"nodeType": "VariableDeclaration",
"scope": 913,
"src": "10321:31:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 830,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10321:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 831,
"length": null,
"nodeType": "ArrayTypeName",
"src": "10321:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10320:33:0"
},
"scope": 1016,
"src": "10251:474:0",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1014,
"nodeType": "Block",
"src": "11218:426:0",
"statements": [
{
"assignments": [
930
],
"declarations": [
{
"constant": false,
"id": 930,
"name": "transactionIdsTemp",
"nodeType": "VariableDeclaration",
"scope": 1014,
"src": "11222:35:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 928,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11222:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 929,
"length": null,
"nodeType": "ArrayTypeName",
"src": "11222:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 936,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 934,
"name": "transactionCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 67,
"src": "11274:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 933,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "11260:13:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
"typeString": "function (uint256) pure returns (uint256[] memory)"
},
"typeName": {
"baseType": {
"id": 931,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11264:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 932,
"length": null,
"nodeType": "ArrayTypeName",
"src": "11264:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
}
},
"id": 935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11260:31:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory",
"typeString": "uint256[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "11222:69:0"
},
{
"assignments": [
938
],
"declarations": [
{
"constant": false,
"id": 938,
"name": "count",
"nodeType": "VariableDeclaration",
"scope": 1014,
"src": "11295:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 937,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11295:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 940,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 939,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11311:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "11295:17:0"
},
{
"assignments": [
942
],
"declarations": [
{
"constant": false,
"id": 942,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1014,
"src": "11316:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 941,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11316:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 943,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "11316:9:0"
},
{
"body": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 969,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 960,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 954,
"name": "pending",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 919,
"src": "11376:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"id": 959,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "11387:25:0",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 955,
"name": "transactions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50,
"src": "11388:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction storage ref)"
}
},
"id": 957,
"indexExpression": {
"argumentTypes": null,
"id": 956,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11401:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11388:15:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"id": 958,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "executed",
"nodeType": "MemberAccess",
"referencedDeclaration": 75,
"src": "11388:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "11376:36:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 961,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "11375:38:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 962,
"name": "executed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 921,
"src": "11418:8:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 963,
"name": "transactions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50,
"src": "11430:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Transaction_$76_storage_$",
"typeString": "mapping(uint256 => struct MultiSigWallet.Transaction storage ref)"
}
},
"id": 965,
"indexExpression": {
"argumentTypes": null,
"id": 964,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11443:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11430:15:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Transaction_$76_storage",
"typeString": "struct MultiSigWallet.Transaction storage ref"
}
},
"id": 966,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "executed",
"nodeType": "MemberAccess",
"referencedDeclaration": 75,
"src": "11430:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "11418:36:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 968,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "11417:38:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "11375:80:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 981,
"nodeType": "IfStatement",
"src": "11371:143:0",
"trueBody": {
"id": 980,
"nodeType": "Block",
"src": "11457:57:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 974,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 970,
"name": "transactionIdsTemp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 930,
"src": "11463:18:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 972,
"indexExpression": {
"argumentTypes": null,
"id": 971,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "11482:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "11463:25:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 973,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11491:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11463:29:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 975,
"nodeType": "ExpressionStatement",
"src": "11463:29:0"
},
{
"expression": {
"argumentTypes": null,
"id": 978,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 976,
"name": "count",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "11498:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 977,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11507:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "11498:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 979,
"nodeType": "ExpressionStatement",
"src": "11498:10:0"
}
]
}
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 950,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 948,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11341:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 949,
"name": "transactionCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 67,
"src": "11345:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11341:20:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 982,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 946,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 944,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11334:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 945,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11338:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "11334:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 947,
"nodeType": "ExpressionStatement",
"src": "11334:5:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 952,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "11363:3:0",
"subExpression": {
"argumentTypes": null,
"id": 951,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11363:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 953,
"nodeType": "ExpressionStatement",
"src": "11363:3:0"
},
"nodeType": "ForStatement",
"src": "11329:185:0"
},
{
"expression": {
"argumentTypes": null,
"id": 991,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 983,
"name": "_transactionIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 925,
"src": "11517:15:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 989,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 987,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 917,
"src": "11549:2:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 988,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 915,
"src": "11554:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11549:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 986,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "11535:13:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
"typeString": "function (uint256) pure returns (uint256[] memory)"
},
"typeName": {
"baseType": {
"id": 984,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11539:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 985,
"length": null,
"nodeType": "ArrayTypeName",
"src": "11539:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
}
},
"id": 990,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11535:24:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory",
"typeString": "uint256[] memory"
}
},
"src": "11517:42:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 992,
"nodeType": "ExpressionStatement",
"src": "11517:42:0"
},
{
"body": {
"expression": {
"argumentTypes": null,
"id": 1011,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1003,
"name": "_transactionIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 925,
"src": "11591:15:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 1007,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1006,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1004,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11607:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 1005,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 915,
"src": "11611:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11607:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "11591:25:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1008,
"name": "transactionIdsTemp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 930,
"src": "11619:18:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 1010,
"indexExpression": {
"argumentTypes": null,
"id": 1009,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11638:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11619:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11591:49:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1012,
"nodeType": "ExpressionStatement",
"src": "11591:49:0"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 999,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 997,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11578:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 998,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 917,
"src": "11582:2:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11578:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1013,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 995,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 993,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11568:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 994,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 915,
"src": "11572:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "11568:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 996,
"nodeType": "ExpressionStatement",
"src": "11568:8:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1001,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "11586:3:0",
"subExpression": {
"argumentTypes": null,
"id": 1000,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 942,
"src": "11586:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1002,
"nodeType": "ExpressionStatement",
"src": "11586:3:0"
},
"nodeType": "ForStatement",
"src": "11563:77:0"
}
]
},
"documentation": "@notice Get the list of transaction IDs in defined range.\n\t * @param from Index start position of transaction array.\n@param to Index end position of transaction array.\n@param pending Include pending transactions.\n@param executed Include executed transactions.\n\t * @return Returns array of transaction IDs.\n",
"id": 1015,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getTransactionIds",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 922,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 915,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 1015,
"src": "11100:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 914,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11100:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 917,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 1015,
"src": "11116:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 916,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11116:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 919,
"name": "pending",
"nodeType": "VariableDeclaration",
"scope": 1015,
"src": "11130:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 918,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "11130:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 921,
"name": "executed",
"nodeType": "VariableDeclaration",
"scope": 1015,
"src": "11146:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 920,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "11146:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11096:66:0"
},
"returnParameters": {
"id": 926,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 925,
"name": "_transactionIds",
"nodeType": "VariableDeclaration",
"scope": 1015,
"src": "11184:32:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 923,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11184:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 924,
"length": null,
"nodeType": "ArrayTypeName",
"src": "11184:9:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11183:34:0"
},
"scope": 1016,
"src": "11070:574:0",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1017,
"src": "202:11444:0"
}
],
"src": "0:11647:0"
},
"id": 0
}
}
}
}