{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "initialAccount",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "initialBalance",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approveInternal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "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": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferInternal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60806040526040516200148038038062001480833981810160405260808110156200002957600080fd5b81019080805160405193929190846401000000008211156200004a57600080fd5b9083019060208201858111156200006057600080fd5b82516401000000008111828201881017156200007b57600080fd5b82525081516020918201929091019080838360005b83811015620000aa57818101518382015260200162000090565b50505050905090810190601f168015620000d85780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620000fc57600080fd5b9083019060208201858111156200011257600080fd5b82516401000000008111828201881017156200012d57600080fd5b82525081516020918201929091019080838360005b838110156200015c57818101518382015260200162000142565b50505050905090810190601f1680156200018a5780820380516001836020036101000a031916815260200191505b50604090815260208281015192909101518651929450925085918591620001b79160039185019062000369565b508051620001cd90600490602084019062000369565b50506005805460ff1916601217905550620001e98282620001f3565b5050505062000415565b6001600160a01b0382166200024f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200025d6000838362000302565b62000279816002546200030760201b620007d11790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002ac918390620007d162000307821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000362576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003a15760008555620003ec565b82601f10620003bc57805160ff1916838001178555620003ec565b82800160010185558215620003ec579182015b82811115620003ec578251825591602001919060010190620003cf565b50620003fa929150620003fe565b5090565b5b80821115620003fa5760008155600101620003ff565b61105b80620004256000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac14610374578063a457c2d7146103ad578063a9059cbb146103e6578063dd62ed3e1461041f576100f5565b806340c10f19146102bd57806356189cb4146102f657806370a082311461033957806395d89b411461036c576100f5565b8063222f5be0116100d3578063222f5be0146101de57806323b872dd14610223578063313ce567146102665780633950935114610284576100f5565b806306fdde03146100fa578063095ea7b31461017757806318160ddd146101c4575b600080fd5b61010261045a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b06004803603604081101561018d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561050e565b604080519115158252519081900360200190f35b6101cc61052b565b60408051918252519081900360200190f35b610221600480360360608110156101f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610531565b005b6101b06004803603606081101561023957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610541565b61026e6105e2565b6040805160ff9092168252519081900360200190f35b6101b06004803603604081101561029a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105eb565b610221600480360360408110156102d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610646565b6102216004803603606081101561030c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610654565b6101cc6004803603602081101561034f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661065f565b610102610687565b6102216004803603604081101561038a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610706565b6101b0600480360360408110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610710565b6101b0600480360360408110156103fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610785565b6101cc6004803603604081101561043557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610799565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061052261051b61084c565b8484610850565b50600192915050565b60025490565b61053c838383610997565b505050565b600061054e848484610997565b6105d88461055a61084c565b6105d385604051806060016040528060288152602001610f986028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906105a561084c565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610b67565b610850565b5060019392505050565b60055460ff1690565b60006105226105f861084c565b846105d3856001600061060961084c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906107d1565b6106508282610c18565b5050565b61053c838383610850565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105045780601f106104d957610100808354040283529160200191610504565b6106508282610d49565b600061052261071d61084c565b846105d38560405180606001604052806025815260200161102a602591396001600061074761084c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610b67565b600061052261079261084c565b8484610997565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60008282018381101561084557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110066024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610928576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f506022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610fe16025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f0b6023913960400191505060405180910390fd5b610a7a83838361053c565b610ac481604051806060016040528060268152602001610f726026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610b67565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610b0090826107d1565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610c10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bd5578181015183820152602001610bbd565b50505050905090810190601f168015610c025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b73ffffffffffffffffffffffffffffffffffffffff8216610c9a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610ca66000838361053c565b600254610cb390826107d1565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ce690826107d1565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fc06021913960400191505060405180910390fd5b610dc18260008361053c565b610e0b81604051806060016040528060228152602001610f2e6022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610b67565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254610e3e9082610e93565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600082821115610f0457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a",
    "sourceMap": "128:720:25:-:0;;;162:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;162:230:25;;;;;;;;;;-1:-1:-1;162:230:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;162:230:25;;;;;;;;;;-1:-1:-1;162:230:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;162:230:25;;;;;;;;;;;;;;2032:13:26;;162:230:25;;-1:-1:-1;162:230:25;-1:-1:-1;324:4:25;;330:6;;2032:13:26;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2055:17:26;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2082:9:26;:14;;-1:-1:-1;;2082:14:26;2094:2;2082:14;;;-1:-1:-1;348:37:25::1;354:14:::0;370;348:5:::1;:37::i;:::-;162:230:::0;;;;128:720;;7832:370:26;-1:-1:-1;7915:21:26;;7907:65;;;;;-1:-1:-1;;;7907:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:24;8075:6;8058:12;;:16;;;;;;:24;;;;:::i;:::-;8043:12;:39;-1:-1:-1;8113:18:26;;:9;:18;;;;;;;;;;;;:30;;8136:6;;8113:22;;;;;:30;;:::i;:::-;-1:-1:-1;8092:18:26;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;10701:92::-;;;;:::o;2690:175:24:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:24:o;128:720:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;128:720:25;;;-1:-1:-1;128:720:25;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac14610374578063a457c2d7146103ad578063a9059cbb146103e6578063dd62ed3e1461041f576100f5565b806340c10f19146102bd57806356189cb4146102f657806370a082311461033957806395d89b411461036c576100f5565b8063222f5be0116100d3578063222f5be0146101de57806323b872dd14610223578063313ce567146102665780633950935114610284576100f5565b806306fdde03146100fa578063095ea7b31461017757806318160ddd146101c4575b600080fd5b61010261045a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b06004803603604081101561018d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561050e565b604080519115158252519081900360200190f35b6101cc61052b565b60408051918252519081900360200190f35b610221600480360360608110156101f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610531565b005b6101b06004803603606081101561023957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610541565b61026e6105e2565b6040805160ff9092168252519081900360200190f35b6101b06004803603604081101561029a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105eb565b610221600480360360408110156102d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610646565b6102216004803603606081101561030c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610654565b6101cc6004803603602081101561034f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661065f565b610102610687565b6102216004803603604081101561038a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610706565b6101b0600480360360408110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610710565b6101b0600480360360408110156103fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610785565b6101cc6004803603604081101561043557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610799565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061052261051b61084c565b8484610850565b50600192915050565b60025490565b61053c838383610997565b505050565b600061054e848484610997565b6105d88461055a61084c565b6105d385604051806060016040528060288152602001610f986028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906105a561084c565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610b67565b610850565b5060019392505050565b60055460ff1690565b60006105226105f861084c565b846105d3856001600061060961084c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906107d1565b6106508282610c18565b5050565b61053c838383610850565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105045780601f106104d957610100808354040283529160200191610504565b6106508282610d49565b600061052261071d61084c565b846105d38560405180606001604052806025815260200161102a602591396001600061074761084c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610b67565b600061052261079261084c565b8484610997565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60008282018381101561084557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110066024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610928576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f506022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610fe16025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610f0b6023913960400191505060405180910390fd5b610a7a83838361053c565b610ac481604051806060016040528060268152602001610f726026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610b67565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610b0090826107d1565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610c10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bd5578181015183820152602001610bbd565b50505050905090810190601f168015610c025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b73ffffffffffffffffffffffffffffffffffffffff8216610c9a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610ca66000838361053c565b600254610cb390826107d1565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ce690826107d1565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fc06021913960400191505060405180910390fd5b610dc18260008361053c565b610e0b81604051806060016040528060228152602001610f2e6022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610b67565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254610e3e9082610e93565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600082821115610f0457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a",
    "sourceMap": "128:720:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;4244:166:26;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3235:106;;;:::i;:::-;;;;;;;;;;;;;;;;596:117:25;;;;;;;;;;;;;;;;-1:-1:-1;596:117:25;;;;;;;;;;;;;;;;;;:::i;:::-;;4877:317:26;;;;;;;;;;;;;;;;-1:-1:-1;4877:317:26;;;;;;;;;;;;;;;;;;:::i;3086:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;-1:-1:-1;5589:215:26;;;;;;;;;:::i;398:93:25:-;;;;;;;;;;;;;;;;-1:-1:-1;398:93:25;;;;;;;;;:::i;719:127::-;;;;;;;;;;;;;;;;-1:-1:-1;719:127:25;;;;;;;;;;;;;;;;;;:::i;3399:125:26:-;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:26;;;;:::i;2370:93::-;;;:::i;497::25:-;;;;;;;;;;;;;;;;-1:-1:-1;497:93:25;;;;;;;;;:::i;6291:266:26:-;;;;;;;;;;;;;;;;-1:-1:-1;6291:266:26;;;;;;;;;:::i;3727:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3727:172:26;;;;;;;;;:::i;3957:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3957:149:26;;;;;;;;;;;:::i;2168:89::-;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:26;4244:166;;;;:::o;3235:106::-;3322:12;;3235:106;:::o;596:117:25:-;680:26;690:4;696:2;700:5;680:9;:26::i;:::-;596:117;;;:::o;4877:317:26:-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;5076:33;;;;;;;;;;;;;-1:-1:-1;5076:33:26;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:26;4877:317;;;;;:::o;3086:89::-;3159:9;;;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;5725:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:26;;;:34;;;;;;;;;;;:38;:50::i;398:93:25:-;462:22;468:7;477:6;462:5;:22::i;:::-;398:93;;:::o;719:127::-;808:31;817:5;824:7;833:5;808:8;:31::i;3399:125:26:-;3499:18;;3473:7;3499:18;;;;;;;;;;;;3399:125::o;2370:93::-;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;497:93:25;561:22;567:7;576:6;561:5;:22::i;6291:266:26:-;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:26;;;:34;;;;;;;;;;;:96;:38;:96::i;3727:172::-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;3957:149::-;4072:18;;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;2690:175:24:-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:24:o;598:104:30:-;685:10;598:104;:::o;9355:340:26:-;9456:19;;;9448:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9534:21;;;9526:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9605:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;7136:20;;;7128:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:23;;;7208:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7348:17;;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;7449:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;5432:163:24:-;5518:7;5553:12;5545:6;;;;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:24;;;5432:163::o;7832:370:26:-;7915:21;;;7907:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:12;;:24;;8075:6;8058:16;:24::i;:::-;8043:12;:39;8113:18;;;:9;:18;;;;;;;;;;;:30;;8136:6;8113:22;:30::i;:::-;8092:18;;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;8522:410::-;8605:21;;;8597:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8675:49;8696:7;8713:1;8717:6;8675:20;:49::i;:::-;8756:68;8779:6;8756:68;;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;8735:18;;;:9;:18;;;;;;;;;;:89;8849:12;;:24;;8866:6;8849:16;:24::i;:::-;8834:12;:39;8888:37;;;;;;;;8914:1;;8888:37;;;;;;;;;;;;;8522:410;;:::o;3136:155:24:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:24;;;3136:155::o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "allowance(address,address)": "dd62ed3e",
    "approve(address,uint256)": "095ea7b3",
    "approveInternal(address,address,uint256)": "56189cb4",
    "balanceOf(address)": "70a08231",
    "burn(address,uint256)": "9dc29fac",
    "decimals()": "313ce567",
    "decreaseAllowance(address,uint256)": "a457c2d7",
    "increaseAllowance(address,uint256)": "39509351",
    "mint(address,uint256)": "40c10f19",
    "name()": "06fdde03",
    "symbol()": "95d89b41",
    "totalSupply()": "18160ddd",
    "transfer(address,uint256)": "a9059cbb",
    "transferFrom(address,address,uint256)": "23b872dd",
    "transferInternal(address,address,uint256)": "222f5be0"
  },
  "ast": {
    "absolutePath": "node_modules/@openzeppelin/contracts/mocks/ERC20Mock.sol",
    "id": 26937,
    "exportedSymbols": {
      "Context": [
        28049
      ],
      "ERC20": [
        27439
      ],
      "ERC20Mock": [
        26936
      ],
      "IERC20": [
        27517
      ],
      "SafeMath": [
        26851
      ]
    },
    "nodeType": "SourceUnit",
    "src": "33:816:25",
    "nodes": [
      {
        "id": 26853,
        "nodeType": "PragmaDirective",
        "src": "33:31:25",
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0",
          "<",
          "0.8",
          ".0"
        ]
      },
      {
        "id": 26854,
        "nodeType": "ImportDirective",
        "src": "66:34:25",
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "file": "../token/ERC20/ERC20.sol",
        "scope": 26937,
        "sourceUnit": 27440,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 26936,
        "nodeType": "ContractDefinition",
        "src": "128:720:25",
        "nodes": [
          {
            "id": 26877,
            "nodeType": "FunctionDefinition",
            "src": "162:230:25",
            "body": {
              "id": 26876,
              "nodeType": "Block",
              "src": "338:54:25",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 26872,
                        "name": "initialAccount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26862,
                        "src": "354:14:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 26873,
                        "name": "initialBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26864,
                        "src": "370:14:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 26871,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27315,
                      "src": "348:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 26874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "348:37:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26875,
                  "nodeType": "ExpressionStatement",
                  "src": "348:37:25"
                }
              ]
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 26867,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26858,
                    "src": "324:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 26868,
                    "name": "symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26860,
                    "src": "330:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 26869,
                "modifierName": {
                  "id": 26866,
                  "name": "ERC20",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 27439,
                  "src": "318:5:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC20_$27439_$",
                    "typeString": "type(contract ERC20)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "318:19:25"
              }
            ],
            "name": "",
            "parameters": {
              "id": 26865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26858,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 26877,
                  "src": "184:18:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 26857,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "184:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26860,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 26877,
                  "src": "212:20:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 26859,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "212:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26862,
                  "mutability": "mutable",
                  "name": "initialAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 26877,
                  "src": "242:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 26861,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "242:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26864,
                  "mutability": "mutable",
                  "name": "initialBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 26877,
                  "src": "274:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26863,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "274:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "174:128:25"
            },
            "returnParameters": {
              "id": 26870,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "338:0:25"
            },
            "scope": 26936,
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 26890,
            "nodeType": "FunctionDefinition",
            "src": "398:93:25",
            "body": {
              "id": 26889,
              "nodeType": "Block",
              "src": "452:39:25",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 26885,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26879,
                        "src": "468:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 26886,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26881,
                        "src": "477:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 26884,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27315,
                      "src": "462:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 26887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "462:22:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26888,
                  "nodeType": "ExpressionStatement",
                  "src": "462:22:25"
                }
              ]
            },
            "functionSelector": "40c10f19",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "parameters": {
              "id": 26882,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26879,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 26890,
                  "src": "412:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 26878,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "412:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26881,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 26890,
                  "src": "429:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26880,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "429:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "411:33:25"
            },
            "returnParameters": {
              "id": 26883,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "452:0:25"
            },
            "scope": 26936,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 26903,
            "nodeType": "FunctionDefinition",
            "src": "497:93:25",
            "body": {
              "id": 26902,
              "nodeType": "Block",
              "src": "551:39:25",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 26898,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26892,
                        "src": "567:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 26899,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26894,
                        "src": "576:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 26897,
                      "name": "_burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27371,
                      "src": "561:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 26900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "561:22:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26901,
                  "nodeType": "ExpressionStatement",
                  "src": "561:22:25"
                }
              ]
            },
            "functionSelector": "9dc29fac",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "parameters": {
              "id": 26895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26892,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 26903,
                  "src": "511:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 26891,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "511:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26894,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 26903,
                  "src": "528:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "528:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "510:33:25"
            },
            "returnParameters": {
              "id": 26896,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "551:0:25"
            },
            "scope": 26936,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 26919,
            "nodeType": "FunctionDefinition",
            "src": "596:117:25",
            "body": {
              "id": 26918,
              "nodeType": "Block",
              "src": "670:43:25",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 26913,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26905,
                        "src": "690:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 26914,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26907,
                        "src": "696:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 26915,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26909,
                        "src": "700:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 26912,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27260,
                      "src": "680:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 26916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "680:26:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26917,
                  "nodeType": "ExpressionStatement",
                  "src": "680:26:25"
                }
              ]
            },
            "functionSelector": "222f5be0",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferInternal",
            "parameters": {
              "id": 26910,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26905,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 26919,
                  "src": "622:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 26904,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "622:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26907,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 26919,
                  "src": "636:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 26906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "636:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26909,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 26919,
                  "src": "648:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26908,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "621:41:25"
            },
            "returnParameters": {
              "id": 26911,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "670:0:25"
            },
            "scope": 26936,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 26935,
            "nodeType": "FunctionDefinition",
            "src": "719:127:25",
            "body": {
              "id": 26934,
              "nodeType": "Block",
              "src": "798:48:25",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 26929,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26921,
                        "src": "817:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 26930,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26923,
                        "src": "824:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 26931,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26925,
                        "src": "833:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 26928,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27416,
                      "src": "808:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 26932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "808:31:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26933,
                  "nodeType": "ExpressionStatement",
                  "src": "808:31:25"
                }
              ]
            },
            "functionSelector": "56189cb4",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approveInternal",
            "parameters": {
              "id": 26926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26921,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 26935,
                  "src": "744:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 26920,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26923,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 26935,
                  "src": "759:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 26922,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "759:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26925,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 26935,
                  "src": "776:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "743:47:25"
            },
            "returnParameters": {
              "id": 26927,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "798:0:25"
            },
            "scope": 26936,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 26855,
              "name": "ERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 27439,
              "src": "150:5:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20_$27439",
                "typeString": "contract ERC20"
              }
            },
            "id": 26856,
            "nodeType": "InheritanceSpecifier",
            "src": "150:5:25"
          }
        ],
        "contractDependencies": [
          27439,
          27517,
          28049
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          26936,
          27439,
          27517,
          28049
        ],
        "name": "ERC20Mock",
        "scope": 26937
      }
    ],
    "license": "MIT"
  },
  "id": 25
}