cic-internal-integration/apps/cic-eth/tests/testdata/bancor/SmartToken.json

6049 lines
264 KiB
JSON

{
"contractName": "SmartToken",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "_decimals",
"type": "uint8"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "Destruction",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "Issuance",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "acceptOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "newOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "transfersEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "withdrawTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_disable",
"type": "bool"
}
],
"name": "disableTransfers",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "issue",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "destroy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Destruction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Issuance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"destroy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_disable\",\"type\":\"bool\"}],\"name\":\"disableTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"issue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transfersEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Smart Token 'Owned' is specified here for readability reasons\",\"events\":{\"Destruction(uint256)\":{\"details\":\"triggered when the total supply is decreased\",\"params\":{\"_amount\":\"amount that gets removed from the supply\"}},\"Issuance(uint256)\":{\"details\":\"triggered when the total supply is increased\",\"params\":{\"_amount\":\"amount that gets added to the supply\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"approve(address,uint256)\":{\"details\":\"allows another account/contract to transfers tokens on behalf of the caller throws on any error rather then return a false flag to minimize user errors also, to minimize the risk of the approve/transferFrom attack vector (see https://docs.google.com/document/d/1YLPtQxZu1UAvO9cZ1O2RPXBbT0mooh4DYKjA_jp-RLM/), approve has to be called twice in 2 separate transactions - once to change the allowance to 0 and secondly to change it to the new allowance value\",\"params\":{\"_spender\":\"approved address\",\"_value\":\"allowance amount\"},\"returns\":{\"_0\":\"true if the approval was successful, false if it wasn't\"}},\"constructor\":{\"details\":\"initializes a new SmartToken instance\",\"params\":{\"_decimals\":\"for display purposes only\",\"_name\":\"token name\",\"_symbol\":\"token short symbol, minimum 1 character\"}},\"destroy(address,uint256)\":{\"details\":\"removes tokens from the given account and decreases the token supply can only be called by the contract owner\",\"params\":{\"_amount\":\"amount to decrease the supply by\",\"_from\":\"account to remove the amount from\"}},\"disableTransfers(bool)\":{\"details\":\"disables/enables transfers can only be called by the contract owner\",\"params\":{\"_disable\":\"true to disable transfers, false to enable them\"}},\"issue(address,uint256)\":{\"details\":\"increases the token supply and sends the new tokens to the given account can only be called by the contract owner\",\"params\":{\"_amount\":\"amount to increase the supply by\",\"_to\":\"account to receive the new amount\"}},\"transfer(address,uint256)\":{\"details\":\"send coins throws on any error rather then return a false flag to minimize user errors in addition to the standard checks, the function throws if transfers are disabled\",\"params\":{\"_to\":\"target address\",\"_value\":\"transfer amount\"},\"returns\":{\"_0\":\"true if the transfer was successful, false if it wasn't\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"an account/contract attempts to get the coins throws on any error rather then return a false flag to minimize user errors in addition to the standard checks, the function throws if transfers are disabled\",\"params\":{\"_from\":\"source address\",\"_to\":\"target address\",\"_value\":\"transfer amount\"},\"returns\":{\"_0\":\"true if the transfer was successful, false if it wasn't\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"withdrawTokens(address,address,uint256)\":{\"details\":\"withdraws tokens held by the contract and sends them to an account can only be called by the owner\",\"params\":{\"_amount\":\"amount to withdraw\",\"_to\":\"account to receive the new amount\",\"_token\":\"ERC20 token contract address\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol\":\"SmartToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol\":{\"keccak256\":\"0x9448cdbe90293fb5c1a0808b77af8754a1025b59c45f432eee01f659361a6115\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1ef2bb2e1543c9324daf7f3fd086a57efb45b89f3d62b9d7a9fc78c138d24dbc\",\"dweb:/ipfs/QmVcXDib3K6xYJMBNxawmo4krJGiDfxb5oL64Lc3pi14XK\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/ERC20Token.sol\":{\"keccak256\":\"0xf64a993754bb4afcdfda9e8fe377c2c8a198f23b39e954f5ee3f9f2825958ebd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9ee0b7fd792a589b8321f1f13686fe5d5ae949288b124c1a57e2ad895c87e915\",\"dweb:/ipfs/QmTCRx2G6rJAhX9FyYkV4Gx69owVDYSkjNGNFrJGQ7Xnik\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol\":{\"keccak256\":\"0xf5036eb68eef5c9e8c8065c359e4a6f360a1ff1371129dc6a01ebcab29f4c034\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://99f904a959fa0c1237afc6e02342300be0e5eb2d9d96e9f8cd29dd2c52d1837b\",\"dweb:/ipfs/QmNxF79PB1fDsWDpCurH97mRVMgm56jACjf2KNj8syw4DG\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IERC20Token.sol\":{\"keccak256\":\"0xe6f988c3156e88258474526a541d5a42b6a9adae98b04177a059d9f723bc82cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9a6eb77a5b9ce70995a11a6e48ac3985a4c70896fe5fe04d46146ad7c1c83ea3\",\"dweb:/ipfs/QmYvGSveZFG51tghwkVuu6eK9Jy8frHpfLxHTMyvNZN461\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol\":{\"keccak256\":\"0x5cfc15e7a23a9872059b0cea4d2ae902c3fc074a39e1c645036ce38ad47881ec\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://890ee09d24de5778e34c4c27d1377d83d378e8f4a13fcb94d5102f61d4749cce\",\"dweb:/ipfs/QmT89f61fmsUN1BVdebKxUc5VU7sitiP33LNk7TTtF18oj\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/SafeMath.sol\":{\"keccak256\":\"0x1ab7391a19ca8a3ad2f3c4a1074e080d4d76dfdb834637bdd0c1e6b6acdf28af\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://d6d8c99621ca884b72da2d84eddfec8ec8c5533915691d6eec94a07adf445608\",\"dweb:/ipfs/QmaXr6DN7VbfxfMn3PsTy7SAMgZVVXbdeaw11BsAjVL2x1\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol\":{\"keccak256\":\"0xf65b87e3bf3343e368da67878c19d1a043a1025b10e9053d3562b53b4aa447fe\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b85c5d96642c14c53b8d5062eecd4d27d3bdb457d1d0f130900763a75a512eb7\",\"dweb:/ipfs/QmUHtbqC1khqnRZXYn11Aykus4m5e9MVNUWqorxhpr5ipJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol\":{\"keccak256\":\"0xac6bc102eff6c1bb8c1bb4466eab50322c7c101e2e33d577dd3035f106627577\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9fdbda2d4509260ca3dd43654bdaea07ef18a5e04213ff16e38e3b4abad78a5f\",\"dweb:/ipfs/QmPb69rzX1DwDeEhhfzqQNS3U2bfGcFjXNaV5ffHsZHzfP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]}},\"version\":1}",
"bytecode": "0x60806040526008805460ff191660011790553480156200001e57600080fd5b506040516200123338038062001233833981810160405260608110156200004457600080fd5b81019080805160405193929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260200151600080546001600160a01b031916331781558551919350859250849184919062000211576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b60008351116200025d576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b835162000272906002906020870190620002bf565b50825162000288906003906020860190620002bf565b506004805460ff191660ff9390931692909217909155600581905533600090815260066020526040902055506200035b9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030257805160ff191683800117855562000332565b8280016001018555821562000332579182015b828111156200033257825182559160200191906001019062000315565b506200034092915062000344565b5090565b5b8082111562000340576000815560010162000345565b610ec8806200036b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063a9059cbb11610071578063a9059cbb14610379578063bef97c87146103a5578063d4ee1d90146103ad578063dd62ed3e146103b5578063f2fde38b146103e357610121565b806379ba5097146102ed578063867904b4146102f55780638da5cb5b1461032157806395d89b4114610345578063a24835d11461034d57610121565b806323b872dd116100f457806323b872dd1461021e578063313ce5671461025457806354fd4d50146102725780635e35359e1461029157806370a08231146102c757610121565b806306fdde0314610126578063095ea7b3146101a35780631608f18f146101e357806318160ddd14610204575b600080fd5b61012e610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610494565b604080519115158252519081900360200190f35b610202600480360360208110156101f957600080fd5b5035151561057c565b005b61020c610596565b60408051918252519081900360200190f35b6101cf6004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561059c565b61025c6105b9565b6040805160ff9092168252519081900360200190f35b61027a6105c2565b6040805161ffff9092168252519081900360200190f35b610202600480360360608110156102a757600080fd5b506001600160a01b038135811691602081013590911690604001356105c7565b61020c600480360360208110156102dd57600080fd5b50356001600160a01b0316610600565b610202610612565b6102026004803603604081101561030b57600080fd5b506001600160a01b0381351690602001356106c9565b61032961079f565b604080516001600160a01b039092168252519081900360200190f35b61012e6107ae565b6102026004803603604081101561036357600080fd5b506001600160a01b038135169060200135610809565b6101cf6004803603604081101561038f57600080fd5b506001600160a01b0381351690602001356108c3565b6101cf6108de565b6103296108e7565b61020c600480360360408110156103cb57600080fd5b506001600160a01b03813581169160200135166108f6565b610202600480360360208110156103f957600080fd5b50356001600160a01b0316610913565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505081565b6000826104a081610991565b8215806104ce57503360009081526007602090815260408083206001600160a01b0388168452909152902054155b610514576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105846109e5565b6008805460ff19169115919091179055565b60055481565b60006105a6610a3a565b6105b1848484610a8a565b949350505050565b60045460ff1681565b600481565b6105cf6109e5565b826105d981610991565b826105e381610991565b836105ed81610b89565b6105f8868686610bdd565b505050505050565b60066020526000908152604090205481565b6001546001600160a01b03163314610665576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6106d16109e5565b816106db81610991565b826106e581610b89565b6005546106f29084610d3d565b6005556001600160a01b0384166000908152600660205260409020546107189084610d3d565b6001600160a01b03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610e738339815191529181900360200190a350505050565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b6108116109e5565b6001600160a01b0382166000908152600660205260409020546108349082610d86565b6001600160a01b03831660009081526006602052604090205560055461085a9082610d86565b6005556040805182815290516000916001600160a01b03851691600080516020610e738339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006108cd610a3a565b6108d78383610dd3565b9392505050565b60085460ff1681565b6001546001600160a01b031681565b600760209081526000928352604080842090915290825290205481565b61091b6109e5565b6000546001600160a01b038281169116141561096f576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e2576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6000546001600160a01b03163314610a38576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60085460ff16610a38576040805162461bcd60e51b815260206004820152601660248201527511549497d514905394d1915494d7d11254d05093115160521b604482015290519081900360640190fd5b600083610a9681610991565b83610aa081610991565b6001600160a01b0386166000908152600760209081526040808320338452909152902054610ace9085610d86565b6001600160a01b038716600081815260076020908152604080832033845282528083209490945591815260069091522054610b099085610d86565b6001600160a01b038088166000908152600660205260408082209390935590871681522054610b389085610d3d565b6001600160a01b0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610e7383398151915292918290030190a350600195945050505050565b6001600160a01b0381163014156109e2576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c5a5780518252601f199092019160209182019101610c3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cbc576040519150601f19603f3d011682016040523d82523d6000602084013e610cc1565b606091505b5091509150818015610cef575080511580610cef5750808060200190516020811015610cec57600080fd5b50515b610d36576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b6000828201838110156108d7576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610dcd576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610ddf81610991565b33600090815260066020526040902054610df99084610d86565b33600090815260066020526040808220929092556001600160a01b03861681522054610e259084610d3d565b6001600160a01b038516600081815260066020908152604091829020939093558051868152905191923392600080516020610e738339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d062eb319db2db22c11903c935b69a66b9513479c3c65c965f0b19eb73aa4f9464736f6c634300060c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063a9059cbb11610071578063a9059cbb14610379578063bef97c87146103a5578063d4ee1d90146103ad578063dd62ed3e146103b5578063f2fde38b146103e357610121565b806379ba5097146102ed578063867904b4146102f55780638da5cb5b1461032157806395d89b4114610345578063a24835d11461034d57610121565b806323b872dd116100f457806323b872dd1461021e578063313ce5671461025457806354fd4d50146102725780635e35359e1461029157806370a08231146102c757610121565b806306fdde0314610126578063095ea7b3146101a35780631608f18f146101e357806318160ddd14610204575b600080fd5b61012e610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610494565b604080519115158252519081900360200190f35b610202600480360360208110156101f957600080fd5b5035151561057c565b005b61020c610596565b60408051918252519081900360200190f35b6101cf6004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561059c565b61025c6105b9565b6040805160ff9092168252519081900360200190f35b61027a6105c2565b6040805161ffff9092168252519081900360200190f35b610202600480360360608110156102a757600080fd5b506001600160a01b038135811691602081013590911690604001356105c7565b61020c600480360360208110156102dd57600080fd5b50356001600160a01b0316610600565b610202610612565b6102026004803603604081101561030b57600080fd5b506001600160a01b0381351690602001356106c9565b61032961079f565b604080516001600160a01b039092168252519081900360200190f35b61012e6107ae565b6102026004803603604081101561036357600080fd5b506001600160a01b038135169060200135610809565b6101cf6004803603604081101561038f57600080fd5b506001600160a01b0381351690602001356108c3565b6101cf6108de565b6103296108e7565b61020c600480360360408110156103cb57600080fd5b506001600160a01b03813581169160200135166108f6565b610202600480360360208110156103f957600080fd5b50356001600160a01b0316610913565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505081565b6000826104a081610991565b8215806104ce57503360009081526007602090815260408083206001600160a01b0388168452909152902054155b610514576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105846109e5565b6008805460ff19169115919091179055565b60055481565b60006105a6610a3a565b6105b1848484610a8a565b949350505050565b60045460ff1681565b600481565b6105cf6109e5565b826105d981610991565b826105e381610991565b836105ed81610b89565b6105f8868686610bdd565b505050505050565b60066020526000908152604090205481565b6001546001600160a01b03163314610665576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6106d16109e5565b816106db81610991565b826106e581610b89565b6005546106f29084610d3d565b6005556001600160a01b0384166000908152600660205260409020546107189084610d3d565b6001600160a01b03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610e738339815191529181900360200190a350505050565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b6108116109e5565b6001600160a01b0382166000908152600660205260409020546108349082610d86565b6001600160a01b03831660009081526006602052604090205560055461085a9082610d86565b6005556040805182815290516000916001600160a01b03851691600080516020610e738339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006108cd610a3a565b6108d78383610dd3565b9392505050565b60085460ff1681565b6001546001600160a01b031681565b600760209081526000928352604080842090915290825290205481565b61091b6109e5565b6000546001600160a01b038281169116141561096f576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e2576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6000546001600160a01b03163314610a38576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60085460ff16610a38576040805162461bcd60e51b815260206004820152601660248201527511549497d514905394d1915494d7d11254d05093115160521b604482015290519081900360640190fd5b600083610a9681610991565b83610aa081610991565b6001600160a01b0386166000908152600760209081526040808320338452909152902054610ace9085610d86565b6001600160a01b038716600081815260076020908152604080832033845282528083209490945591815260069091522054610b099085610d86565b6001600160a01b038088166000908152600660205260408082209390935590871681522054610b389085610d3d565b6001600160a01b0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610e7383398151915292918290030190a350600195945050505050565b6001600160a01b0381163014156109e2576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c5a5780518252601f199092019160209182019101610c3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cbc576040519150601f19603f3d011682016040523d82523d6000602084013e610cc1565b606091505b5091509150818015610cef575080511580610cef5750808060200190516020811015610cec57600080fd5b50515b610d36576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b6000828201838110156108d7576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610dcd576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610ddf81610991565b33600090815260066020526040902054610df99084610d86565b33600090815260066020526040808220929092556001600160a01b03861681522054610e259084610d3d565b6001600160a01b038516600081815260066020908152604091829020939093558051868152905191923392600080516020610e738339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d062eb319db2db22c11903c935b69a66b9513479c3c65c965f0b19eb73aa4f9464736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "308:4264:51:-:0;;;460:35;;;-1:-1:-1;;460:35:51;491:4;460:35;;;1189:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;1325:1;619:18:58;;-1:-1:-1;;;;;;619:18:58;627:10;619:18;;;1725:19:48;;1189:152:51;;-1:-1:-1;1725:19:48;;-1:-1:-1;1305:7:51;;1189:152;;1325:1;1717:52:48;;;;;-1:-1:-1;;;1717:52:48;;;;;;;;;;;;-1:-1:-1;;;1717:52:48;;;;;;;;;;;;;;;1812:1;1794:7;1788:21;:25;1780:56;;;;;-1:-1:-1;;;1780:56:48;;;;;;;;;;;;-1:-1:-1;;;1780:56:48;;;;;;;;;;;;;;;1849:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;1872:16:48;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;1899:8:48;:20;;-1:-1:-1;;1899:20:48;;;;;;;;;;;;;1930:11;:26;;;1977:10;-1:-1:-1;1967:21:48;;;:9;:21;;;;;:36;-1:-1:-1;308:4264:51;;-1:-1:-1;;;;308:4264:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;308:4264:51;;;-1:-1:-1;308:4264:51;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "308:4264:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;327:27:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4284:519;;;;;;;;;;;;;;;;-1:-1:-1;4284:519:48;;-1:-1:-1;;;;;4284:519:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1851:114:51;;;;;;;;;;;;;;;;-1:-1:-1;1851:114:51;;;;:::i;:::-;;434:35:48;;;:::i;:::-;;;;;;;;;;;;;;;;4324:245:51;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4324:245:51;;;;;;;;;;;;;;;;;:::i;397:30:48:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;417:34:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1196:290:63;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1196:290:63;;;;;;;;;;;;;;;;;:::i;476:54:48:-;;;;;;;;;;;;;;;;-1:-1:-1;476:54:48;-1:-1:-1;;;;;476:54:48;;:::i;1422:217:58:-;;;:::i;2253:349:51:-;;;;;;;;;;;;;;;;-1:-1:-1;2253:349:51;;-1:-1:-1;;;;;2253:349:51;;;;;;:::i;219:29:58:-;;;:::i;:::-;;;;-1:-1:-1;;;;;219:29:58;;;;;;;;;;;;;;361::48;;;:::i;2886:281:51:-;;;;;;;;;;;;;;;;-1:-1:-1;2886:281:51;;-1:-1:-1;;;;;2886:281:51;;;;;;:::i;3637:214::-;;;;;;;;;;;;;;;;-1:-1:-1;3637:214:51;;-1:-1:-1;;;;;3637:214:51;;;;;;:::i;460:35::-;;;:::i;255:23:58:-;;;:::i;537:75:48:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;537:75:48;;;;;;;;;;:::i;1164:167:58:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:58;-1:-1:-1;;;;;1164:167:58;;:::i;327:27:48:-;;;;;;;;;;;;;;-1:-1:-1;;327:27:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4284:519::-;4436:4;4408:8;594:23:65;608:8;594:13;:23::i;:::-;4592:11:48;;;:51:::1;;-1:-1:-1::0;4617:10:48::1;4607:21;::::0;;;:9:::1;:21;::::0;;;;;;;-1:-1:-1;;;;;4607:31:48;::::1;::::0;;;;;;;;:36;4592:51:::1;4584:82;;;::::0;;-1:-1:-1;;;4584:82:48;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;4584:82:48;;;;;;;;;;;;;::::1;;4689:10;4679:21;::::0;;;:9:::1;:21;::::0;;;;;;;-1:-1:-1;;;;;4679:31:48;::::1;::::0;;;;;;;;;;:40;;;4735:38;;;;;;;4679:31;;4689:10;4735:38:::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;4791:4:48::1;::::0;4284:519;-1:-1:-1;;;4284:519:48:o;1851:114:51:-;726:12:58;:10;:12::i;:::-;1929:16:51::1;:28:::0;;-1:-1:-1;;1929:28:51::1;1948:9:::0;::::1;1929:28:::0;;;::::1;::::0;;1851:114::o;434:35:48:-;;;;:::o;4324:245:51:-;4493:4;1443:19;:17;:19::i;:::-;4523:38:::1;4542:5;4549:3;4554:6;4523:18;:38::i;:::-;4516:45:::0;4324:245;-1:-1:-1;;;;4324:245:51:o;397:30:48:-;;;;;;:::o;417:34:51:-;450:1;417:34;:::o;1196:290:63:-;726:12:58;:10;:12::i;:::-;1370:6:63::1;594:23:65;608:8;594:13;:23::i;:::-;1401:3:63::2;594:23:65;608:8;594:13;:23::i;:::-;1423:3:63::3;948:18:65;957:8;948;:18::i;:::-;1444:34:63::4;1457:6;1465:3;1470:7;1444:12;:34::i;:::-;628:1:65::3;::::2;749::58::1;1196:290:63::0;;;:::o;476:54:48:-;;;;;;;;;;;;;:::o;1422:217:58:-;1498:8;;-1:-1:-1;;;;;1498:8:58;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:58;;;;;;;;;;;;-1:-1:-1;;;1476:52:58;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:58;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;1591:8:58;;-1:-1:-1;;;;;;1583:16:58;;;;;;;1610:21;;;1422:217::o;2253:349:51:-;726:12:58;:10;:12::i;:::-;2373:3:51::1;594:23:65;608:8;594:13;:23::i;:::-;2395:3:51::2;948:18:65;957:8;948;:18::i;:::-;2430:11:51::3;::::0;:24:::3;::::0;2446:7;2430:15:::3;:24::i;:::-;2416:11;:38:::0;-1:-1:-1;;;;;2482:14:51;::::3;;::::0;;;:9:::3;:14;::::0;;;;;:27:::3;::::0;2501:7;2482:18:::3;:27::i;:::-;-1:-1:-1::0;;;;;2465:14:51;::::3;;::::0;;;:9:::3;:14;::::0;;;;;;;;:44;;;;2527:17;;;;;;;::::3;::::0;;;;;;;;;::::3;2560:34;::::0;;;;;;;2577:1:::3;-1:-1:-1::0;;;;;;;2560:34:51;::::3;::::0;2577:1;;2560:34;2577:1;;-1:-1:-1;;2577:1:51;-1:-1:-1;;;;;2560:34:51;;;;::::3;::::0;;::::3;628:1:65::2;749::58::1;2253:349:51::0;;:::o;219:29:58:-;;;-1:-1:-1;;;;;219:29:58;;:::o;361::48:-;;;;;;;;;;;;;;;-1:-1:-1;;361:29:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2886:281:51;726:12:58;:10;:12::i;:::-;-1:-1:-1;;;;;2991:16:51;::::1;;::::0;;;:9:::1;:16;::::0;;;;;:29:::1;::::0;3012:7;2991:20:::1;:29::i;:::-;-1:-1:-1::0;;;;;2972:16:51;::::1;;::::0;;;:9:::1;:16;::::0;;;;:48;3045:11:::1;::::0;:24:::1;::::0;3061:7;3045:15:::1;:24::i;:::-;3031:11;:38:::0;3087:36:::1;::::0;;;;;;;3111:1:::1;::::0;-1:-1:-1;;;;;3087:36:51;::::1;::::0;-1:-1:-1;;;;;;;;;;;3087:36:51;;;;::::1;::::0;;::::1;3139:20;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;2886:281:::0;;:::o;3637:214::-;3787:4;1443:19;:17;:19::i;:::-;3816:27:::1;3831:3;3836:6;3816:14;:27::i;:::-;3809:34:::0;3637:214;-1:-1:-1;;;3637:214:51:o;460:35::-;;;;;;:::o;255:23:58:-;;;-1:-1:-1;;;;;255:23:58;;:::o;537:75:48:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1164:167:58:-;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:58;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:58;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:58;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:58::1;-1:-1:-1::0;;;;;1303:20:58;;;::::1;::::0;;;::::1;::::0;;1164:167::o;692:128:65:-;-1:-1:-1;;;;;766:22:65;;758:54;;;;;-1:-1:-1;;;758:54:65;;;;;;;;;;;;-1:-1:-1;;;758:54:65;;;;;;;;;;;;;;;692:128;:::o;813:104:58:-;882:5;;-1:-1:-1;;;;;882:5:58;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:58;;;;;;;;;;;;-1:-1:-1;;;860:49:58;;;;;;;;;;;;;;;813:104::o;1537:113:51:-;1599:16;;;;1591:51;;;;;-1:-1:-1;;;1591:51:51;;;;;;;;;;;;-1:-1:-1;;;1591:51:51;;;;;;;;;;;;;;3099:470:48;3290:4;3238:5;594:23:65;608:8;594:13;:23::i;:::-;3267:3:48::1;594:23:65;608:8;594:13;:23::i;:::-;-1:-1:-1::0;;;;;3343:16:48;::::2;;::::0;;;:9:::2;:16;::::0;;;;;;;3360:10:::2;3343:28:::0;;;;;;;;:40:::2;::::0;3376:6;3343:32:::2;:40::i;:::-;-1:-1:-1::0;;;;;3312:16:48;::::2;;::::0;;;:9:::2;:16;::::0;;;;;;;3329:10:::2;3312:28:::0;;;;;;;:71;;;;3413:16;;;:9:::2;:16:::0;;;;;:28:::2;::::0;3434:6;3413:20:::2;:28::i;:::-;-1:-1:-1::0;;;;;3394:16:48;;::::2;;::::0;;;:9:::2;:16;::::0;;;;;:47;;;;3469:14;;::::2;::::0;;;;:26:::2;::::0;3488:6;3469:18:::2;:26::i;:::-;-1:-1:-1::0;;;;;3452:14:48;;::::2;;::::0;;;:9:::2;:14;::::0;;;;;;;:43;;;;3511:28;;;;;;;-1:-1:-1;;3452:14:48;;3511:28;;::::2;::::0;;;;;3452:14;;-1:-1:-1;3452:14:48;-1:-1:-1;;;;;3511:28:48;;;;;;;::::2;-1:-1:-1::0;3557:4:48::2;::::0;3099:470;-1:-1:-1;;;;;3099:470:48:o;1041:126:65:-;1130:4;-1:-1:-1;;;;;1110:25:65;;;;1102:57;;;;;-1:-1:-1;;;1102:57:65;;;;;;;;;;;;-1:-1:-1;;;1102:57:65;;;;;;;;;;;;;;1485:312:62;1631:59;;;-1:-1:-1;;;;;1631:59:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1631:59:62;-1:-1:-1;;;1631:59:62;;;1610:81;;;;-1:-1:-1;;1589:17:62;;1610:20;;;;1631:59;1610:81;;;1631:59;1610:81;;1631:59;1610:81;;;;;;;;;;-1:-1:-1;;1610:81:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1574:117;;;;1709:7;:57;;;;-1:-1:-1;1721:11:62;;:16;;:44;;;1752:4;1741:24;;;;;;;;;;;;;;;-1:-1:-1;1741:24:62;1721:44;1701:89;;;;;-1:-1:-1;;;1701:89:62;;;;;;;;;;;;-1:-1:-1;;;1701:89:62;;;;;;;;;;;;;;;1485:312;;;;;:::o;386:169:61:-;446:7;478;;;504;;;;496:32;;;;;-1:-1:-1;;;496:32:61;;;;;;;;;;;;-1:-1:-1;;;496:32:61;;;;;;;;;;;;;;778:147;838:7;872:2;866;:8;;858:34;;;;;-1:-1:-1;;;858:34:61;;;;;;;;;;;;-1:-1:-1;;;858:34:61;;;;;;;;;;;;;;;-1:-1:-1;910:7:61;;;778:147::o;2343:355:48:-;2486:4;2463:3;594:23:65;608:8;594:13;:23::i;:::-;2542:10:48::1;2532:21;::::0;;;:9:::1;:21;::::0;;;;;:33:::1;::::0;2558:6;2532:25:::1;:33::i;:::-;2518:10;2508:21;::::0;;;:9:::1;:21;::::0;;;;;:57;;;;-1:-1:-1;;;;;2593:14:48;::::1;::::0;;;;:26:::1;::::0;2612:6;2593:18:::1;:26::i;:::-;-1:-1:-1::0;;;;;2576:14:48;::::1;;::::0;;;:9:::1;:14;::::0;;;;;;;:43;;;;2635:33;;;;;;;-1:-1:-1;;2576:14:48;;2644:10:::1;::::0;2635:33;;2576:14;;-1:-1:-1;2576:14:48;-1:-1:-1;;;;;2635:33:48;;;;;;;;::::1;-1:-1:-1::0;2686:4:48::1;::::0;2343:355;-1:-1:-1;;;2343:355:48:o",
"source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./ERC20Token.sol\";\r\nimport \"./interfaces/ISmartToken.sol\";\r\nimport \"../utility/Owned.sol\";\r\nimport \"../utility/TokenHolder.sol\";\r\n\r\n/**\r\n * @dev Smart Token\r\n *\r\n * 'Owned' is specified here for readability reasons\r\n*/\r\ncontract SmartToken is ISmartToken, Owned, ERC20Token, TokenHolder {\r\n using SafeMath for uint256;\r\n\r\n uint16 public constant version = 4;\r\n\r\n bool public transfersEnabled = true; // true if transfer/transferFrom are enabled, false otherwise\r\n\r\n /**\r\n * @dev triggered when the total supply is increased\r\n *\r\n * @param _amount amount that gets added to the supply\r\n */\r\n event Issuance(uint256 _amount);\r\n\r\n /**\r\n * @dev triggered when the total supply is decreased\r\n *\r\n * @param _amount amount that gets removed from the supply\r\n */\r\n event Destruction(uint256 _amount);\r\n\r\n /**\r\n * @dev initializes a new SmartToken instance\r\n *\r\n * @param _name token name\r\n * @param _symbol token short symbol, minimum 1 character\r\n * @param _decimals for display purposes only\r\n */\r\n constructor(string memory _name, string memory _symbol, uint8 _decimals)\r\n public\r\n ERC20Token(_name, _symbol, _decimals, 0)\r\n {\r\n }\r\n\r\n // allows execution only when transfers are enabled\r\n modifier transfersAllowed {\r\n _transfersAllowed();\r\n _;\r\n }\r\n\r\n // error message binary size optimization\r\n function _transfersAllowed() internal view {\r\n require(transfersEnabled, \"ERR_TRANSFERS_DISABLED\");\r\n }\r\n\r\n /**\r\n * @dev disables/enables transfers\r\n * can only be called by the contract owner\r\n *\r\n * @param _disable true to disable transfers, false to enable them\r\n */\r\n function disableTransfers(bool _disable) public override ownerOnly {\r\n transfersEnabled = !_disable;\r\n }\r\n\r\n /**\r\n * @dev increases the token supply and sends the new tokens to the given account\r\n * can only be called by the contract owner\r\n *\r\n * @param _to account to receive the new amount\r\n * @param _amount amount to increase the supply by\r\n */\r\n function issue(address _to, uint256 _amount)\r\n public\r\n override\r\n ownerOnly\r\n validAddress(_to)\r\n notThis(_to)\r\n {\r\n totalSupply = totalSupply.add(_amount);\r\n balanceOf[_to] = balanceOf[_to].add(_amount);\r\n\r\n emit Issuance(_amount);\r\n emit Transfer(address(0), _to, _amount);\r\n }\r\n\r\n /**\r\n * @dev removes tokens from the given account and decreases the token supply\r\n * can only be called by the contract owner\r\n *\r\n * @param _from account to remove the amount from\r\n * @param _amount amount to decrease the supply by\r\n */\r\n function destroy(address _from, uint256 _amount) public override ownerOnly {\r\n balanceOf[_from] = balanceOf[_from].sub(_amount);\r\n totalSupply = totalSupply.sub(_amount);\r\n\r\n emit Transfer(_from, address(0), _amount);\r\n emit Destruction(_amount);\r\n }\r\n\r\n // ERC20 standard method overrides with some extra functionality\r\n\r\n /**\r\n * @dev send coins\r\n * throws on any error rather then return a false flag to minimize user errors\r\n * in addition to the standard checks, the function throws if transfers are disabled\r\n *\r\n * @param _to target address\r\n * @param _value transfer amount\r\n *\r\n * @return true if the transfer was successful, false if it wasn't\r\n */\r\n function transfer(address _to, uint256 _value)\r\n public\r\n override(IERC20Token, ERC20Token)\r\n transfersAllowed\r\n returns (bool)\r\n {\r\n return super.transfer(_to, _value);\r\n }\r\n\r\n /**\r\n * @dev an account/contract attempts to get the coins\r\n * throws on any error rather then return a false flag to minimize user errors\r\n * in addition to the standard checks, the function throws if transfers are disabled\r\n *\r\n * @param _from source address\r\n * @param _to target address\r\n * @param _value transfer amount\r\n *\r\n * @return true if the transfer was successful, false if it wasn't\r\n */\r\n function transferFrom(address _from, address _to, uint256 _value)\r\n public\r\n override(IERC20Token, ERC20Token)\r\n transfersAllowed\r\n returns (bool) \r\n {\r\n return super.transferFrom(_from, _to, _value);\r\n }\r\n}\r\n",
"sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol",
"ast": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol",
"exportedSymbols": {
"SmartToken": [
21394
]
},
"id": 21395,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 21174,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:51"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/ERC20Token.sol",
"file": "./ERC20Token.sol",
"id": 21175,
"nodeType": "ImportDirective",
"scope": 21395,
"sourceUnit": 20618,
"src": "77:26:51",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol",
"file": "./interfaces/ISmartToken.sol",
"id": 21176,
"nodeType": "ImportDirective",
"scope": 21395,
"sourceUnit": 21518,
"src": "105:38:51",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol",
"file": "../utility/Owned.sol",
"id": 21177,
"nodeType": "ImportDirective",
"scope": 21395,
"sourceUnit": 22154,
"src": "145:30:51",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol",
"file": "../utility/TokenHolder.sol",
"id": 21178,
"nodeType": "ImportDirective",
"scope": 21395,
"sourceUnit": 22911,
"src": "177:36:51",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21180,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "331:11:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 21181,
"nodeType": "InheritanceSpecifier",
"src": "331:11:51"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21182,
"name": "Owned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22153,
"src": "344:5:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Owned_$22153",
"typeString": "contract Owned"
}
},
"id": 21183,
"nodeType": "InheritanceSpecifier",
"src": "344:5:51"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21184,
"name": "ERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20617,
"src": "351:10:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Token_$20617",
"typeString": "contract ERC20Token"
}
},
"id": 21185,
"nodeType": "InheritanceSpecifier",
"src": "351:10:51"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21186,
"name": "TokenHolder",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22910,
"src": "363:11:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TokenHolder_$22910",
"typeString": "contract TokenHolder"
}
},
"id": 21187,
"nodeType": "InheritanceSpecifier",
"src": "363:11:51"
}
],
"contractDependencies": [
13349,
20617,
21462,
21517,
22153,
22861,
22910,
22996,
23182,
23242
],
"contractKind": "contract",
"documentation": {
"id": 21179,
"nodeType": "StructuredDocumentation",
"src": "217:89:51",
"text": " @dev Smart Token\n 'Owned' is specified here for readability reasons"
},
"fullyImplemented": true,
"id": 21394,
"linearizedBaseContracts": [
21394,
22910,
20617,
22996,
22153,
22861,
21517,
21462,
13349,
23242,
23182
],
"name": "SmartToken",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 21190,
"libraryName": {
"contractScope": null,
"id": 21188,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22689,
"src": "388:8:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$22689",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "382:27:51",
"typeName": {
"id": 21189,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "401:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": true,
"functionSelector": "54fd4d50",
"id": 21193,
"mutability": "constant",
"name": "version",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21394,
"src": "417:34:51",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 21191,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "417:6:51",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": {
"argumentTypes": null,
"hexValue": "34",
"id": 21192,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "450:1:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "bef97c87",
"id": 21196,
"mutability": "mutable",
"name": "transfersEnabled",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21394,
"src": "460:35:51",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21194,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "460:4:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 21195,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "491:4:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"visibility": "public"
},
{
"anonymous": false,
"documentation": {
"id": 21197,
"nodeType": "StructuredDocumentation",
"src": "569:141:51",
"text": " @dev triggered when the total supply is increased\n @param _amount amount that gets added to the supply"
},
"id": 21201,
"name": "Issuance",
"nodeType": "EventDefinition",
"parameters": {
"id": 21200,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21199,
"indexed": false,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21201,
"src": "731:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21198,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "731:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "730:17:51"
},
"src": "716:32:51"
},
{
"anonymous": false,
"documentation": {
"id": 21202,
"nodeType": "StructuredDocumentation",
"src": "756:145:51",
"text": " @dev triggered when the total supply is decreased\n @param _amount amount that gets removed from the supply"
},
"id": 21206,
"name": "Destruction",
"nodeType": "EventDefinition",
"parameters": {
"id": 21205,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21204,
"indexed": false,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21206,
"src": "925:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21203,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "925:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "924:17:51"
},
"src": "907:35:51"
},
{
"body": {
"id": 21222,
"nodeType": "Block",
"src": "1333:8:51",
"statements": []
},
"documentation": {
"id": 21207,
"nodeType": "StructuredDocumentation",
"src": "950:233:51",
"text": " @dev initializes a new SmartToken instance\n @param _name token name\n @param _symbol token short symbol, minimum 1 character\n @param _decimals for display purposes only"
},
"id": 21223,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 21216,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21209,
"src": "1298:5:51",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 21217,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21211,
"src": "1305:7:51",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 21218,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21213,
"src": "1314:9:51",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 21219,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1325:1:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"id": 21220,
"modifierName": {
"argumentTypes": null,
"id": 21215,
"name": "ERC20Token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20617,
"src": "1287:10:51",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20Token_$20617_$",
"typeString": "type(contract ERC20Token)"
}
},
"nodeType": "ModifierInvocation",
"src": "1287:40:51"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21214,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21209,
"mutability": "mutable",
"name": "_name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21223,
"src": "1201:19:51",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21208,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1201:6:51",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21211,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21223,
"src": "1222:21:51",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21210,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1222:6:51",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21213,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21223,
"src": "1245:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 21212,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1245:5:51",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1200:61:51"
},
"returnParameters": {
"id": 21221,
"nodeType": "ParameterList",
"parameters": [],
"src": "1333:0:51"
},
"scope": 21394,
"src": "1189:152:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21229,
"nodeType": "Block",
"src": "1432:50:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 21225,
"name": "_transfersAllowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21239,
"src": "1443:17:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$__$",
"typeString": "function () view"
}
},
"id": 21226,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1443:19:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21227,
"nodeType": "ExpressionStatement",
"src": "1443:19:51"
},
{
"id": 21228,
"nodeType": "PlaceholderStatement",
"src": "1473:1:51"
}
]
},
"documentation": null,
"id": 21230,
"name": "transfersAllowed",
"nodeType": "ModifierDefinition",
"overrides": null,
"parameters": {
"id": 21224,
"nodeType": "ParameterList",
"parameters": [],
"src": "1432:0:51"
},
"src": "1406:76:51",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 21238,
"nodeType": "Block",
"src": "1580:70:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21234,
"name": "transfersEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21196,
"src": "1599:16:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f5452414e53464552535f44495341424c4544",
"id": 21235,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1617:24:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_da0eea8408576dc7745752d8573d65c520f2ae4c7522ecd9096dbc953230a52a",
"typeString": "literal_string \"ERR_TRANSFERS_DISABLED\""
},
"value": "ERR_TRANSFERS_DISABLED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_da0eea8408576dc7745752d8573d65c520f2ae4c7522ecd9096dbc953230a52a",
"typeString": "literal_string \"ERR_TRANSFERS_DISABLED\""
}
],
"id": 21233,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1591:7:51",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21236,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1591:51:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21237,
"nodeType": "ExpressionStatement",
"src": "1591:51:51"
}
]
},
"documentation": null,
"id": 21239,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfersAllowed",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21231,
"nodeType": "ParameterList",
"parameters": [],
"src": "1563:2:51"
},
"returnParameters": {
"id": 21232,
"nodeType": "ParameterList",
"parameters": [],
"src": "1580:0:51"
},
"scope": 21394,
"src": "1537:113:51",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"baseFunctions": [
21502
],
"body": {
"id": 21253,
"nodeType": "Block",
"src": "1918:47:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21248,
"name": "transfersEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21196,
"src": "1929:16:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1948:9:51",
"subExpression": {
"argumentTypes": null,
"id": 21249,
"name": "_disable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21242,
"src": "1949:8:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1929:28:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 21252,
"nodeType": "ExpressionStatement",
"src": "1929:28:51"
}
]
},
"documentation": {
"id": 21240,
"nodeType": "StructuredDocumentation",
"src": "1658:187:51",
"text": " @dev disables/enables transfers\n can only be called by the contract owner\n @param _disable true to disable transfers, false to enable them"
},
"functionSelector": "1608f18f",
"id": 21254,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21246,
"modifierName": {
"argumentTypes": null,
"id": 21245,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "1908:9:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "1908:9:51"
}
],
"name": "disableTransfers",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21244,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1899:8:51"
},
"parameters": {
"id": 21243,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21242,
"mutability": "mutable",
"name": "_disable",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21254,
"src": "1877:13:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21241,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1877:4:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1876:15:51"
},
"returnParameters": {
"id": 21247,
"nodeType": "ParameterList",
"parameters": [],
"src": "1918:0:51"
},
"scope": 21394,
"src": "1851:114:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
21509
],
"body": {
"id": 21302,
"nodeType": "Block",
"src": "2405:197:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21271,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20364,
"src": "2416:11:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21274,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21259,
"src": "2446:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21272,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20364,
"src": "2430:11:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21273,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 22606,
"src": "2430:15:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 21275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2430:24:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2416:38:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21277,
"nodeType": "ExpressionStatement",
"src": "2416:38:51"
},
{
"expression": {
"argumentTypes": null,
"id": 21287,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21278,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20369,
"src": "2465:9:51",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 21280,
"indexExpression": {
"argumentTypes": null,
"id": 21279,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2475:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2465:14:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21285,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21259,
"src": "2501:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21281,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20369,
"src": "2482:9:51",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 21283,
"indexExpression": {
"argumentTypes": null,
"id": 21282,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2492:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2482:14:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21284,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 22606,
"src": "2482:18:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 21286,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2482:27:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2465:44:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21288,
"nodeType": "ExpressionStatement",
"src": "2465:44:51"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21290,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21259,
"src": "2536:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 21289,
"name": "Issuance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21201,
"src": "2527:8:51",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 21291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2527:17:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21292,
"nodeType": "EmitStatement",
"src": "2522:22:51"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21296,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2577:1:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21295,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2569:7:51",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21294,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2569:7:51",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21297,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2569:10:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 21298,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2581:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21299,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21259,
"src": "2586:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 21293,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20385,
"src": "2560:8:51",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 21300,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2560:34:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21301,
"nodeType": "EmitStatement",
"src": "2555:39:51"
}
]
},
"documentation": {
"id": 21255,
"nodeType": "StructuredDocumentation",
"src": "1973:274:51",
"text": " @dev increases the token supply and sends the new tokens to the given account\n can only be called by the contract owner\n @param _to account to receive the new amount\n @param _amount amount to increase the supply by"
},
"functionSelector": "867904b4",
"id": 21303,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21263,
"modifierName": {
"argumentTypes": null,
"id": 21262,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "2341:9:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2341:9:51"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 21265,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2373:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 21266,
"modifierName": {
"argumentTypes": null,
"id": 21264,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22953,
"src": "2360:12:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2360:17:51"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 21268,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2395:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 21269,
"modifierName": {
"argumentTypes": null,
"id": 21267,
"name": "notThis",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22979,
"src": "2387:7:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2387:12:51"
}
],
"name": "issue",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21261,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2323:8:51"
},
"parameters": {
"id": 21260,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21257,
"mutability": "mutable",
"name": "_to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21303,
"src": "2268:11:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21256,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2268:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21259,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21303,
"src": "2281:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21258,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2281:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2267:30:51"
},
"returnParameters": {
"id": 21270,
"nodeType": "ParameterList",
"parameters": [],
"src": "2405:0:51"
},
"scope": 21394,
"src": "2253:349:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
21516
],
"body": {
"id": 21345,
"nodeType": "Block",
"src": "2961:206:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21323,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21314,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20369,
"src": "2972:9:51",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 21316,
"indexExpression": {
"argumentTypes": null,
"id": 21315,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21306,
"src": "2982:5:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2972:16:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21321,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21308,
"src": "3012:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21317,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20369,
"src": "2991:9:51",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 21319,
"indexExpression": {
"argumentTypes": null,
"id": 21318,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21306,
"src": "3001:5:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2991:16:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 22628,
"src": "2991:20:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 21322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2991:29:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2972:48:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21324,
"nodeType": "ExpressionStatement",
"src": "2972:48:51"
},
{
"expression": {
"argumentTypes": null,
"id": 21330,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21325,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20364,
"src": "3031:11:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21328,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21308,
"src": "3061:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21326,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20364,
"src": "3045:11:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21327,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 22628,
"src": "3045:15:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 21329,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3045:24:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3031:38:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21331,
"nodeType": "ExpressionStatement",
"src": "3031:38:51"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21333,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21306,
"src": "3096:5:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21336,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3111:1:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21335,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3103:7:51",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21334,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3103:7:51",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21337,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3103:10:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 21338,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21308,
"src": "3115:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 21332,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20385,
"src": "3087:8:51",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 21339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3087:36:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21340,
"nodeType": "EmitStatement",
"src": "3082:41:51"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21342,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21308,
"src": "3151:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 21341,
"name": "Destruction",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21206,
"src": "3139:11:51",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 21343,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3139:20:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21344,
"nodeType": "EmitStatement",
"src": "3134:25:51"
}
]
},
"documentation": {
"id": 21304,
"nodeType": "StructuredDocumentation",
"src": "2610:270:51",
"text": " @dev removes tokens from the given account and decreases the token supply\n can only be called by the contract owner\n @param _from account to remove the amount from\n @param _amount amount to decrease the supply by"
},
"functionSelector": "a24835d1",
"id": 21346,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21312,
"modifierName": {
"argumentTypes": null,
"id": 21311,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "2951:9:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2951:9:51"
}
],
"name": "destroy",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21310,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2942:8:51"
},
"parameters": {
"id": 21309,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21306,
"mutability": "mutable",
"name": "_from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21346,
"src": "2903:13:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21305,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2903:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21308,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21346,
"src": "2918:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21307,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2918:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2902:32:51"
},
"returnParameters": {
"id": 21313,
"nodeType": "ParameterList",
"parameters": [],
"src": "2961:0:51"
},
"scope": 21394,
"src": "2886:281:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
20500,
21441
],
"body": {
"id": 21367,
"nodeType": "Block",
"src": "3798:53:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21363,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21349,
"src": "3831:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21364,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21351,
"src": "3836:6:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21361,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "3816:5:51",
"typeDescriptions": {
"typeIdentifier": "t_super$_SmartToken_$21394",
"typeString": "contract super SmartToken"
}
},
"id": 21362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 20500,
"src": "3816:14:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) returns (bool)"
}
},
"id": 21365,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3816:27:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 21360,
"id": 21366,
"nodeType": "Return",
"src": "3809:34:51"
}
]
},
"documentation": {
"id": 21347,
"nodeType": "StructuredDocumentation",
"src": "3247:384:51",
"text": " @dev send coins\n throws on any error rather then return a false flag to minimize user errors\n in addition to the standard checks, the function throws if transfers are disabled\n @param _to target address\n @param _value transfer amount\n @return true if the transfer was successful, false if it wasn't"
},
"functionSelector": "a9059cbb",
"id": 21368,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21357,
"modifierName": {
"argumentTypes": null,
"id": 21356,
"name": "transfersAllowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21230,
"src": "3752:16:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3752:16:51"
}
],
"name": "transfer",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21355,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"contractScope": null,
"id": 21353,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21462,
"src": "3718:11:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21462",
"typeString": "contract IERC20Token"
}
},
{
"contractScope": null,
"id": 21354,
"name": "ERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20617,
"src": "3731:10:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Token_$20617",
"typeString": "contract ERC20Token"
}
}
],
"src": "3709:33:51"
},
"parameters": {
"id": 21352,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21349,
"mutability": "mutable",
"name": "_to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21368,
"src": "3655:11:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21348,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3655:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21351,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21368,
"src": "3668:14:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21350,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3668:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3654:29:51"
},
"returnParameters": {
"id": 21360,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21359,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21368,
"src": "3787:4:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21358,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3787:4:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3786:6:51"
},
"scope": 21394,
"src": "3637:214:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
20567,
21452
],
"body": {
"id": 21392,
"nodeType": "Block",
"src": "4505:64:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21387,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21371,
"src": "4542:5:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21388,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21373,
"src": "4549:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21389,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21375,
"src": "4554:6:51",
"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": 21385,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "4523:5:51",
"typeDescriptions": {
"typeIdentifier": "t_super$_SmartToken_$21394",
"typeString": "contract super SmartToken"
}
},
"id": 21386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 20567,
"src": "4523:18:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) returns (bool)"
}
},
"id": 21390,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4523:38:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 21384,
"id": 21391,
"nodeType": "Return",
"src": "4516:45:51"
}
]
},
"documentation": {
"id": 21369,
"nodeType": "StructuredDocumentation",
"src": "3859:459:51",
"text": " @dev an account/contract attempts to get the coins\n throws on any error rather then return a false flag to minimize user errors\n in addition to the standard checks, the function throws if transfers are disabled\n @param _from source address\n @param _to target address\n @param _value transfer amount\n @return true if the transfer was successful, false if it wasn't"
},
"functionSelector": "23b872dd",
"id": 21393,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21381,
"modifierName": {
"argumentTypes": null,
"id": 21380,
"name": "transfersAllowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21230,
"src": "4458:16:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4458:16:51"
}
],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21379,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"contractScope": null,
"id": 21377,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21462,
"src": "4424:11:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21462",
"typeString": "contract IERC20Token"
}
},
{
"contractScope": null,
"id": 21378,
"name": "ERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20617,
"src": "4437:10:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Token_$20617",
"typeString": "contract ERC20Token"
}
}
],
"src": "4415:33:51"
},
"parameters": {
"id": 21376,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21371,
"mutability": "mutable",
"name": "_from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21393,
"src": "4346:13:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21370,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4346:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21373,
"mutability": "mutable",
"name": "_to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21393,
"src": "4361:11:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21372,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4361:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21375,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21393,
"src": "4374:14:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21374,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4374:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4345:44:51"
},
"returnParameters": {
"id": 21384,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21383,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21393,
"src": "4493:4:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21382,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4493:4:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4492:6:51"
},
"scope": 21394,
"src": "4324:245:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 21395,
"src": "308:4264:51"
}
],
"src": "52:4522:51"
},
"legacyAST": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol",
"exportedSymbols": {
"SmartToken": [
21394
]
},
"id": 21395,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 21174,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:51"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/ERC20Token.sol",
"file": "./ERC20Token.sol",
"id": 21175,
"nodeType": "ImportDirective",
"scope": 21395,
"sourceUnit": 20618,
"src": "77:26:51",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol",
"file": "./interfaces/ISmartToken.sol",
"id": 21176,
"nodeType": "ImportDirective",
"scope": 21395,
"sourceUnit": 21518,
"src": "105:38:51",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol",
"file": "../utility/Owned.sol",
"id": 21177,
"nodeType": "ImportDirective",
"scope": 21395,
"sourceUnit": 22154,
"src": "145:30:51",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol",
"file": "../utility/TokenHolder.sol",
"id": 21178,
"nodeType": "ImportDirective",
"scope": 21395,
"sourceUnit": 22911,
"src": "177:36:51",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21180,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "331:11:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 21181,
"nodeType": "InheritanceSpecifier",
"src": "331:11:51"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21182,
"name": "Owned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22153,
"src": "344:5:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Owned_$22153",
"typeString": "contract Owned"
}
},
"id": 21183,
"nodeType": "InheritanceSpecifier",
"src": "344:5:51"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21184,
"name": "ERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20617,
"src": "351:10:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Token_$20617",
"typeString": "contract ERC20Token"
}
},
"id": 21185,
"nodeType": "InheritanceSpecifier",
"src": "351:10:51"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21186,
"name": "TokenHolder",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22910,
"src": "363:11:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TokenHolder_$22910",
"typeString": "contract TokenHolder"
}
},
"id": 21187,
"nodeType": "InheritanceSpecifier",
"src": "363:11:51"
}
],
"contractDependencies": [
13349,
20617,
21462,
21517,
22153,
22861,
22910,
22996,
23182,
23242
],
"contractKind": "contract",
"documentation": {
"id": 21179,
"nodeType": "StructuredDocumentation",
"src": "217:89:51",
"text": " @dev Smart Token\n 'Owned' is specified here for readability reasons"
},
"fullyImplemented": true,
"id": 21394,
"linearizedBaseContracts": [
21394,
22910,
20617,
22996,
22153,
22861,
21517,
21462,
13349,
23242,
23182
],
"name": "SmartToken",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 21190,
"libraryName": {
"contractScope": null,
"id": 21188,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22689,
"src": "388:8:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$22689",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "382:27:51",
"typeName": {
"id": 21189,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "401:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": true,
"functionSelector": "54fd4d50",
"id": 21193,
"mutability": "constant",
"name": "version",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21394,
"src": "417:34:51",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 21191,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "417:6:51",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": {
"argumentTypes": null,
"hexValue": "34",
"id": 21192,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "450:1:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "bef97c87",
"id": 21196,
"mutability": "mutable",
"name": "transfersEnabled",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21394,
"src": "460:35:51",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21194,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "460:4:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 21195,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "491:4:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"visibility": "public"
},
{
"anonymous": false,
"documentation": {
"id": 21197,
"nodeType": "StructuredDocumentation",
"src": "569:141:51",
"text": " @dev triggered when the total supply is increased\n @param _amount amount that gets added to the supply"
},
"id": 21201,
"name": "Issuance",
"nodeType": "EventDefinition",
"parameters": {
"id": 21200,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21199,
"indexed": false,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21201,
"src": "731:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21198,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "731:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "730:17:51"
},
"src": "716:32:51"
},
{
"anonymous": false,
"documentation": {
"id": 21202,
"nodeType": "StructuredDocumentation",
"src": "756:145:51",
"text": " @dev triggered when the total supply is decreased\n @param _amount amount that gets removed from the supply"
},
"id": 21206,
"name": "Destruction",
"nodeType": "EventDefinition",
"parameters": {
"id": 21205,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21204,
"indexed": false,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21206,
"src": "925:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21203,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "925:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "924:17:51"
},
"src": "907:35:51"
},
{
"body": {
"id": 21222,
"nodeType": "Block",
"src": "1333:8:51",
"statements": []
},
"documentation": {
"id": 21207,
"nodeType": "StructuredDocumentation",
"src": "950:233:51",
"text": " @dev initializes a new SmartToken instance\n @param _name token name\n @param _symbol token short symbol, minimum 1 character\n @param _decimals for display purposes only"
},
"id": 21223,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 21216,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21209,
"src": "1298:5:51",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 21217,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21211,
"src": "1305:7:51",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 21218,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21213,
"src": "1314:9:51",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 21219,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1325:1:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"id": 21220,
"modifierName": {
"argumentTypes": null,
"id": 21215,
"name": "ERC20Token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20617,
"src": "1287:10:51",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20Token_$20617_$",
"typeString": "type(contract ERC20Token)"
}
},
"nodeType": "ModifierInvocation",
"src": "1287:40:51"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21214,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21209,
"mutability": "mutable",
"name": "_name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21223,
"src": "1201:19:51",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21208,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1201:6:51",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21211,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21223,
"src": "1222:21:51",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 21210,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1222:6:51",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21213,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21223,
"src": "1245:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 21212,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1245:5:51",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1200:61:51"
},
"returnParameters": {
"id": 21221,
"nodeType": "ParameterList",
"parameters": [],
"src": "1333:0:51"
},
"scope": 21394,
"src": "1189:152:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21229,
"nodeType": "Block",
"src": "1432:50:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 21225,
"name": "_transfersAllowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21239,
"src": "1443:17:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$__$",
"typeString": "function () view"
}
},
"id": 21226,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1443:19:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21227,
"nodeType": "ExpressionStatement",
"src": "1443:19:51"
},
{
"id": 21228,
"nodeType": "PlaceholderStatement",
"src": "1473:1:51"
}
]
},
"documentation": null,
"id": 21230,
"name": "transfersAllowed",
"nodeType": "ModifierDefinition",
"overrides": null,
"parameters": {
"id": 21224,
"nodeType": "ParameterList",
"parameters": [],
"src": "1432:0:51"
},
"src": "1406:76:51",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 21238,
"nodeType": "Block",
"src": "1580:70:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21234,
"name": "transfersEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21196,
"src": "1599:16:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f5452414e53464552535f44495341424c4544",
"id": 21235,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1617:24:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_da0eea8408576dc7745752d8573d65c520f2ae4c7522ecd9096dbc953230a52a",
"typeString": "literal_string \"ERR_TRANSFERS_DISABLED\""
},
"value": "ERR_TRANSFERS_DISABLED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_da0eea8408576dc7745752d8573d65c520f2ae4c7522ecd9096dbc953230a52a",
"typeString": "literal_string \"ERR_TRANSFERS_DISABLED\""
}
],
"id": 21233,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1591:7:51",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21236,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1591:51:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21237,
"nodeType": "ExpressionStatement",
"src": "1591:51:51"
}
]
},
"documentation": null,
"id": 21239,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfersAllowed",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21231,
"nodeType": "ParameterList",
"parameters": [],
"src": "1563:2:51"
},
"returnParameters": {
"id": 21232,
"nodeType": "ParameterList",
"parameters": [],
"src": "1580:0:51"
},
"scope": 21394,
"src": "1537:113:51",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"baseFunctions": [
21502
],
"body": {
"id": 21253,
"nodeType": "Block",
"src": "1918:47:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21248,
"name": "transfersEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21196,
"src": "1929:16:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1948:9:51",
"subExpression": {
"argumentTypes": null,
"id": 21249,
"name": "_disable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21242,
"src": "1949:8:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1929:28:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 21252,
"nodeType": "ExpressionStatement",
"src": "1929:28:51"
}
]
},
"documentation": {
"id": 21240,
"nodeType": "StructuredDocumentation",
"src": "1658:187:51",
"text": " @dev disables/enables transfers\n can only be called by the contract owner\n @param _disable true to disable transfers, false to enable them"
},
"functionSelector": "1608f18f",
"id": 21254,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21246,
"modifierName": {
"argumentTypes": null,
"id": 21245,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "1908:9:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "1908:9:51"
}
],
"name": "disableTransfers",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21244,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1899:8:51"
},
"parameters": {
"id": 21243,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21242,
"mutability": "mutable",
"name": "_disable",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21254,
"src": "1877:13:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21241,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1877:4:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1876:15:51"
},
"returnParameters": {
"id": 21247,
"nodeType": "ParameterList",
"parameters": [],
"src": "1918:0:51"
},
"scope": 21394,
"src": "1851:114:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
21509
],
"body": {
"id": 21302,
"nodeType": "Block",
"src": "2405:197:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21271,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20364,
"src": "2416:11:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21274,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21259,
"src": "2446:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21272,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20364,
"src": "2430:11:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21273,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 22606,
"src": "2430:15:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 21275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2430:24:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2416:38:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21277,
"nodeType": "ExpressionStatement",
"src": "2416:38:51"
},
{
"expression": {
"argumentTypes": null,
"id": 21287,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21278,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20369,
"src": "2465:9:51",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 21280,
"indexExpression": {
"argumentTypes": null,
"id": 21279,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2475:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2465:14:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21285,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21259,
"src": "2501:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21281,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20369,
"src": "2482:9:51",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 21283,
"indexExpression": {
"argumentTypes": null,
"id": 21282,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2492:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2482:14:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21284,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 22606,
"src": "2482:18:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 21286,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2482:27:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2465:44:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21288,
"nodeType": "ExpressionStatement",
"src": "2465:44:51"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21290,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21259,
"src": "2536:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 21289,
"name": "Issuance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21201,
"src": "2527:8:51",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 21291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2527:17:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21292,
"nodeType": "EmitStatement",
"src": "2522:22:51"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21296,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2577:1:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21295,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2569:7:51",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21294,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2569:7:51",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21297,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2569:10:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 21298,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2581:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21299,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21259,
"src": "2586:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 21293,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20385,
"src": "2560:8:51",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 21300,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2560:34:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21301,
"nodeType": "EmitStatement",
"src": "2555:39:51"
}
]
},
"documentation": {
"id": 21255,
"nodeType": "StructuredDocumentation",
"src": "1973:274:51",
"text": " @dev increases the token supply and sends the new tokens to the given account\n can only be called by the contract owner\n @param _to account to receive the new amount\n @param _amount amount to increase the supply by"
},
"functionSelector": "867904b4",
"id": 21303,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21263,
"modifierName": {
"argumentTypes": null,
"id": 21262,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "2341:9:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2341:9:51"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 21265,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2373:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 21266,
"modifierName": {
"argumentTypes": null,
"id": 21264,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22953,
"src": "2360:12:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2360:17:51"
},
{
"arguments": [
{
"argumentTypes": null,
"id": 21268,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21257,
"src": "2395:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 21269,
"modifierName": {
"argumentTypes": null,
"id": 21267,
"name": "notThis",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22979,
"src": "2387:7:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2387:12:51"
}
],
"name": "issue",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21261,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2323:8:51"
},
"parameters": {
"id": 21260,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21257,
"mutability": "mutable",
"name": "_to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21303,
"src": "2268:11:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21256,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2268:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21259,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21303,
"src": "2281:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21258,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2281:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2267:30:51"
},
"returnParameters": {
"id": 21270,
"nodeType": "ParameterList",
"parameters": [],
"src": "2405:0:51"
},
"scope": 21394,
"src": "2253:349:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
21516
],
"body": {
"id": 21345,
"nodeType": "Block",
"src": "2961:206:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21323,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21314,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20369,
"src": "2972:9:51",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 21316,
"indexExpression": {
"argumentTypes": null,
"id": 21315,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21306,
"src": "2982:5:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2972:16:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21321,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21308,
"src": "3012:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 21317,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20369,
"src": "2991:9:51",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 21319,
"indexExpression": {
"argumentTypes": null,
"id": 21318,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21306,
"src": "3001:5:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2991:16:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 22628,
"src": "2991:20:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 21322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2991:29:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2972:48:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21324,
"nodeType": "ExpressionStatement",
"src": "2972:48:51"
},
{
"expression": {
"argumentTypes": null,
"id": 21330,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21325,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20364,
"src": "3031:11:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21328,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21308,
"src": "3061:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21326,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20364,
"src": "3045:11:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21327,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 22628,
"src": "3045:15:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 21329,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3045:24:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3031:38:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 21331,
"nodeType": "ExpressionStatement",
"src": "3031:38:51"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21333,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21306,
"src": "3096:5:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21336,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3111:1:51",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21335,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3103:7:51",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21334,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3103:7:51",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21337,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3103:10:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 21338,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21308,
"src": "3115:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 21332,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 20385,
"src": "3087:8:51",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 21339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3087:36:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21340,
"nodeType": "EmitStatement",
"src": "3082:41:51"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21342,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21308,
"src": "3151:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 21341,
"name": "Destruction",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21206,
"src": "3139:11:51",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 21343,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3139:20:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21344,
"nodeType": "EmitStatement",
"src": "3134:25:51"
}
]
},
"documentation": {
"id": 21304,
"nodeType": "StructuredDocumentation",
"src": "2610:270:51",
"text": " @dev removes tokens from the given account and decreases the token supply\n can only be called by the contract owner\n @param _from account to remove the amount from\n @param _amount amount to decrease the supply by"
},
"functionSelector": "a24835d1",
"id": 21346,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21312,
"modifierName": {
"argumentTypes": null,
"id": 21311,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "2951:9:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2951:9:51"
}
],
"name": "destroy",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21310,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2942:8:51"
},
"parameters": {
"id": 21309,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21306,
"mutability": "mutable",
"name": "_from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21346,
"src": "2903:13:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21305,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2903:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21308,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21346,
"src": "2918:15:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21307,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2918:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2902:32:51"
},
"returnParameters": {
"id": 21313,
"nodeType": "ParameterList",
"parameters": [],
"src": "2961:0:51"
},
"scope": 21394,
"src": "2886:281:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
20500,
21441
],
"body": {
"id": 21367,
"nodeType": "Block",
"src": "3798:53:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21363,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21349,
"src": "3831:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21364,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21351,
"src": "3836:6:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21361,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "3816:5:51",
"typeDescriptions": {
"typeIdentifier": "t_super$_SmartToken_$21394",
"typeString": "contract super SmartToken"
}
},
"id": 21362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 20500,
"src": "3816:14:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) returns (bool)"
}
},
"id": 21365,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3816:27:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 21360,
"id": 21366,
"nodeType": "Return",
"src": "3809:34:51"
}
]
},
"documentation": {
"id": 21347,
"nodeType": "StructuredDocumentation",
"src": "3247:384:51",
"text": " @dev send coins\n throws on any error rather then return a false flag to minimize user errors\n in addition to the standard checks, the function throws if transfers are disabled\n @param _to target address\n @param _value transfer amount\n @return true if the transfer was successful, false if it wasn't"
},
"functionSelector": "a9059cbb",
"id": 21368,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21357,
"modifierName": {
"argumentTypes": null,
"id": 21356,
"name": "transfersAllowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21230,
"src": "3752:16:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3752:16:51"
}
],
"name": "transfer",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21355,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"contractScope": null,
"id": 21353,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21462,
"src": "3718:11:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21462",
"typeString": "contract IERC20Token"
}
},
{
"contractScope": null,
"id": 21354,
"name": "ERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20617,
"src": "3731:10:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Token_$20617",
"typeString": "contract ERC20Token"
}
}
],
"src": "3709:33:51"
},
"parameters": {
"id": 21352,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21349,
"mutability": "mutable",
"name": "_to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21368,
"src": "3655:11:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21348,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3655:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21351,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21368,
"src": "3668:14:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21350,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3668:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3654:29:51"
},
"returnParameters": {
"id": 21360,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21359,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21368,
"src": "3787:4:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21358,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3787:4:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3786:6:51"
},
"scope": 21394,
"src": "3637:214:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
20567,
21452
],
"body": {
"id": 21392,
"nodeType": "Block",
"src": "4505:64:51",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21387,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21371,
"src": "4542:5:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21388,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21373,
"src": "4549:3:51",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21389,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21375,
"src": "4554:6:51",
"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": 21385,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "4523:5:51",
"typeDescriptions": {
"typeIdentifier": "t_super$_SmartToken_$21394",
"typeString": "contract super SmartToken"
}
},
"id": 21386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 20567,
"src": "4523:18:51",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) returns (bool)"
}
},
"id": 21390,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4523:38:51",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 21384,
"id": 21391,
"nodeType": "Return",
"src": "4516:45:51"
}
]
},
"documentation": {
"id": 21369,
"nodeType": "StructuredDocumentation",
"src": "3859:459:51",
"text": " @dev an account/contract attempts to get the coins\n throws on any error rather then return a false flag to minimize user errors\n in addition to the standard checks, the function throws if transfers are disabled\n @param _from source address\n @param _to target address\n @param _value transfer amount\n @return true if the transfer was successful, false if it wasn't"
},
"functionSelector": "23b872dd",
"id": 21393,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21381,
"modifierName": {
"argumentTypes": null,
"id": 21380,
"name": "transfersAllowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21230,
"src": "4458:16:51",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4458:16:51"
}
],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 21379,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"contractScope": null,
"id": 21377,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21462,
"src": "4424:11:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21462",
"typeString": "contract IERC20Token"
}
},
{
"contractScope": null,
"id": 21378,
"name": "ERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 20617,
"src": "4437:10:51",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Token_$20617",
"typeString": "contract ERC20Token"
}
}
],
"src": "4415:33:51"
},
"parameters": {
"id": 21376,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21371,
"mutability": "mutable",
"name": "_from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21393,
"src": "4346:13:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21370,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4346:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21373,
"mutability": "mutable",
"name": "_to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21393,
"src": "4361:11:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21372,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4361:7:51",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21375,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21393,
"src": "4374:14:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21374,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4374:7:51",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4345:44:51"
},
"returnParameters": {
"id": 21384,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21383,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21393,
"src": "4493:4:51",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21382,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4493:4:51",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4492:6:51"
},
"scope": 21394,
"src": "4324:245:51",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 21395,
"src": "308:4264:51"
}
],
"src": "52:4522:51"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.2.3",
"updatedAt": "2020-11-10T14:20:44.730Z",
"networkType": "ethereum",
"devdoc": {
"details": "Smart Token 'Owned' is specified here for readability reasons",
"events": {
"Destruction(uint256)": {
"details": "triggered when the total supply is decreased",
"params": {
"_amount": "amount that gets removed from the supply"
}
},
"Issuance(uint256)": {
"details": "triggered when the total supply is increased",
"params": {
"_amount": "amount that gets added to the supply"
}
}
},
"kind": "dev",
"methods": {
"acceptOwnership()": {
"details": "used by a new owner to accept an ownership transfer"
},
"approve(address,uint256)": {
"details": "allows another account/contract to transfers tokens on behalf of the caller throws on any error rather then return a false flag to minimize user errors also, to minimize the risk of the approve/transferFrom attack vector (see https://docs.google.com/document/d/1YLPtQxZu1UAvO9cZ1O2RPXBbT0mooh4DYKjA_jp-RLM/), approve has to be called twice in 2 separate transactions - once to change the allowance to 0 and secondly to change it to the new allowance value",
"params": {
"_spender": "approved address",
"_value": "allowance amount"
},
"returns": {
"_0": "true if the approval was successful, false if it wasn't"
}
},
"constructor": {
"details": "initializes a new SmartToken instance",
"params": {
"_decimals": "for display purposes only",
"_name": "token name",
"_symbol": "token short symbol, minimum 1 character"
}
},
"destroy(address,uint256)": {
"details": "removes tokens from the given account and decreases the token supply can only be called by the contract owner",
"params": {
"_amount": "amount to decrease the supply by",
"_from": "account to remove the amount from"
}
},
"disableTransfers(bool)": {
"details": "disables/enables transfers can only be called by the contract owner",
"params": {
"_disable": "true to disable transfers, false to enable them"
}
},
"issue(address,uint256)": {
"details": "increases the token supply and sends the new tokens to the given account can only be called by the contract owner",
"params": {
"_amount": "amount to increase the supply by",
"_to": "account to receive the new amount"
}
},
"transfer(address,uint256)": {
"details": "send coins throws on any error rather then return a false flag to minimize user errors in addition to the standard checks, the function throws if transfers are disabled",
"params": {
"_to": "target address",
"_value": "transfer amount"
},
"returns": {
"_0": "true if the transfer was successful, false if it wasn't"
}
},
"transferFrom(address,address,uint256)": {
"details": "an account/contract attempts to get the coins throws on any error rather then return a false flag to minimize user errors in addition to the standard checks, the function throws if transfers are disabled",
"params": {
"_from": "source address",
"_to": "target address",
"_value": "transfer amount"
},
"returns": {
"_0": "true if the transfer was successful, false if it wasn't"
}
},
"transferOwnership(address)": {
"details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner",
"params": {
"_newOwner": "new contract owner"
}
},
"withdrawTokens(address,address,uint256)": {
"details": "withdraws tokens held by the contract and sends them to an account can only be called by the owner",
"params": {
"_amount": "amount to withdraw",
"_to": "account to receive the new amount",
"_token": "ERC20 token contract address"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}