build/contracts/Token.json
{
"contractName": "Token",
"abi": [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x06fdde03"
},
{
"constant": false,
"inputs": [
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x095ea7b3"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x18160ddd"
},
{
"constant": true,
"inputs": [],
"name": "INITIAL_SUPPLY",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x2ff2e9dc"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x313ce567"
},
{
"constant": false,
"inputs": [
{
"name": "spender",
"type": "address"
},
{
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x39509351"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x70a08231"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x715018a6"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x8da5cb5b"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x8f32d59b"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x95d89b41"
},
{
"constant": false,
"inputs": [
{
"name": "spender",
"type": "address"
},
{
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xa457c2d7"
},
{
"constant": false,
"inputs": [
{
"name": "token",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
}
],
"name": "drain",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xb184be81"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xdd62ed3e"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xf2fde38b"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor",
"signature": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event",
"signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event",
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event",
"signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xa9059cbb"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x23b872dd"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b506040805190810160405280600881526020017f486579546f6b656e0000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f4845590000000000000000000000000000000000000000000000000000000000815250601282600390805190602001906200009892919062000350565b508160049080519060200190620000b192919062000350565b5080600560006101000a81548160ff021916908360ff16021790555050505033600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620001b3336012600a0a633b9aca0002620001b9640100000000026401000000009004565b620003ff565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620001f657600080fd5b6200021b816002546200032e64010000000002620014fc179091906401000000009004565b60028190555062000282816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200032e64010000000002620014fc179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008082840190508381101515156200034657600080fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039357805160ff1916838001178555620003c4565b82800160010185558215620003c4579182015b82811115620003c3578251825591602001919060010190620003a6565b5b509050620003d39190620003d7565b5090565b620003fc91905b80821115620003f8576000816000905550600101620003de565b5090565b90565b61184a806200040f6000396000f3fe6080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100f6578063095ea7b31461018657806318160ddd146101f957806323b872dd146102245780632ff2e9dc146102b7578063313ce567146102e2578063395093511461031357806370a0823114610386578063715018a6146103eb5780638da5cb5b146104025780638f32d59b1461045957806395d89b4114610488578063a457c2d714610518578063a9059cbb1461058b578063b184be81146105fe578063dd62ed3e14610659578063f2fde38b146106de575b600080fd5b34801561010257600080fd5b5061010b61072f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014b578082015181840152602081019050610130565b50505050905090810190601f1680156101785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019257600080fd5b506101df600480360360408110156101a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107d1565b604051808215151515815260200191505060405180910390f35b34801561020557600080fd5b5061020e6108fe565b6040518082815260200191505060405180910390f35b34801561023057600080fd5b5061029d6004803603606081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b3480156102c357600080fd5b506102cc6109c4565b6040518082815260200191505060405180910390f35b3480156102ee57600080fd5b506102f76109d2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561031f57600080fd5b5061036c6004803603604081101561033657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e9565b604051808215151515815260200191505060405180910390f35b34801561039257600080fd5b506103d5600480360360208110156103a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c20565b6040518082815260200191505060405180910390f35b3480156103f757600080fd5b50610400610c68565b005b34801561040e57600080fd5b50610417610d3c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561046557600080fd5b5061046e610d66565b604051808215151515815260200191505060405180910390f35b34801561049457600080fd5b5061049d610dbe565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104dd5780820151818401526020810190506104c2565b50505050905090810190601f16801561050a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052457600080fd5b506105716004803603604081101561053b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e60565b604051808215151515815260200191505060405180910390f35b34801561059757600080fd5b506105e4600480360360408110156105ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611097565b604051808215151515815260200191505060405180910390f35b34801561060a57600080fd5b506106576004803603604081101561062157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611151565b005b34801561066557600080fd5b506106c86004803603604081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061124e565b6040518082815260200191505060405180910390f35b3480156106ea57600080fd5b5061072d6004803603602081101561070157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d5565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107c75780601f1061079c576101008083540402835291602001916107c7565b820191906000526020600020905b8154815290600101906020018083116107aa57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561080e57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b6000823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156109af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f63616e6e6f742073656e6420746f20636f6e747261637420697473656c66000081525060200191505060405180910390fd5b6109ba8585856112f4565b9150509392505050565b6012600a0a633b9aca000281565b6000600560009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a2657600080fd5b610ab582600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114fc90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c70610d66565b1515610c7b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e565780601f10610e2b57610100808354040283529160200191610e56565b820191906000526020600020905b815481529060010190602001808311610e3957829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610e9d57600080fd5b610f2c82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461151d90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f63616e6e6f742073656e6420746f20636f6e747261637420697473656c66000081525060200191505060405180910390fd5b611148848461153f565b91505092915050565b611159610d66565b151561116457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611188610d3c565b836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561120e57600080fd5b505af1158015611222573d6000803e3d6000fd5b505050506040513d602081101561123857600080fd5b8101908080519060200190929190505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112dd610d66565b15156112e857600080fd5b6112f181611556565b50565b600061138582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461151d90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611410848484611652565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600080828401905083811015151561151357600080fd5b8091505092915050565b600082821115151561152e57600080fd5b600082840390508091505092915050565b600061154c338484611652565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561159257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561168e57600080fd5b6116df816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461151d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611772816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114fc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fea165627a7a7230582032f4b1e22e472c284274f17a25d2e401aad6308c870176cc27db9357847d2e2c0029",
"deployedBytecode": "0x6080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100f6578063095ea7b31461018657806318160ddd146101f957806323b872dd146102245780632ff2e9dc146102b7578063313ce567146102e2578063395093511461031357806370a0823114610386578063715018a6146103eb5780638da5cb5b146104025780638f32d59b1461045957806395d89b4114610488578063a457c2d714610518578063a9059cbb1461058b578063b184be81146105fe578063dd62ed3e14610659578063f2fde38b146106de575b600080fd5b34801561010257600080fd5b5061010b61072f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014b578082015181840152602081019050610130565b50505050905090810190601f1680156101785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019257600080fd5b506101df600480360360408110156101a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107d1565b604051808215151515815260200191505060405180910390f35b34801561020557600080fd5b5061020e6108fe565b6040518082815260200191505060405180910390f35b34801561023057600080fd5b5061029d6004803603606081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b3480156102c357600080fd5b506102cc6109c4565b6040518082815260200191505060405180910390f35b3480156102ee57600080fd5b506102f76109d2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561031f57600080fd5b5061036c6004803603604081101561033657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e9565b604051808215151515815260200191505060405180910390f35b34801561039257600080fd5b506103d5600480360360208110156103a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c20565b6040518082815260200191505060405180910390f35b3480156103f757600080fd5b50610400610c68565b005b34801561040e57600080fd5b50610417610d3c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561046557600080fd5b5061046e610d66565b604051808215151515815260200191505060405180910390f35b34801561049457600080fd5b5061049d610dbe565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104dd5780820151818401526020810190506104c2565b50505050905090810190601f16801561050a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052457600080fd5b506105716004803603604081101561053b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e60565b604051808215151515815260200191505060405180910390f35b34801561059757600080fd5b506105e4600480360360408110156105ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611097565b604051808215151515815260200191505060405180910390f35b34801561060a57600080fd5b506106576004803603604081101561062157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611151565b005b34801561066557600080fd5b506106c86004803603604081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061124e565b6040518082815260200191505060405180910390f35b3480156106ea57600080fd5b5061072d6004803603602081101561070157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d5565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107c75780601f1061079c576101008083540402835291602001916107c7565b820191906000526020600020905b8154815290600101906020018083116107aa57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561080e57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b6000823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156109af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f63616e6e6f742073656e6420746f20636f6e747261637420697473656c66000081525060200191505060405180910390fd5b6109ba8585856112f4565b9150509392505050565b6012600a0a633b9aca000281565b6000600560009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a2657600080fd5b610ab582600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114fc90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c70610d66565b1515610c7b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e565780601f10610e2b57610100808354040283529160200191610e56565b820191906000526020600020905b815481529060010190602001808311610e3957829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610e9d57600080fd5b610f2c82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461151d90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f63616e6e6f742073656e6420746f20636f6e747261637420697473656c66000081525060200191505060405180910390fd5b611148848461153f565b91505092915050565b611159610d66565b151561116457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611188610d3c565b836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561120e57600080fd5b505af1158015611222573d6000803e3d6000fd5b505050506040513d602081101561123857600080fd5b8101908080519060200190929190505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112dd610d66565b15156112e857600080fd5b6112f181611556565b50565b600061138582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461151d90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611410848484611652565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600080828401905083811015151561151357600080fd5b8091505092915050565b600082821115151561152e57600080fd5b600082840390508091505092915050565b600061154c338484611652565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561159257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561168e57600080fd5b6116df816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461151d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611772816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114fc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fea165627a7a7230582032f4b1e22e472c284274f17a25d2e401aad6308c870176cc27db9357847d2e2c0029",
"sourceMap": "606:2038:2:-;;;1519:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;1519:128:2;405:163:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1589:2:2;501:4:22;493:5;:12;;;;;;;;;;;;:::i;:::-;;525:6;515:7;:16;;;;;;;;;;;;:::i;:::-;;553:8;541:9;;:20;;;;;;;;;;;;;;;;;;405:163;;;524:10:20;515:6;;:19;;;;;;;;;;;;;;;;;;582:6;;;;;;;;;;;549:40;;578:1;549:40;;;;;;;;;;;;1607:33:2;1613:10;974:2;960;:17;946:10;:32;1607:5;;;:33;;;:::i;:::-;606:2038;;6198:263:21;6291:1;6272:21;;:7;:21;;;;6264:30;;;;;;;;6320:23;6337:5;6320:12;;:16;;;;;;:23;;;;;:::i;:::-;6305:12;:38;;;;6374:29;6397:5;6374:9;:18;6384:7;6374:18;;;;;;;;;;;;;;;;:22;;;;;;:29;;;;;:::i;:::-;6353:9;:18;6363:7;6353:18;;;;;;;;;;;;;;;:50;;;;6439:7;6418:36;;6435:1;6418:36;;;6448:5;6418:36;;;;;;;;;;;;;;;;;;6198:263;;:::o;1431:145:19:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;606:2038:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
"deployedSourceMap": "606:2038:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;628:81:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;628:81:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;628:81:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2735:238:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2735:238:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;936:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;936:89:21;;;;;;;;;;;;;;;;;;;;;;;2422:220:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2422:220:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2422:220:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;905:73:2;;;;;;;;;;;;;;;;;;;;;;;930:81:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;930:81:22;;;;;;;;;;;;;;;;;;;;;;;;;;;4233:317:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4233:317:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4233:317:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1234:104:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1234:104:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:137:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:137:20;;;;;;659:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:77:20;;;;;;;;;;;;;;;;;;;;;;;;;;;979:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;979:90:20;;;;;;;;;;;;;;;;;;;;;;;;;;;771:85:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;771:85:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;771:85:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:327:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5058:327:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5058:327:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1907:184:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1907:184:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1907:184:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;392:149:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;392:149:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;392:149:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:129:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1669:129:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1669:129:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:107:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1655:107:20;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1655:107:20;;;;;;;;;;;;;;;;;;;;;;628:81:22;665:13;697:5;690:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;628:81;:::o;2735:238:21:-;2800:4;2843:1;2824:21;;:7;:21;;;;2816:30;;;;;;;;2889:5;2857:8;:20;2866:10;2857:20;;;;;;;;;;;;;;;:29;2878:7;2857:29;;;;;;;;;;;;;;;:37;;;;2930:7;2909:36;;2918:10;2909:36;;;2939:5;2909:36;;;;;;;;;;;;;;;;;;2962:4;2955:11;;2735:238;;;;:::o;936:89::-;980:7;1006:12;;999:19;;936:89;:::o;2422:220:2:-;2573:4;2552:2;1266:4;1252:19;;:2;:19;;;;1244:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2600:35;2619:4;2625:2;2629:5;2600:18;:35::i;:::-;2593:42;;2422:220;;;;;;:::o;905:73::-;974:2;960;:17;946:10;:32;905:73;:::o;930:81:22:-;971:5;995:9;;;;;;;;;;;988:16;;930:81;:::o;4233:317:21:-;4313:4;4356:1;4337:21;;:7;:21;;;;4329:30;;;;;;;;4402:45;4436:10;4402:8;:20;4411:10;4402:20;;;;;;;;;;;;;;;:29;4423:7;4402:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;4370:8;:20;4379:10;4370:20;;;;;;;;;;;;;;;:29;4391:7;4370:29;;;;;;;;;;;;;;;:77;;;;4483:7;4462:60;;4471:10;4462:60;;;4492:8;:20;4501:10;4492:20;;;;;;;;;;;;;;;:29;4513:7;4492:29;;;;;;;;;;;;;;;;4462:60;;;;;;;;;;;;;;;;;;4539:4;4532:11;;4233:317;;;;:::o;1234:104::-;1289:7;1315:9;:16;1325:5;1315:16;;;;;;;;;;;;;;;;1308:23;;1234:104;;;:::o;1347:137:20:-;863:9;:7;:9::i;:::-;855:18;;;;;;;;1445:1;1408:40;;1429:6;;;;;;;;;;;1408:40;;;;;;;;;;;;1475:1;1458:6;;:19;;;;;;;;;;;;;;;;;;1347:137::o;659:77::-;697:7;723:6;;;;;;;;;;;716:13;;659:77;:::o;979:90::-;1019:4;1056:6;;;;;;;;;;;1042:20;;:10;:20;;;1035:27;;979:90;:::o;771:85:22:-;810:13;842:7;835:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;771:85;:::o;5058:327:21:-;5143:4;5186:1;5167:21;;:7;:21;;;;5159:30;;;;;;;;5232:50;5266:15;5232:8;:20;5241:10;5232:20;;;;;;;;;;;;;;;:29;5253:7;5232:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;5200:8;:20;5209:10;5200:20;;;;;;;;;;;;;;;:29;5221:7;5200:29;;;;;;;;;;;;;;;:82;;;;5318:7;5297:60;;5306:10;5297:60;;;5327:8;:20;5336:10;5327:20;;;;;;;;;;;;;;;:29;5348:7;5327:29;;;;;;;;;;;;;;;;5297:60;;;;;;;;;;;;;;;;;;5374:4;5367:11;;5058:327;;;;:::o;1907:184:2:-;2032:4;2011:2;1266:4;1252:19;;:2;:19;;;;1244:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2059:25;2074:2;2078:5;2059:14;:25::i;:::-;2052:32;;1907:184;;;;;:::o;392:149:10:-;863:9:20;:7;:9::i;:::-;855:18;;;;;;;;503:5:10;:14;;;518:7;:5;:7::i;:::-;527:6;503:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;503:31:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;503:31:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;503:31:10;;;;;;;;;;;;;;;;;392:149;;:::o;1669:129:21:-;1741:7;1767:8;:15;1776:5;1767:15;;;;;;;;;;;;;;;:24;1783:7;1767:24;;;;;;;;;;;;;;;;1760:31;;1669:129;;;;:::o;1655:107:20:-;863:9;:7;:9::i;:::-;855:18;;;;;;;;1727:28;1746:8;1727:18;:28::i;:::-;1655:107;:::o;3436:294:21:-;3515:4;3560:37;3591:5;3560:8;:14;3569:4;3560:14;;;;;;;;;;;;;;;:26;3575:10;3560:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;3531:8;:14;3540:4;3531:14;;;;;;;;;;;;;;;:26;3546:10;3531:26;;;;;;;;;;;;;;;:66;;;;3607:26;3617:4;3623:2;3627:5;3607:9;:26::i;:::-;3663:10;3648:54;;3657:4;3648:54;;;3675:8;:14;3684:4;3675:14;;;;;;;;;;;;;;;:26;3690:10;3675:26;;;;;;;;;;;;;;;;3648:54;;;;;;;;;;;;;;;;;;3719:4;3712:11;;3436:294;;;;;:::o;1431:145:19:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;1205:::-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1962:137:21:-;2023:4;2039:32;2049:10;2061:2;2065:5;2039:9;:32::i;:::-;2088:4;2081:11;;1962:137;;;;:::o;1906:183:20:-;1999:1;1979:22;;:8;:22;;;;1971:31;;;;;;;;2046:8;2017:38;;2038:6;;;;;;;;;;;2017:38;;;;;;;;;;;;2074:8;2065:6;;:17;;;;;;;;;;;;;;;;;;1906:183;:::o;5599:256:21:-;5700:1;5686:16;;:2;:16;;;;5678:25;;;;;;;;5732:26;5752:5;5732:9;:15;5742:4;5732:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5714:9;:15;5724:4;5714:15;;;;;;;;;;;;;;;:44;;;;5784:24;5802:5;5784:9;:13;5794:2;5784:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5768:9;:13;5778:2;5768:13;;;;;;;;;;;;;;;:40;;;;5838:2;5823:25;;5832:4;5823:25;;;5842:5;5823:25;;;;;;;;;;;;;;;;;;5599:256;;;:::o",
"source": "/** @title Hey Token\n * @author Thomas Vanderstraeten - <thomas@hey.network>\n * Keep in mind that smart contracts still rely on experimental technology.\n */\n\npragma solidity ^0.5.0;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\";\nimport \"./utils/EmergencyERC20Drain.sol\";\n\n/** @title Hey Token\n * @dev A basic extension of the ERC20 standard to include additional security\n * recommendations, mostly from Consensys' Tokens Best Practices:\n * https://consensys.github.io/smart-contract-best-practices/tokens/\n */\ncontract Token is ERC20, ERC20Detailed, EmergencyERC20Drain {\n\n /* *** Token Parameters *** */\n\n /** @dev Equivalent to 1 billion tokens. Note that here we'd like to use\n * decimals() to be DRY (and follow OZ's SimpleToken example, however\n * this crashes the compiler).\n */\n uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(18));\n\n\n /* *** Modifiers *** */\n\n /** @dev Prevent sending of the token to invalid addresses. Note that the\n * address(0) check is already performed as part of the ERC20 standard.\n */\n modifier validDestination(\n address to\n )\n {\n require(to != address(this), \"cannot send to contract itself\");\n _;\n }\n\n\n /* *** Public Functions *** */\n\n /** @dev Constructor. Mints all tokens at once and give them to the contract\n * deployer. No further minting is subsequently possible.\n */\n constructor()\n public\n ERC20Detailed(\"HeyToken\", \"HEY\", 18)\n {\n _mint(msg.sender, INITIAL_SUPPLY);\n }\n\n /** @dev Overrides the standard ERC20 transfer to apply the validDestination\n * modifier. All else remains the same.\n * @param to The address which you want to transfer to\n * @param value The amount of tokens to be transferred\n */\n function transfer(\n address to,\n uint value\n )\n public\n validDestination(to)\n returns (bool)\n {\n return super.transfer(to, value);\n }\n\n /** @dev Overrides the standard ERC20 transferFrom to apply the validDestination\n * modifier. All else remains the same.\n * @param from The address which you want to send tokens from\n * @param to The address which you want to transfer to\n * @param value The amount of tokens to be transferred\n */\n function transferFrom(\n address from,\n address to,\n uint value\n )\n public\n validDestination(to)\n returns (bool)\n {\n return super.transferFrom(from, to, value);\n }\n}\n",
"sourcePath": "/Users/thomasvanderstraeten/code/hey/mainchain/contracts/Token.sol",
"ast": {
"absolutePath": "/Users/thomasvanderstraeten/code/hey/mainchain/contracts/Token.sol",
"exportedSymbols": {
"Token": [
257
]
},
"id": 258,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 166,
"literals": [
"solidity",
"^",
"0.5",
".0"
],
"nodeType": "PragmaDirective",
"src": "160:23:2"
},
{
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
"file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
"id": 167,
"nodeType": "ImportDirective",
"scope": 258,
"sourceUnit": 3088,
"src": "185:63:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol",
"file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol",
"id": 168,
"nodeType": "ImportDirective",
"scope": 258,
"sourceUnit": 3146,
"src": "249:71:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/thomasvanderstraeten/code/hey/mainchain/contracts/utils/EmergencyERC20Drain.sol",
"file": "./utils/EmergencyERC20Drain.sol",
"id": 169,
"nodeType": "ImportDirective",
"scope": 258,
"sourceUnit": 1488,
"src": "321:41:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 170,
"name": "ERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3087,
"src": "624:5:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$3087",
"typeString": "contract ERC20"
}
},
"id": 171,
"nodeType": "InheritanceSpecifier",
"src": "624:5:2"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 172,
"name": "ERC20Detailed",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3145,
"src": "631:13:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Detailed_$3145",
"typeString": "contract ERC20Detailed"
}
},
"id": 173,
"nodeType": "InheritanceSpecifier",
"src": "631:13:2"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 174,
"name": "EmergencyERC20Drain",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1487,
"src": "646:19:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_EmergencyERC20Drain_$1487",
"typeString": "contract EmergencyERC20Drain"
}
},
"id": 175,
"nodeType": "InheritanceSpecifier",
"src": "646:19:2"
}
],
"contractDependencies": [
1487,
2655,
3087,
3145,
3214
],
"contractKind": "contract",
"documentation": "@title Hey Token\n @dev A basic extension of the ERC20 standard to include additional security\n recommendations, mostly from Consensys' Tokens Best Practices:\n https://consensys.github.io/smart-contract-best-practices/tokens/",
"fullyImplemented": true,
"id": 257,
"linearizedBaseContracts": [
257,
1487,
2655,
3145,
3087,
3214
],
"name": "Token",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 185,
"name": "INITIAL_SUPPLY",
"nodeType": "VariableDeclaration",
"scope": 257,
"src": "905:73:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 176,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "905:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 184,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "31303030303030303030",
"id": 177,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "946:10:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1000000000_by_1",
"typeString": "int_const 1000000000"
},
"value": "1000000000"
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 182,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 178,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "960:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3138",
"id": 180,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "974:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
}
],
"id": 179,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "966:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": "uint256"
},
"id": 181,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "966:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "960:17:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 183,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "959:19:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "946:32:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"body": {
"id": 199,
"nodeType": "Block",
"src": "1234:90:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 194,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 190,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 187,
"src": "1252:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 192,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3441,
"src": "1266:4:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Token_$257",
"typeString": "contract Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Token_$257",
"typeString": "contract Token"
}
],
"id": 191,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1258:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 193,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1258:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1252:19:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "63616e6e6f742073656e6420746f20636f6e747261637420697473656c66",
"id": 195,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1273:32:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f44fa071a058a87872f5d1cf55b7c1a13e9c76ae3dc8ff6305e12d37c4a4d25c",
"typeString": "literal_string \"cannot send to contract itself\""
},
"value": "cannot send to contract itself"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f44fa071a058a87872f5d1cf55b7c1a13e9c76ae3dc8ff6305e12d37c4a4d25c",
"typeString": "literal_string \"cannot send to contract itself\""
}
],
"id": 189,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
3407,
3408
],
"referencedDeclaration": 3408,
"src": "1244:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 196,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1244:62:2",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 197,
"nodeType": "ExpressionStatement",
"src": "1244:62:2"
},
{
"id": 198,
"nodeType": "PlaceholderStatement",
"src": "1316:1:2"
}
]
},
"documentation": "@dev Prevent sending of the token to invalid addresses. Note that the\n address(0) check is already performed as part of the ERC20 standard.",
"id": 200,
"name": "validDestination",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 188,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 187,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 200,
"src": "1213:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 186,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1213:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1203:26:2"
},
"src": "1178:146:2",
"visibility": "internal"
},
{
"body": {
"id": 214,
"nodeType": "Block",
"src": "1597:50:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 209,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3404,
"src": "1613:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 210,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1613:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 211,
"name": "INITIAL_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 185,
"src": "1625:14:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 208,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3002,
"src": "1607:5:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 212,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1607:33:2",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 213,
"nodeType": "ExpressionStatement",
"src": "1607:33:2"
}
]
},
"documentation": "@dev Constructor. Mints all tokens at once and give them to the contract\n deployer. No further minting is subsequently possible.",
"id": 215,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"hexValue": "486579546f6b656e",
"id": 203,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1570:10:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_7835efc1679313c72641ef46b043ef304facd5a1eaed966345a60935b1f133a0",
"typeString": "literal_string \"HeyToken\""
},
"value": "HeyToken"
},
{
"argumentTypes": null,
"hexValue": "484559",
"id": 204,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1582:5:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b8eb6806e633910002b1722779bc61fd3c9bafb93bf92b099971eba445da656f",
"typeString": "literal_string \"HEY\""
},
"value": "HEY"
},
{
"argumentTypes": null,
"hexValue": "3138",
"id": 205,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1589:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
}
],
"id": 206,
"modifierName": {
"argumentTypes": null,
"id": 202,
"name": "ERC20Detailed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3145,
"src": "1556:13:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$3145_$",
"typeString": "type(contract ERC20Detailed)"
}
},
"nodeType": "ModifierInvocation",
"src": "1556:36:2"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 201,
"nodeType": "ParameterList",
"parameters": [],
"src": "1530:2:2"
},
"returnParameters": {
"id": 207,
"nodeType": "ParameterList",
"parameters": [],
"src": "1597:0:2"
},
"scope": 257,
"src": "1519:128:2",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 233,
"nodeType": "Block",
"src": "2042:49:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 229,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 217,
"src": "2074:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 230,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 219,
"src": "2078:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 227,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3442,
"src": "2059:5:2",
"typeDescriptions": {
"typeIdentifier": "t_super$_Token_$257",
"typeString": "contract super Token"
}
},
"id": 228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 2731,
"src": "2059:14:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) returns (bool)"
}
},
"id": 231,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2059:25:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 226,
"id": 232,
"nodeType": "Return",
"src": "2052:32:2"
}
]
},
"documentation": "@dev Overrides the standard ERC20 transfer to apply the validDestination\n modifier. All else remains the same.\n @param to The address which you want to transfer to\n @param value The amount of tokens to be transferred",
"id": 234,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 222,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 217,
"src": "2011:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 223,
"modifierName": {
"argumentTypes": null,
"id": 221,
"name": "validDestination",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 200,
"src": "1994:16:2",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "1994:20:2"
}
],
"name": "transfer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 220,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 217,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 234,
"src": "1934:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 216,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1934:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 219,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 234,
"src": "1954:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 218,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1954:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1924:46:2"
},
"returnParameters": {
"id": 226,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 225,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 234,
"src": "2032:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 224,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2032:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2031:6:2"
},
"scope": 257,
"src": "1907:184:2",
"stateMutability": "nonpayable",
"superFunction": 2731,
"visibility": "public"
},
{
"body": {
"id": 255,
"nodeType": "Block",
"src": "2583:59:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 250,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 236,
"src": "2619:4:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 251,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 238,
"src": "2625:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 252,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 240,
"src": "2629:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 248,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3442,
"src": "2600:5:2",
"typeDescriptions": {
"typeIdentifier": "t_super$_Token_$257",
"typeString": "contract super Token"
}
},
"id": 249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 2816,
"src": "2600:18:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) returns (bool)"
}
},
"id": 253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2600:35:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 247,
"id": 254,
"nodeType": "Return",
"src": "2593:42:2"
}
]
},
"documentation": "@dev Overrides the standard ERC20 transferFrom to apply the validDestination\n modifier. All else remains the same.\n @param from The address which you want to send tokens from\n @param to The address which you want to transfer to\n @param value The amount of tokens to be transferred",
"id": 256,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 243,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 238,
"src": "2552:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 244,
"modifierName": {
"argumentTypes": null,
"id": 242,
"name": "validDestination",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 200,
"src": "2535:16:2",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2535:20:2"
}
],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 241,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 236,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 256,
"src": "2453:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 235,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2453:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 238,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 256,
"src": "2475:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 237,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2475:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 240,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 256,
"src": "2495:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 239,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2495:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2443:68:2"
},
"returnParameters": {
"id": 247,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 246,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 256,
"src": "2573:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 245,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2573:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2572:6:2"
},
"scope": 257,
"src": "2422:220:2",
"stateMutability": "nonpayable",
"superFunction": 2816,
"visibility": "public"
}
],
"scope": 258,
"src": "606:2038:2"
}
],
"src": "160:2485:2"
},
"legacyAST": {
"absolutePath": "/Users/thomasvanderstraeten/code/hey/mainchain/contracts/Token.sol",
"exportedSymbols": {
"Token": [
257
]
},
"id": 258,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 166,
"literals": [
"solidity",
"^",
"0.5",
".0"
],
"nodeType": "PragmaDirective",
"src": "160:23:2"
},
{
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
"file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
"id": 167,
"nodeType": "ImportDirective",
"scope": 258,
"sourceUnit": 3088,
"src": "185:63:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol",
"file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol",
"id": 168,
"nodeType": "ImportDirective",
"scope": 258,
"sourceUnit": 3146,
"src": "249:71:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/thomasvanderstraeten/code/hey/mainchain/contracts/utils/EmergencyERC20Drain.sol",
"file": "./utils/EmergencyERC20Drain.sol",
"id": 169,
"nodeType": "ImportDirective",
"scope": 258,
"sourceUnit": 1488,
"src": "321:41:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 170,
"name": "ERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3087,
"src": "624:5:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$3087",
"typeString": "contract ERC20"
}
},
"id": 171,
"nodeType": "InheritanceSpecifier",
"src": "624:5:2"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 172,
"name": "ERC20Detailed",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3145,
"src": "631:13:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Detailed_$3145",
"typeString": "contract ERC20Detailed"
}
},
"id": 173,
"nodeType": "InheritanceSpecifier",
"src": "631:13:2"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 174,
"name": "EmergencyERC20Drain",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1487,
"src": "646:19:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_EmergencyERC20Drain_$1487",
"typeString": "contract EmergencyERC20Drain"
}
},
"id": 175,
"nodeType": "InheritanceSpecifier",
"src": "646:19:2"
}
],
"contractDependencies": [
1487,
2655,
3087,
3145,
3214
],
"contractKind": "contract",
"documentation": "@title Hey Token\n @dev A basic extension of the ERC20 standard to include additional security\n recommendations, mostly from Consensys' Tokens Best Practices:\n https://consensys.github.io/smart-contract-best-practices/tokens/",
"fullyImplemented": true,
"id": 257,
"linearizedBaseContracts": [
257,
1487,
2655,
3145,
3087,
3214
],
"name": "Token",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 185,
"name": "INITIAL_SUPPLY",
"nodeType": "VariableDeclaration",
"scope": 257,
"src": "905:73:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 176,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "905:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 184,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "31303030303030303030",
"id": 177,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "946:10:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1000000000_by_1",
"typeString": "int_const 1000000000"
},
"value": "1000000000"
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 182,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 178,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "960:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3138",
"id": 180,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "974:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
}
],
"id": 179,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "966:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": "uint256"
},
"id": 181,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "966:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "960:17:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 183,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "959:19:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "946:32:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"body": {
"id": 199,
"nodeType": "Block",
"src": "1234:90:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 194,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 190,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 187,
"src": "1252:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 192,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3441,
"src": "1266:4:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Token_$257",
"typeString": "contract Token"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Token_$257",
"typeString": "contract Token"
}
],
"id": 191,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1258:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 193,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1258:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1252:19:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "63616e6e6f742073656e6420746f20636f6e747261637420697473656c66",
"id": 195,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1273:32:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f44fa071a058a87872f5d1cf55b7c1a13e9c76ae3dc8ff6305e12d37c4a4d25c",
"typeString": "literal_string \"cannot send to contract itself\""
},
"value": "cannot send to contract itself"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f44fa071a058a87872f5d1cf55b7c1a13e9c76ae3dc8ff6305e12d37c4a4d25c",
"typeString": "literal_string \"cannot send to contract itself\""
}
],
"id": 189,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
3407,
3408
],
"referencedDeclaration": 3408,
"src": "1244:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 196,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1244:62:2",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 197,
"nodeType": "ExpressionStatement",
"src": "1244:62:2"
},
{
"id": 198,
"nodeType": "PlaceholderStatement",
"src": "1316:1:2"
}
]
},
"documentation": "@dev Prevent sending of the token to invalid addresses. Note that the\n address(0) check is already performed as part of the ERC20 standard.",
"id": 200,
"name": "validDestination",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 188,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 187,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 200,
"src": "1213:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 186,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1213:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1203:26:2"
},
"src": "1178:146:2",
"visibility": "internal"
},
{
"body": {
"id": 214,
"nodeType": "Block",
"src": "1597:50:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 209,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3404,
"src": "1613:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 210,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1613:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 211,
"name": "INITIAL_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 185,
"src": "1625:14:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 208,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3002,
"src": "1607:5:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 212,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1607:33:2",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 213,
"nodeType": "ExpressionStatement",
"src": "1607:33:2"
}
]
},
"documentation": "@dev Constructor. Mints all tokens at once and give them to the contract\n deployer. No further minting is subsequently possible.",
"id": 215,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"hexValue": "486579546f6b656e",
"id": 203,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1570:10:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_7835efc1679313c72641ef46b043ef304facd5a1eaed966345a60935b1f133a0",
"typeString": "literal_string \"HeyToken\""
},
"value": "HeyToken"
},
{
"argumentTypes": null,
"hexValue": "484559",
"id": 204,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1582:5:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b8eb6806e633910002b1722779bc61fd3c9bafb93bf92b099971eba445da656f",
"typeString": "literal_string \"HEY\""
},
"value": "HEY"
},
{
"argumentTypes": null,
"hexValue": "3138",
"id": 205,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1589:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
}
],
"id": 206,
"modifierName": {
"argumentTypes": null,
"id": 202,
"name": "ERC20Detailed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3145,
"src": "1556:13:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$3145_$",
"typeString": "type(contract ERC20Detailed)"
}
},
"nodeType": "ModifierInvocation",
"src": "1556:36:2"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 201,
"nodeType": "ParameterList",
"parameters": [],
"src": "1530:2:2"
},
"returnParameters": {
"id": 207,
"nodeType": "ParameterList",
"parameters": [],
"src": "1597:0:2"
},
"scope": 257,
"src": "1519:128:2",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 233,
"nodeType": "Block",
"src": "2042:49:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 229,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 217,
"src": "2074:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 230,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 219,
"src": "2078:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 227,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3442,
"src": "2059:5:2",
"typeDescriptions": {
"typeIdentifier": "t_super$_Token_$257",
"typeString": "contract super Token"
}
},
"id": 228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 2731,
"src": "2059:14:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) returns (bool)"
}
},
"id": 231,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2059:25:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 226,
"id": 232,
"nodeType": "Return",
"src": "2052:32:2"
}
]
},
"documentation": "@dev Overrides the standard ERC20 transfer to apply the validDestination\n modifier. All else remains the same.\n @param to The address which you want to transfer to\n @param value The amount of tokens to be transferred",
"id": 234,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 222,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 217,
"src": "2011:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 223,
"modifierName": {
"argumentTypes": null,
"id": 221,
"name": "validDestination",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 200,
"src": "1994:16:2",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "1994:20:2"
}
],
"name": "transfer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 220,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 217,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 234,
"src": "1934:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 216,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1934:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 219,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 234,
"src": "1954:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 218,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1954:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1924:46:2"
},
"returnParameters": {
"id": 226,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 225,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 234,
"src": "2032:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 224,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2032:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2031:6:2"
},
"scope": 257,
"src": "1907:184:2",
"stateMutability": "nonpayable",
"superFunction": 2731,
"visibility": "public"
},
{
"body": {
"id": 255,
"nodeType": "Block",
"src": "2583:59:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 250,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 236,
"src": "2619:4:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 251,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 238,
"src": "2625:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 252,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 240,
"src": "2629:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 248,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3442,
"src": "2600:5:2",
"typeDescriptions": {
"typeIdentifier": "t_super$_Token_$257",
"typeString": "contract super Token"
}
},
"id": 249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 2816,
"src": "2600:18:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) returns (bool)"
}
},
"id": 253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2600:35:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 247,
"id": 254,
"nodeType": "Return",
"src": "2593:42:2"
}
]
},
"documentation": "@dev Overrides the standard ERC20 transferFrom to apply the validDestination\n modifier. All else remains the same.\n @param from The address which you want to send tokens from\n @param to The address which you want to transfer to\n @param value The amount of tokens to be transferred",
"id": 256,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 243,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 238,
"src": "2552:2:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 244,
"modifierName": {
"argumentTypes": null,
"id": 242,
"name": "validDestination",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 200,
"src": "2535:16:2",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2535:20:2"
}
],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 241,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 236,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 256,
"src": "2453:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 235,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2453:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 238,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 256,
"src": "2475:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 237,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2475:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 240,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 256,
"src": "2495:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 239,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2495:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2443:68:2"
},
"returnParameters": {
"id": 247,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 246,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 256,
"src": "2573:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 245,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2573:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2572:6:2"
},
"scope": 257,
"src": "2422:220:2",
"stateMutability": "nonpayable",
"superFunction": 2816,
"visibility": "public"
}
],
"scope": 258,
"src": "606:2038:2"
}
],
"src": "160:2485:2"
},
"compiler": {
"name": "solc",
"version": "0.5.0+commit.1d4f565a.Emscripten.clang"
},
"networks": {
"1": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event",
"signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event",
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event",
"signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
}
},
"links": {},
"address": "0xe9C9e7E1DaBea830C958C39D6b25964a6F52143A",
"transactionHash": "0x80c518d2ba3503b5e30ed973ae7b1214af95ee2129da34394dbdbcc9a3e24e4f"
},
"3": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event",
"signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event",
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event",
"signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
}
},
"links": {},
"address": "0x5aEc40A09621E941425517cfC23AB36fd93cFbeE",
"transactionHash": "0x46a0538100e42076364ba625bdaad93134bf36309a2ac1e05a032b5a29e561cb"
},
"1543575271380": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0x3429cbdbd248d270650dcf9fafca43c0983d126d",
"transactionHash": "0x36377268dcfb967cf04ab32484b9343917fcdcfd1bc0f2a42bd9653ecbaf9465"
},
"1543575362424": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0x95d08723206bc807e9923b45a3f40c21b8121286",
"transactionHash": "0x36377268dcfb967cf04ab32484b9343917fcdcfd1bc0f2a42bd9653ecbaf9465"
},
"1543582128197": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0x996b17b92dcea64fcc9868ae57f60d2f3ce5083d",
"transactionHash": "0x36377268dcfb967cf04ab32484b9343917fcdcfd1bc0f2a42bd9653ecbaf9465"
},
"1543582216163": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0x746fc3d68c8b1379f9d374f2c8a76c6ed0ad8549",
"transactionHash": "0x36377268dcfb967cf04ab32484b9343917fcdcfd1bc0f2a42bd9653ecbaf9465"
},
"1543582360302": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0x9611ae1e6887975afcdbc39097c4ab7089968e34",
"transactionHash": "0x912822dc7db5e0c5569effe75de45e826c2af0f94058c916f0c7790c5984cb71"
},
"1543583319709": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0x319da2204349a86ce7abbd9967c9fde6b4195e87",
"transactionHash": "0x1157a9fedccfffa114c9628dcf21b1eff19b52d3c85f26194cb64cbeedef974d"
},
"1543583471841": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0x63dcfb0c413bb40c45e0c24d9895782a793f554c",
"transactionHash": "0xbeb072a03146fe68b710777738f3f9653d659c6b7add7f65a0a090462bb01151"
},
"1543584071380": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0x07a788fbb8e5203fb585fcf50468d17d0cba5015",
"transactionHash": "0x36377268dcfb967cf04ab32484b9343917fcdcfd1bc0f2a42bd9653ecbaf9465"
},
"1543585014304": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
},
"links": {},
"address": "0xc37da20389b3186239f7e10e8da35788247e4d67",
"transactionHash": "0x71f8efd56c50239f6a58808cf83d16c2281207278fea85ecabfb25266afd87a9"
},
"1551347249023": {
"events": {
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event",
"signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
},
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event",
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event",
"signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
}
},
"links": {},
"address": "0x497A9E141529996138e1EC4c4BDEe7447b8cED3F",
"transactionHash": "0x2f07a0c4ae8f293a91f40d265df0ba6503a1ace0f467cf4024dcc781cc1fef20"
}
},
"schemaVersion": "3.0.2",
"updatedAt": "2019-02-28T17:08:06.004Z",
"devdoc": {
"details": "A basic extension of the ERC20 standard to include additional security recommendations, mostly from Consensys' Tokens Best Practices: https://consensys.github.io/smart-contract-best-practices/tokens/",
"methods": {
"allowance(address,address)": {
"details": "Function to check the amount of tokens that an owner allowed to a spender.",
"params": {
"owner": "address The address which owns the funds.",
"spender": "address The address which will spend the funds."
},
"return": "A uint256 specifying the amount of tokens still available for the spender."
},
"approve(address,uint256)": {
"details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729",
"params": {
"spender": "The address which will spend the funds.",
"value": "The amount of tokens to be spent."
}
},
"balanceOf(address)": {
"details": "Gets the balance of the specified address.",
"params": {
"owner": "The address to query the balance of."
},
"return": "An uint256 representing the amount owned by the passed address."
},
"constructor": {
"details": "Constructor. Mints all tokens at once and give them to the contract deployer. No further minting is subsequently possible."
},
"decimals()": {
"return": "the number of decimals of the token."
},
"decreaseAllowance(address,uint256)": {
"details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.",
"params": {
"spender": "The address which will spend the funds.",
"subtractedValue": "The amount of tokens to decrease the allowance by."
}
},
"drain(address,uint256)": {
"details": "Allows owner to withdraw any ERC20 tokens sent by mistake to the contract. Taken from Zilliqa's token contract: https://github.com/Zilliqa/Zilliqa-ERC20-Token"
},
"increaseAllowance(address,uint256)": {
"details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.",
"params": {
"addedValue": "The amount of tokens to increase the allowance by.",
"spender": "The address which will spend the funds."
}
},
"isOwner()": {
"return": "true if `msg.sender` is the owner of the contract."
},
"name()": {
"return": "the name of the token."
},
"owner()": {
"return": "the address of the owner."
},
"renounceOwnership()": {
"details": "Allows the current owner to relinquish control of the contract."
},
"symbol()": {
"return": "the symbol of the token."
},
"totalSupply()": {
"details": "Total number of tokens in existence"
},
"transfer(address,uint256)": {
"details": "Overrides the standard ERC20 transfer to apply the validDestination modifier. All else remains the same.",
"params": {
"to": "The address which you want to transfer to",
"value": "The amount of tokens to be transferred"
}
},
"transferFrom(address,address,uint256)": {
"details": "Overrides the standard ERC20 transferFrom to apply the validDestination modifier. All else remains the same.",
"params": {
"from": "The address which you want to send tokens from",
"to": "The address which you want to transfer to",
"value": "The amount of tokens to be transferred"
}
},
"transferOwnership(address)": {
"details": "Allows the current owner to transfer control of the contract to a newOwner.",
"params": {
"newOwner": "The address to transfer ownership to."
}
}
},
"title": "Hey Token"
},
"userdoc": {
"methods": {
"renounceOwnership()": {
"notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
}
}
}
}