{
  "contractName": "MetaTxToken",
  "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": "src",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "guy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "guy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "authority",
          "type": "address"
        }
      ],
      "name": "LogSetAuthority",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "LogSetOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address payable",
          "name": "relayerAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "functionSignature",
          "type": "bytes"
        }
      ],
      "name": "MetaTransactionExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "guy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "guy",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "guy",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "authority",
      "outputs": [
        {
          "internalType": "contract DSAuthority",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "src",
          "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": "_user",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_payload",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_sigR",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_sigS",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "_sigV",
          "type": "uint8"
        }
      ],
      "name": "executeMetaTransaction",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "locked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract DSAuthority",
          "name": "authority_",
          "type": "address"
        }
      ],
      "name": "setAuthority",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_payload",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_sigR",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_sigS",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "_sigV",
          "type": "uint8"
        }
      ],
      "name": "verify",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getMetatransactionNonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "guy",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "guy",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "wad",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unlock",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.3+commit.9bfce1f6\"},\"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\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address payable\",\"name\":\"relayerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"functionSignature\",\"type\":\"bytes\"}],\"name\":\"MetaTransactionExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"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\":\"_user\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_sigR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_sigS\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_sigV\",\"type\":\"uint8\"}],\"name\":\"executeMetaTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getMetatransactionNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"locked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_sigR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_sigS\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_sigV\",\"type\":\"uint8\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)\":{\"params\":{\"_payload\":\"Function call to make via meta transaction\",\"_sigR\":\"R part of the signature\",\"_sigS\":\"S part of the signature\",\"_sigV\":\"V part of the signature\",\"_user\":\"Address of user trying to do meta transaction\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)\":{\"notice\":\"Main function to be called when user wants to execute meta transaction. The actual function to be called should be passed as param with name functionSignature Here the basic signature recovery is being used. Signature is expected to be generated using personal_sign method.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/alex/colony/colonyNetwork/contracts/metatxToken/MetaTxToken.sol\":\"MetaTxToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alex/colony/colonyNetwork/contracts/common/BasicMetaTransaction.sol\":{\"keccak256\":\"0xbefc18701ee84d21bcd0f1ec6b2633cbc0b37b2fa281ff08ed38633ef822e897\",\"urls\":[\"bzz-raw://f2660629fb97a5e7041f1cdc359f50a29bfdc022d1c5d53c21506229ae0d383a\",\"dweb:/ipfs/QmNgLSVPHUNC247MeUfFSQHNDASKyw2PiLAoDQRj6eEpPr\"]},\"/home/alex/colony/colonyNetwork/contracts/common/ERC20Extended.sol\":{\"keccak256\":\"0x8ee76ab93ed44fa284c4b04980cfed835bd1952f52870e44d5213cf8367d4d72\",\"urls\":[\"bzz-raw://641b7d7325370fbf5b1438f70ec0f7504ceb0cf7fbb5d91e7d9c7c21dd15aaa1\",\"dweb:/ipfs/QmVrKk9T5upEDNk6rpYU6KaELwDc1vTA9CJswHe6TBoYkR\"]},\"/home/alex/colony/colonyNetwork/contracts/common/MetaTransactionMsgSender.sol\":{\"keccak256\":\"0xe0ff4cef89b9e16896cfe2d39aced588897fd9203774d941aae228220021e413\",\"urls\":[\"bzz-raw://548cd52bb3c56b709132b3862d36ecfdcf03f3ac725bfbb1904f5933fc85484e\",\"dweb:/ipfs/QmVLpWfj7jWZAGsz24hb3NRJby7TaEVZiyspDZqWthS3MS\"]},\"/home/alex/colony/colonyNetwork/contracts/common/MultiChain.sol\":{\"keccak256\":\"0x83b2f975cb2a95281c6d2637101fd98c4fb1d5dd3af8d62997a0a0e42724bd64\",\"urls\":[\"bzz-raw://03c93ed27c3d97b8e2e6000678ca14bc9a10a2ab3426ab90f679de29a18bba41\",\"dweb:/ipfs/QmVC9EiYWQvM3wRB8TYcFkP1w8NtGXyTxHFoUKiwAGmqgV\"]},\"/home/alex/colony/colonyNetwork/contracts/metatxToken/DSAuthMeta.sol\":{\"keccak256\":\"0xe9dbe38e7b9c249194a0edb56173c6db3a1fa71edd29e946723102dfa0ef0e3e\",\"urls\":[\"bzz-raw://a51a1550c710171fa02e773778d5edfdd73fb3871ed7ba74bbf0a6f474f64791\",\"dweb:/ipfs/QmNVt3J7SyK4dRop9h2s1bdJh52A4NBbZCMXLyPRWWHVd4\"]},\"/home/alex/colony/colonyNetwork/contracts/metatxToken/DSTokenBaseMeta.sol\":{\"keccak256\":\"0x28d3dd113891090248b3037370cd1939a5646a29c2c6d6849b46bd0e4e3d3dee\",\"urls\":[\"bzz-raw://419a0abcfd8d7f9af5d5d9b4b5c097e3dd832ddc70f46c5a8146e376bb4181c4\",\"dweb:/ipfs/QmXgtaNvgDqQ9iWbNtevAy4NPneo4my3GJeJvYHvP3gtjN\"]},\"/home/alex/colony/colonyNetwork/contracts/metatxToken/MetaTxToken.sol\":{\"keccak256\":\"0x1690e870ef86a494a8bba16dac3bd966ebed2c19ecda51301280b34a4e05da8e\",\"urls\":[\"bzz-raw://e20fd63dbe2c93e08f89ddc46c714bcbf12b964436ff7b2485b7936b78b781f6\",\"dweb:/ipfs/QmYm5R8Ewk3ap7uWCmMdq9DJ8zJnGAK5hEh2BAdtqQcrj2\"]},\"/home/alex/colony/colonyNetwork/lib/dappsys/auth.sol\":{\"keccak256\":\"0xb59c9b93ee83bf361ad763b027b0cc2ab7fb21486c4744802dd0017457c3424a\",\"urls\":[\"bzz-raw://01a1dff28577babee9044206c83db562d0941776cbd449b3ec47318571476fc6\",\"dweb:/ipfs/QmT5hrUe1zuVCAkdbudbHVNDa3E3uRy7NM1WwAAApRsJqe\"]},\"/home/alex/colony/colonyNetwork/lib/dappsys/erc20.sol\":{\"keccak256\":\"0xe01559371fecb34df51499200abb4d15dece3e8e43c3ba8561c0edac39c63c9d\",\"urls\":[\"bzz-raw://a53873aacc8a99f0585419f212094ff967c67f0f502588f0e71df4316e771af6\",\"dweb:/ipfs/QmYcgejDnfWURPH2pFnYPCfcDpmrY639pXuRdEWh8U4S45\"]},\"/home/alex/colony/colonyNetwork/lib/dappsys/math.sol\":{\"keccak256\":\"0x7cd3a27541f75fb9234cea98fbf42b40499dc0c732ddacf41981edca7b278211\",\"urls\":[\"bzz-raw://fc61d8737c6e2d1e6badcbe45ce8776fd7af9522f746224c4ca292bf81d057f1\",\"dweb:/ipfs/QmZZuNXm1fn1wQg5BmeCFPN73qZEUsf8oNz1jazYRyZEKp\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620021c2380380620021c2833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040526020015191506000905080600181620001b4620003a6565b6001600160a01b03168152602081019190915260400160009081209190915555620001de620003a6565b600480546001600160a01b0319166001600160a01b039290921691909117905562000208620003a6565b6001600160a01b03167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a28251620002529060069060208601906200045c565b508151620002689060059060208501906200045c565b506004805460ff60a01b1916600160a01b60ff8416021790556007805460ff191660019081179091556040516006805446937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9391829184916002610100928216159290920260001901160480156200031b5780601f10620002f85761010080835404028352918201916200031b565b820191906000526020600020905b81548152906001019060200180831162000306575b505060408051918290038220828201825260018352603160f81b602093840152815180840196909652858201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606086015260808501959095523060a0808601919091528551808603909101815260c09094019094525050805191012060085550620004ee915050565b6000363330148015620003ba575060348110155b156200044d5760606000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505082810160131901519091507f02bcc191e283bfba76a1369ec8ba06566f33010645097c104c312753e04935e88114620004385733935050505062000459565b508101516001600160a01b0316915062000457565b3391505062000459565b505b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200049f57805160ff1916838001178555620004cf565b82800160010185558215620004cf579182015b82811115620004cf578251825591602001919060010190620004b2565b50620004579291505b80821115620004575760008155600101620004d8565b611cc480620004fe6000396000f3fe6080604052600436106101815760003560e01c806370a08231116100d1578063a69df4b51161008a578063bf7e214f11610064578063bf7e214f146106fa578063cf3090121461070f578063d505accf14610724578063dd62ed3e1461078257610181565b8063a69df4b514610679578063a9059cbb1461068e578063b3eac1d8146106c757610181565b806370a082311461056a5780637a9e5e4b1461059d5780638da5cb5b146105d057806395d89b41146106015780639dc29fac14610616578063a0712d681461064f57610181565b806330adf81f1161013e5780633644e515116101185780633644e5151461041557806340c10f191461042a57806342966c68146104635780636281133d1461048d57610181565b806330adf81f146103c0578063313ce567146103d55780633408e4701461040057610181565b806306fdde0314610186578063095ea7b3146102105780630c53c51c1461025d57806313af40351461032157806318160ddd1461035657806323b872dd1461037d575b600080fd5b34801561019257600080fd5b5061019b6107bd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d55781810151838201526020016101bd565b50505050905090810190601f1680156102025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021c57600080fd5b506102496004803603604081101561023357600080fd5b506001600160a01b03813516906020013561084b565b604080519115158252519081900360200190f35b61019b600480360360a081101561027357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460018302840111640100000000831117156102d257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff166108dc565b34801561032d57600080fd5b506103546004803603602081101561034457600080fd5b50356001600160a01b0316610b8e565b005b34801561036257600080fd5b5061036b610c43565b60408051918252519081900360200190f35b34801561038957600080fd5b50610249600480360360608110156103a057600080fd5b506001600160a01b03813581169160208101359091169060400135610c4a565b3480156103cc57600080fd5b5061036b610cc3565b3480156103e157600080fd5b506103ea610ce7565b6040805160ff9092168252519081900360200190f35b34801561040c57600080fd5b5061036b610cf7565b34801561042157600080fd5b5061036b610cfb565b34801561043657600080fd5b506103546004803603604081101561044d57600080fd5b506001600160a01b038135169060200135610d01565b34801561046f57600080fd5b506103546004803603602081101561048657600080fd5b5035610e25565b34801561049957600080fd5b50610249600480360360e08110156104b057600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156104e757600080fd5b8201836020820111156104f957600080fd5b8035906020019184600183028401116401000000008311171561051b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff16610e39565b34801561057657600080fd5b5061036b6004803603602081101561058d57600080fd5b50356001600160a01b0316610fb8565b3480156105a957600080fd5b50610354600480360360208110156105c057600080fd5b50356001600160a01b0316610fd3565b3480156105dc57600080fd5b506105e5611076565b604080516001600160a01b039092168252519081900360200190f35b34801561060d57600080fd5b5061019b611085565b34801561062257600080fd5b506103546004803603604081101561063957600080fd5b506001600160a01b0381351690602001356110e0565b34801561065b57600080fd5b506103546004803603602081101561067257600080fd5b503561131a565b34801561068557600080fd5b5061035461137e565b34801561069a57600080fd5b50610249600480360360408110156106b157600080fd5b506001600160a01b0381351690602001356113dd565b3480156106d357600080fd5b5061036b600480360360208110156106ea57600080fd5b50356001600160a01b03166113f8565b34801561070657600080fd5b506105e5611413565b34801561071b57600080fd5b50610249611422565b34801561073057600080fd5b50610354600480360360e081101561074757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561142b565b34801561078e57600080fd5b5061036b600480360360408110156107a557600080fd5b506001600160a01b03813581169160200135166116ed565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108435780601f1061081857610100808354040283529160200191610843565b820191906000526020600020905b81548152906001019060200180831161082657829003601f168201915b505050505081565b6000816002600061085a611718565b6001600160a01b0390811682526020808301939093526040918201600090812091881680825291909352912091909155610892611718565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a35060015b92915050565b60606108fc866108eb886113f8565b6108f3610cf7565b88888888610e39565b6109375760405162461bcd60e51b8152600401808060200182810382526029815260200180611c666029913960400191505060405180910390fd5b610940866117c7565b60006060306001600160a01b0316877f02bcc191e283bfba76a1369ec8ba06566f33010645097c104c312753e04935e88a6040516020018084805190602001908083835b602083106109a35780518252601f199092019160209182019101610984565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001826001600160a01b031660601b815260140193505050506040516020818303038152906040526040518082805190602001908083835b60208310610a205780518252601f199092019160209182019101610a01565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610a82576040519150601f19603f3d011682016040523d82523d6000602084013e610a87565b606091505b509150915081610ac85760405162461bcd60e51b8152600401808060200182810382526028815260200180611c3e6028913960400191505060405180910390fd5b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b88338960405180846001600160a01b03168152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b47578181015183820152602001610b2f565b50505050905090810190601f168015610b745780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1979650505050505050565b610bab610b99611718565b6000356001600160e01b031916611807565b610bf3576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6000545b90565b60075460009060ff1615610cb057610c63610b99611718565b610cb0576040805162461bcd60e51b815260206004820152601960248201527818dbdb1bdb9e4b5d1bdad95b8b5d5b985d5d1a1bdc9a5cd959603a1b604482015290519081900360640190fd5b610cbb8484846118ee565b949350505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600454600160a01b900460ff1681565b4690565b60085481565b610d0c610b99611718565b610d54576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b6001600160a01b038216600090815260016020526040902054610d779082611b4d565b6001600160a01b03831660009081526001602052604081209190915554610d9e9082611b4d565b6000556040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a26040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b610e36610e30611718565b826110e0565b50565b600080610ed68830898960405160200180858152602001846001600160a01b031660601b815260140183815260200182805190602001908083835b60208310610e935780518252601f199092019160209182019101610e74565b6001836020036101000a03801982511681845116808217855250505050505090500194505050505060405160208183030381529060405280519060200120611b9c565b9050600060018285888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610f34573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f9c576040805162461bcd60e51b815260206004820152601f60248201527f636f6c6f6e792d6d65746174782d696e76616c69642d7369676e617475726500604482015290519081900360640190fd5b6001600160a01b038a8116911614915050979650505050505050565b6001600160a01b031660009081526001602052604090205490565b610fde610b99611718565b611026576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada490600090a250565b6004546001600160a01b031681565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108435780601f1061081857610100808354040283529160200191610843565b6110e8611718565b6001600160a01b0316826001600160a01b03161461121d576001600160a01b03821660009081526002602052604081208291611122611718565b6001600160a01b03166001600160a01b03168152602001908152602001600020541015611196576040805162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604081206111e1916111ba611718565b6001600160a01b03166001600160a01b031681526020019081526020016000205482611bed565b6001600160a01b038316600090815260026020526040812090611202611718565b6001600160a01b031681526020810191909152604001600020555b6001600160a01b03821660009081526001602052604090205481111561128a576040805162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e6365000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600160205260409020546112ad9082611bed565b6001600160a01b038316600090815260016020526040812091909155546112d49082611bed565b6000556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b611325610b99611718565b61136d576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b610e36611378611718565b82610d01565b611389610b99611718565b6113d1576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b6007805460ff19169055565b60006113f16113ea611718565b8484610c4a565b9392505050565b6001600160a01b031660009081526009602052604090205490565b6003546001600160a01b031681565b60075460ff1681565b60075460ff161561148e57611441610b99611718565b61148e576040805162461bcd60e51b815260206004820152601960248201527818dbdb1bdb9e4b5d1bdad95b8b5d5b985d5d1a1bdc9a5cd959603a1b604482015290519081900360640190fd5b428410156114e3576040805162461bcd60e51b815260206004820152601d60248201527f636f6c6f6e792d746f6b656e2d657870697265642d646561646c696e65000000604482015290519081900360640190fd5b6008546001600160a01b0380891660008181526009602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156115fe573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116345750886001600160a01b0316816001600160a01b0316145b611685576040805162461bcd60e51b815260206004820152601e60248201527f636f6c6f6e792d746f6b656e2d696e76616c69642d7369676e61747572650000604482015290519081900360640190fd5b6001600160a01b03808a166000818152600260209081526040808320948d16808452948252918290208b905581518b815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600036333014801561172b575060348110155b156117ba5760606000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505082810160131901519091507f02bcc191e283bfba76a1369ec8ba06566f33010645097c104c312753e04935e881146117a657339350505050610c47565b508101516001600160a01b031691506117c3565b33915050610c47565b5090565b6001600160a01b0381166000908152600960205260409020546117eb906001611b4d565b6001600160a01b03909116600090815260096020526040902055565b60006001600160a01b038316301415611822575060016108d6565b6004546001600160a01b0384811691161415611840575060016108d6565b6003546001600160a01b0316611858575060006108d6565b6003546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d60208110156118e557600080fd5b505190506108d6565b60006118f8611718565b6001600160a01b0316846001600160a01b031614611a2d576001600160a01b03841660009081526002602052604081208391611932611718565b6001600160a01b03166001600160a01b031681526020019081526020016000205410156119a6576040805162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604081206119f1916119ca611718565b6001600160a01b03166001600160a01b031681526020019081526020016000205483611bed565b6001600160a01b038516600090815260026020526040812090611a12611718565b6001600160a01b031681526020810191909152604001600020555b6001600160a01b038416600090815260016020526040902054821115611a9a576040805162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e6365000000604482015290519081900360640190fd5b6001600160a01b038416600090815260016020526040902054611abd9083611bed565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611aec9083611b4d565b6001600160a01b0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b808201828110156108d6576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b808203828111156108d6576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fdfe636f6c6f6e792d6d65746174782d66756e6374696f6e2d63616c6c2d756e7375636365737366756c6d6574617472616e73616374696f6e2d7369676e65722d7369676e61747572652d6d69736d61746368a264697066735822122082c1a3762c8ebf8f150963019b4478f3d750de2034ec4e210f0f38bedd7a95d064736f6c63430007030033",
  "deployedBytecode": "0x6080604052600436106101815760003560e01c806370a08231116100d1578063a69df4b51161008a578063bf7e214f11610064578063bf7e214f146106fa578063cf3090121461070f578063d505accf14610724578063dd62ed3e1461078257610181565b8063a69df4b514610679578063a9059cbb1461068e578063b3eac1d8146106c757610181565b806370a082311461056a5780637a9e5e4b1461059d5780638da5cb5b146105d057806395d89b41146106015780639dc29fac14610616578063a0712d681461064f57610181565b806330adf81f1161013e5780633644e515116101185780633644e5151461041557806340c10f191461042a57806342966c68146104635780636281133d1461048d57610181565b806330adf81f146103c0578063313ce567146103d55780633408e4701461040057610181565b806306fdde0314610186578063095ea7b3146102105780630c53c51c1461025d57806313af40351461032157806318160ddd1461035657806323b872dd1461037d575b600080fd5b34801561019257600080fd5b5061019b6107bd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d55781810151838201526020016101bd565b50505050905090810190601f1680156102025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021c57600080fd5b506102496004803603604081101561023357600080fd5b506001600160a01b03813516906020013561084b565b604080519115158252519081900360200190f35b61019b600480360360a081101561027357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460018302840111640100000000831117156102d257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff166108dc565b34801561032d57600080fd5b506103546004803603602081101561034457600080fd5b50356001600160a01b0316610b8e565b005b34801561036257600080fd5b5061036b610c43565b60408051918252519081900360200190f35b34801561038957600080fd5b50610249600480360360608110156103a057600080fd5b506001600160a01b03813581169160208101359091169060400135610c4a565b3480156103cc57600080fd5b5061036b610cc3565b3480156103e157600080fd5b506103ea610ce7565b6040805160ff9092168252519081900360200190f35b34801561040c57600080fd5b5061036b610cf7565b34801561042157600080fd5b5061036b610cfb565b34801561043657600080fd5b506103546004803603604081101561044d57600080fd5b506001600160a01b038135169060200135610d01565b34801561046f57600080fd5b506103546004803603602081101561048657600080fd5b5035610e25565b34801561049957600080fd5b50610249600480360360e08110156104b057600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156104e757600080fd5b8201836020820111156104f957600080fd5b8035906020019184600183028401116401000000008311171561051b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff16610e39565b34801561057657600080fd5b5061036b6004803603602081101561058d57600080fd5b50356001600160a01b0316610fb8565b3480156105a957600080fd5b50610354600480360360208110156105c057600080fd5b50356001600160a01b0316610fd3565b3480156105dc57600080fd5b506105e5611076565b604080516001600160a01b039092168252519081900360200190f35b34801561060d57600080fd5b5061019b611085565b34801561062257600080fd5b506103546004803603604081101561063957600080fd5b506001600160a01b0381351690602001356110e0565b34801561065b57600080fd5b506103546004803603602081101561067257600080fd5b503561131a565b34801561068557600080fd5b5061035461137e565b34801561069a57600080fd5b50610249600480360360408110156106b157600080fd5b506001600160a01b0381351690602001356113dd565b3480156106d357600080fd5b5061036b600480360360208110156106ea57600080fd5b50356001600160a01b03166113f8565b34801561070657600080fd5b506105e5611413565b34801561071b57600080fd5b50610249611422565b34801561073057600080fd5b50610354600480360360e081101561074757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561142b565b34801561078e57600080fd5b5061036b600480360360408110156107a557600080fd5b506001600160a01b03813581169160200135166116ed565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108435780601f1061081857610100808354040283529160200191610843565b820191906000526020600020905b81548152906001019060200180831161082657829003601f168201915b505050505081565b6000816002600061085a611718565b6001600160a01b0390811682526020808301939093526040918201600090812091881680825291909352912091909155610892611718565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a35060015b92915050565b60606108fc866108eb886113f8565b6108f3610cf7565b88888888610e39565b6109375760405162461bcd60e51b8152600401808060200182810382526029815260200180611c666029913960400191505060405180910390fd5b610940866117c7565b60006060306001600160a01b0316877f02bcc191e283bfba76a1369ec8ba06566f33010645097c104c312753e04935e88a6040516020018084805190602001908083835b602083106109a35780518252601f199092019160209182019101610984565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001826001600160a01b031660601b815260140193505050506040516020818303038152906040526040518082805190602001908083835b60208310610a205780518252601f199092019160209182019101610a01565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610a82576040519150601f19603f3d011682016040523d82523d6000602084013e610a87565b606091505b509150915081610ac85760405162461bcd60e51b8152600401808060200182810382526028815260200180611c3e6028913960400191505060405180910390fd5b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b88338960405180846001600160a01b03168152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b47578181015183820152602001610b2f565b50505050905090810190601f168015610b745780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1979650505050505050565b610bab610b99611718565b6000356001600160e01b031916611807565b610bf3576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6000545b90565b60075460009060ff1615610cb057610c63610b99611718565b610cb0576040805162461bcd60e51b815260206004820152601960248201527818dbdb1bdb9e4b5d1bdad95b8b5d5b985d5d1a1bdc9a5cd959603a1b604482015290519081900360640190fd5b610cbb8484846118ee565b949350505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600454600160a01b900460ff1681565b4690565b60085481565b610d0c610b99611718565b610d54576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b6001600160a01b038216600090815260016020526040902054610d779082611b4d565b6001600160a01b03831660009081526001602052604081209190915554610d9e9082611b4d565b6000556040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a26040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b610e36610e30611718565b826110e0565b50565b600080610ed68830898960405160200180858152602001846001600160a01b031660601b815260140183815260200182805190602001908083835b60208310610e935780518252601f199092019160209182019101610e74565b6001836020036101000a03801982511681845116808217855250505050505090500194505050505060405160208183030381529060405280519060200120611b9c565b9050600060018285888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610f34573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f9c576040805162461bcd60e51b815260206004820152601f60248201527f636f6c6f6e792d6d65746174782d696e76616c69642d7369676e617475726500604482015290519081900360640190fd5b6001600160a01b038a8116911614915050979650505050505050565b6001600160a01b031660009081526001602052604090205490565b610fde610b99611718565b611026576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada490600090a250565b6004546001600160a01b031681565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108435780601f1061081857610100808354040283529160200191610843565b6110e8611718565b6001600160a01b0316826001600160a01b03161461121d576001600160a01b03821660009081526002602052604081208291611122611718565b6001600160a01b03166001600160a01b03168152602001908152602001600020541015611196576040805162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604081206111e1916111ba611718565b6001600160a01b03166001600160a01b031681526020019081526020016000205482611bed565b6001600160a01b038316600090815260026020526040812090611202611718565b6001600160a01b031681526020810191909152604001600020555b6001600160a01b03821660009081526001602052604090205481111561128a576040805162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e6365000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600160205260409020546112ad9082611bed565b6001600160a01b038316600090815260016020526040812091909155546112d49082611bed565b6000556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b611325610b99611718565b61136d576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b610e36611378611718565b82610d01565b611389610b99611718565b6113d1576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b6007805460ff19169055565b60006113f16113ea611718565b8484610c4a565b9392505050565b6001600160a01b031660009081526009602052604090205490565b6003546001600160a01b031681565b60075460ff1681565b60075460ff161561148e57611441610b99611718565b61148e576040805162461bcd60e51b815260206004820152601960248201527818dbdb1bdb9e4b5d1bdad95b8b5d5b985d5d1a1bdc9a5cd959603a1b604482015290519081900360640190fd5b428410156114e3576040805162461bcd60e51b815260206004820152601d60248201527f636f6c6f6e792d746f6b656e2d657870697265642d646561646c696e65000000604482015290519081900360640190fd5b6008546001600160a01b0380891660008181526009602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156115fe573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116345750886001600160a01b0316816001600160a01b0316145b611685576040805162461bcd60e51b815260206004820152601e60248201527f636f6c6f6e792d746f6b656e2d696e76616c69642d7369676e61747572650000604482015290519081900360640190fd5b6001600160a01b03808a166000818152600260209081526040808320948d16808452948252918290208b905581518b815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600036333014801561172b575060348110155b156117ba5760606000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505082810160131901519091507f02bcc191e283bfba76a1369ec8ba06566f33010645097c104c312753e04935e881146117a657339350505050610c47565b508101516001600160a01b031691506117c3565b33915050610c47565b5090565b6001600160a01b0381166000908152600960205260409020546117eb906001611b4d565b6001600160a01b03909116600090815260096020526040902055565b60006001600160a01b038316301415611822575060016108d6565b6004546001600160a01b0384811691161415611840575060016108d6565b6003546001600160a01b0316611858575060006108d6565b6003546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d60208110156118e557600080fd5b505190506108d6565b60006118f8611718565b6001600160a01b0316846001600160a01b031614611a2d576001600160a01b03841660009081526002602052604081208391611932611718565b6001600160a01b03166001600160a01b031681526020019081526020016000205410156119a6576040805162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604081206119f1916119ca611718565b6001600160a01b03166001600160a01b031681526020019081526020016000205483611bed565b6001600160a01b038516600090815260026020526040812090611a12611718565b6001600160a01b031681526020810191909152604001600020555b6001600160a01b038416600090815260016020526040902054821115611a9a576040805162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e6365000000604482015290519081900360640190fd5b6001600160a01b038416600090815260016020526040902054611abd9083611bed565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611aec9083611b4d565b6001600160a01b0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b808201828110156108d6576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b808203828111156108d6576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fdfe636f6c6f6e792d6d65746174782d66756e6374696f6e2d63616c6c2d756e7375636365737366756c6d6574617472616e73616374696f6e2d7369676e65722d7369676e61747572652d6d69736d61746368a264697066735822122082c1a3762c8ebf8f150963019b4478f3d750de2034ec4e210f0f38bedd7a95d064736f6c63430007030033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "784:3416:47:-:0;;;1558:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1558:534:47;;;;;;;;;;-1:-1:-1;1558:534:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1558:534:47;;;;;;;;;;-1:-1:-1;1558:534:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1558:534:47;;;;;;-1:-1:-1;824:1:47;;-1:-1:-1;824:1:47;1285:9:46;824:1:47;1295:11:46;:9;:11::i;:::-;-1:-1:-1;;;;;1285:22:46;;;;;;;;;;;;-1:-1:-1;1285:22:46;;;:31;;;;1326:16;1007:11:45;:9;:11::i;:::-;999:5;:19;;-1:-1:-1;;;;;;999:19:45;-1:-1:-1;;;;;999:19:45;;;;;;;;;;1045:11;:9;:11::i;:::-;-1:-1:-1;;;;;1033:24:45;;;;;;;;;;;1637:12:47;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;1655:16:47;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;1677:8:47;:20;;-1:-1:-1;;;;1677:20:47;-1:-1:-1;;;1677:20:47;;;;;;;1703:6;:13;;-1:-1:-1;;1703:13:47;-1:-1:-1;1703:13:47;;;;;;1966:22;;1982:4;1966:22;;1774:9;;1857:95;;1966:22;;;1982:4;;1966:22;1677:20;1966:22;;;;;;;;-1:-1:-1;;1966:22:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1966:22:47;;;;;;;;;2012:10;;;;;;;;-1:-1:-1;;;2012:10:47;;;;;1833:248;;;;;;;;;;;;;2002:21;1833:248;;;;;;;;;;;2066:4;1833:248;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1814:273:47;;;;;1795:16;:292;-1:-1:-1;784:3416:47;;-1:-1:-1;;784:3416:47;197:737:33;240:22;290:8;318:10;340:4;318:27;:42;;;;;358:2;349:5;:11;;318:42;315:613;;;376:18;397:8;;376:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;486:26:33;;;-1:-1:-1;;486:26:33;480:33;376:29;;-1:-1:-1;162:28:33;544;;540:83;;598:10;591:17;;;;;;;540:83;-1:-1:-1;793:17:33;;787:24;-1:-1:-1;;;;;783:73:33;;-1:-1:-1;645:225:33;;;907:10;900:17;;;;;315:613;197:737;;;:::o;784:3416:47:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:3416:47;;;-1:-1:-1;784:3416:47;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "784:3416:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:18;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:194:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2421:194:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1268:712:22;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1268:712:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1268:712:22;;-1:-1:-1;;1268:712:22;;;-1:-1:-1;;;1268:712:22;;;;;;;;;;;:::i;1070:130:45:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1070:130:45;-1:-1:-1;;;;;1070:130:45;;:::i;:::-;;1355:90:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2096:158:47;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2096:158:47;;;;;;;;;;;;;;;;;:::i;3355:108::-;;;;;;;;;;;;;:::i;843:21::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;750:133:34;;;;;;;;;;;;;:::i;937:31:47:-;;;;;;;;;;;;;:::i;2405:206::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2405:206:47;;;;;;;;:::i;2334:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2334:67:47;;:::i;2206:431:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2206:431:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2206:431:22;;-1:-1:-1;;2206:431:22;;;-1:-1:-1;;;2206:431:22;;;;;;;;;;;:::i;1450:106:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1450:106:46;-1:-1:-1;;;;;1450:106:46;;:::i;1206:167:45:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1206:167:45;-1:-1:-1;;;;;1206:167:45;;:::i;942:26::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;942:26:45;;;;;;;;;;;;;;868:20:47;;;;;;;;;;;;;:::i;2615:427::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2615:427:47;;;;;;;;:::i;2258:72::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2258:72:47;;:::i;3046:59::-;;;;;;;;;;;;;:::i;1692:134:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1692:134:46;;;;;;;;:::i;1124:138:47:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1124:138:47;-1:-1:-1;;;;;1124:138:47;;:::i;906:30:45:-;;;;;;;;;;;;;:::i;915:18:47:-;;;;;;;;;;;;;:::i;3468:730::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3468:730:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1561:125:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1561:125:46;;;;;;;;;;:::i;892:18:47:-;;;;;;;;;;;;;;;-1:-1:-1;;892:18:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2421:194:46:-;2489:4;2536:3;2505:10;:23;2516:11;:9;:11::i;:::-;-1:-1:-1;;;;;2505:23:46;;;;;;;;;;;;;;;;;-1:-1:-1;2505:23:46;;;:28;;;;;;;;;;;;:34;;;;2564:11;:9;:11::i;:::-;-1:-1:-1;;;;;2555:31:46;;2582:3;2555:31;;;;;;;;;;;;;;;;;;-1:-1:-1;2604:4:46;2421:194;;;;;:::o;1268:712:22:-;1411:12;1442:90;1449:5;1456:30;1480:5;1456:23;:30::i;:::-;1488:12;:10;:12::i;:::-;1502:8;1512:5;1519;1526;1442:6;:90::i;:::-;1434:144;;;;-1:-1:-1;;;1434:144:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:36;1616:5;1586:29;:36::i;:::-;1700:12;1714:23;1749:4;-1:-1:-1;;;;;1741:18:22;1777:8;162:28:33;1809:5:22;1760:55;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1760:55:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1760:55:22;;;;;;;;;;;;;;;;;;;;;;;;1741:75;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1741:75:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1699:117;;;;1832:7;1824:60;;;;-1:-1:-1;;;1824:60:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1898:52;1922:5;1929:10;1941:8;1898:52;;;;-1:-1:-1;;;;;1898:52:22;;;;;;-1:-1:-1;;;;;1898:52:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1965:10;1268:712;-1:-1:-1;;;;;;;1268:712:22:o;1070:130:45:-;1411:34;1424:11;:9;:11::i;:::-;1437:7;;-1:-1:-1;;;;;;1437:7:45;1411:12;:34::i;:::-;1403:67;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;;;;1146:5:::1;:14:::0;;-1:-1:-1;;;;;;1146:14:45::1;-1:-1:-1::0;;;;;1146:14:45;;::::1;::::0;;;::::1;::::0;;;;1175:18:::1;::::0;1187:5;::::1;::::0;1175:18:::1;::::0;-1:-1:-1;;1175:18:45::1;1070:130:::0;:::o;1355:90:46:-;1408:4;1431:7;1355:90;;:::o;2096:158:47:-;1448:6;;2195:4;;1448:6;;1444:99;;;1472:34;1485:11;:9;:11::i;1472:34::-;1464:72;;;;;-1:-1:-1;;;1464:72:47;;;;;;;;;;;;-1:-1:-1;;;1464:72:47;;;;;;;;;;;;;;;2216:33:::1;2235:3;2240;2245;2216:18;:33::i;:::-;2209:40:::0;2096:158;-1:-1:-1;;;;2096:158:47:o;3355:108::-;3397:66;3355:108;:::o;843:21::-;;;-1:-1:-1;;;843:21:47;;;;;:::o;750:133:34:-;849:9;750:133;:::o;937:31:47:-;;;;:::o;2405:206::-;1411:34:45;1424:11;:9;:11::i;1411:34::-;1403:67;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;;;;-1:-1:-1;;;;;2484:14:47;::::1;;::::0;;;:9:::1;:14;::::0;;;;;2480:24:::1;::::0;2500:3;2480::::1;:24::i;:::-;-1:-1:-1::0;;;;;2463:14:47;::::1;;::::0;;;:9:::1;:14;::::0;;;;:41;;;;2524:7;2520:17:::1;::::0;2533:3;2520::::1;:17::i;:::-;2510:7;:27:::0;2549:14:::1;::::0;;;;;;;-1:-1:-1;;;;;2549:14:47;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;2574:32;::::0;;;;;;;-1:-1:-1;;;;;2574:32:47;::::1;::::0;2591:3:::1;::::0;2574:32:::1;::::0;;;;::::1;::::0;;::::1;2405:206:::0;;:::o;2334:67::-;2374:22;2379:11;:9;:11::i;:::-;2392:3;2374:4;:22::i;:::-;2334:67;:::o;2206:431:22:-;2365:4;2380:12;2395:71;2431:6;2439:4;2445:8;2455;2414:50;;;;;;;;;;;-1:-1:-1;;;;;2414:50:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2414:50:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:61;;;;;;2395:8;:71::i;:::-;2380:86;;2474:14;2491:36;2501:4;2507:5;2514;2521;2491:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2491:36:22;;-1:-1:-1;;2491:36:22;;;-1:-1:-1;;;;;;;2543:20:22;;2535:64;;;;;-1:-1:-1;;;2535:64:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2615:16:22;;;;;;;-1:-1:-1;;2206:431:22;;;;;;;;;:::o;1450:106:46:-;-1:-1:-1;;;;;1535:14:46;1512:4;1535:14;;;:9;:14;;;;;;;1450:106::o;1206:167:45:-;1411:34;1424:11;:9;:11::i;1411:34::-;1403:67;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;;;;1294:9:::1;:22:::0;;-1:-1:-1;;;;;;1294:22:45::1;-1:-1:-1::0;;;;;1294:22:45;;::::1;::::0;;;::::1;::::0;;;;1331:35:::1;::::0;1355:9;::::1;::::0;1331:35:::1;::::0;-1:-1:-1;;1331:35:45::1;1206:167:::0;:::o;942:26::-;;;-1:-1:-1;;;;;942:26:45;;:::o;868:20:47:-;;;;;;;;;;;;;;;-1:-1:-1;;868:20:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2615:427;2679:11;:9;:11::i;:::-;-1:-1:-1;;;;;2672:18:47;:3;-1:-1:-1;;;;;2672:18:47;;2668:194;;-1:-1:-1;;;;;2708:15:47;;;;;;:10;:15;;;;;2740:3;;2724:11;:9;:11::i;:::-;-1:-1:-1;;;;;2708:28:47;-1:-1:-1;;;;;2708:28:47;;;;;;;;;;;;;:35;;2700:78;;;;;-1:-1:-1;;;2700:78:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2821:15:47;;;;;;:10;:15;;;;;2817:38;;2837:11;:9;:11::i;:::-;-1:-1:-1;;;;;2821:28:47;-1:-1:-1;;;;;2821:28:47;;;;;;;;;;;;;2851:3;2817;:38::i;:::-;-1:-1:-1;;;;;2786:15:47;;;;;;:10;:15;;;;;;2802:11;:9;:11::i;:::-;-1:-1:-1;;;;;2786:28:47;;;;;;;;;;;;-1:-1:-1;2786:28:47;:69;2668:194;-1:-1:-1;;;;;2876:14:47;;;;;;:9;:14;;;;;;:21;-1:-1:-1;2876:21:47;2868:63;;;;;-1:-1:-1;;;2868:63:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2958:14:47;;;;;;:9;:14;;;;;;2954:24;;2974:3;2954;:24::i;:::-;-1:-1:-1;;;;;2937:14:47;;;;;;:9;:14;;;;;:41;;;;2998:7;2994:17;;3007:3;2994;:17::i;:::-;2984:7;:27;3023:14;;;;;;;;-1:-1:-1;;;;;3023:14:47;;;;;;;;;;;;;2615:427;;:::o;2258:72::-;1411:34:45;1424:11;:9;:11::i;1411:34::-;1403:67;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;;;;2303:22:47::1;2308:11;:9;:11::i;:::-;2321:3;2303:4;:22::i;3046:59::-:0;1411:34:45;1424:11;:9;:11::i;1411:34::-;1403:67;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;-1:-1:-1;;;1403:67:45;;;;;;;;;;;;;;;3086:6:47::1;:14:::0;;-1:-1:-1;;3086:14:47::1;::::0;;3046:59::o;1692:134:46:-;1761:4;1784:35;1797:11;:9;:11::i;:::-;1810:3;1815;1784:12;:35::i;:::-;1777:42;1692:134;-1:-1:-1;;;1692:134:46:o;1124:138:47:-;-1:-1:-1;;;;;1229:28:47;1202:13;1229:28;;;:21;:28;;;;;;;1124:138::o;906:30:45:-;;;-1:-1:-1;;;;;906:30:45;;:::o;915:18:47:-;;;;;;:::o;3468:730::-;1448:6;;;;1444:99;;;1472:34;1485:11;:9;:11::i;1472:34::-;1464:72;;;;;-1:-1:-1;;;1464:72:47;;;;;;;;;;;;-1:-1:-1;;;1464:72:47;;;;;;;;;;;;;;;3626:15:::1;3614:8;:27;;3606:69;;;::::0;;-1:-1:-1;;;3606:69:47;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3780:16;::::0;-1:-1:-1;;;;;3873:28:47;;::::1;3684:14;3873:28:::0;;;:21:::1;:28;::::0;;;;;;;:30;;::::1;::::0;;::::1;::::0;;;3822:92;;3397:66:::1;3822:92:::0;;::::1;::::0;;;;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3812:103;;;;::::1;::::0;-1:-1:-1;;;3722:205:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3701:234;;;;::::1;::::0;;;;3970:26;;;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;3684:14;;3873:30;3970:26;;;;;-1:-1:-1;;3970:26:47;;;;;;;;;;3873:30;3970:26:::1;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3970:26:47::1;::::0;-1:-1:-1;;3970:26:47;;;-1:-1:-1;;;;;;;4012:30:47;::::1;::::0;;::::1;::::0;:59:::1;;;4066:5;-1:-1:-1::0;;;;;4046:25:47::1;:16;-1:-1:-1::0;;;;;4046:25:47::1;;4012:59;4004:102;;;::::0;;-1:-1:-1;;;4004:102:47;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;4114:17:47;;::::1;;::::0;;;:10:::1;:17;::::0;;;;;;;:26;;::::1;::::0;;;;;;;;;;:34;;;4162:31;;;;;;;::::1;::::0;;;;;;;;::::1;1548:1;;3468:730:::0;;;;;;;:::o;1561:125:46:-;-1:-1:-1;;;;;1659:15:46;;;1636:4;1659:15;;;:10;:15;;;;;;;;:20;;;;;;;;;;;;;1561:125::o;197:737:33:-;240:22;290:8;318:10;340:4;318:27;:42;;;;;358:2;349:5;:11;;318:42;315:613;;;376:18;397:8;;376:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;486:26:33;;;-1:-1:-1;;486:26:33;480:33;376:29;;-1:-1:-1;162:28:33;544;;540:83;;598:10;591:17;;;;;;;540:83;-1:-1:-1;793:17:33;;787:24;-1:-1:-1;;;;;783:73:33;;-1:-1:-1;645:225:33;;;907:10;900:17;;;;;315:613;197:737;;:::o;1266:150:47:-;-1:-1:-1;;;;;1379:28:47;;;;;;:21;:28;;;;;;1375:36;;1409:1;1375:3;:36::i;:::-;-1:-1:-1;;;;;1344:28:47;;;;;;;:21;:28;;;;;:67;1266:150::o;1494:370:45:-;1564:4;-1:-1:-1;;;;;1584:20:45;;1599:4;1584:20;1580:278;;;-1:-1:-1;1627:4:45;1620:11;;1580:278;1659:5;;-1:-1:-1;;;;;1652:12:45;;;1659:5;;1652:12;1648:210;;;-1:-1:-1;1687:4:45;1680:11;;1648:210;1712:9;;-1:-1:-1;;;;;1712:9:45;1708:150;;-1:-1:-1;1762:5:45;1755:12;;1708:150;1805:9;;:42;;;-1:-1:-1;;;1805:42:45;;-1:-1:-1;;;;;1805:42:45;;;;;;;1836:4;1805:42;;;;-1:-1:-1;;;;;;1805:42:45;;;;;;;;:9;;;;;:17;;:42;;;;;;;;;;;;;;:9;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1805:42:45;;-1:-1:-1;1798:49:45;;1832:583:46;1942:4;1973:11;:9;:11::i;:::-;-1:-1:-1;;;;;1966:18:46;:3;-1:-1:-1;;;;;1966:18:46;;1962:210;;-1:-1:-1;;;;;2008:15:46;;;;;;:10;:15;;;;;2040:3;;2024:11;:9;:11::i;:::-;-1:-1:-1;;;;;2008:28:46;-1:-1:-1;;;;;2008:28:46;;;;;;;;;;;;;:35;;2000:78;;;;;-1:-1:-1;;;2000:78:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2127:15:46;;;;;;:10;:15;;;;;2123:38;;2143:11;:9;:11::i;:::-;-1:-1:-1;;;;;2127:28:46;-1:-1:-1;;;;;2127:28:46;;;;;;;;;;;;;2157:3;2123;:38::i;:::-;-1:-1:-1;;;;;2092:15:46;;;;;;:10;:15;;;;;;2108:11;:9;:11::i;:::-;-1:-1:-1;;;;;2092:28:46;;;;;;;;;;;;-1:-1:-1;2092:28:46;:69;1962:210;-1:-1:-1;;;;;2190:14:46;;;;;;:9;:14;;;;;;:21;-1:-1:-1;2190:21:46;2182:63;;;;;-1:-1:-1;;;2182:63:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2276:14:46;;;;;;:9;:14;;;;;;2272:24;;2292:3;2272;:24::i;:::-;-1:-1:-1;;;;;2255:14:46;;;;;;;:9;:14;;;;;;:41;;;;2327:14;;;;;;;2323:24;;2343:3;2323;:24::i;:::-;-1:-1:-1;;;;;2306:14:46;;;;;;;:9;:14;;;;;;;;;:41;;;;2363:23;;;;;;;2306:14;;2363:23;;;;;;;;;;;;;-1:-1:-1;2404:4:46;1832:583;;;;;:::o;744:126:79:-;827:5;;;822:16;;;;814:49;;;;;-1:-1:-1;;;814:49:79;;;;;;;;;;;;-1:-1:-1;;;814:49:79;;;;;;;;;;;;;;2047:155:22;2137:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2127:70;;;;;;2047:155::o;875:127:79:-;958:5;;;953:16;;;;945:50;;;;;-1:-1:-1;;;945:50:79;;;;;;;;;;;;-1:-1:-1;;;945:50:79;;;;;;;;;;;;;",
  "source": "/*\n  This file is part of The Colony Network.\n\n  The Colony Network is free software: you can redistribute it and/or modify\n  it under the terms of the GNU General Public License as published by\n  the Free Software Foundation, either version 3 of the License, or\n  (at your option) any later version.\n\n  The Colony Network is distributed in the hope that it will be useful,\n  but WITHOUT ANY WARRANTY; without even the implied warranty of\n  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  GNU General Public License for more details.\n\n  You should have received a copy of the GNU General Public License\n  along with The Colony Network. If not, see <http://www.gnu.org/licenses/>.\n*/\n\npragma solidity 0.7.3;\n\nimport \"./DSTokenBaseMeta.sol\";\nimport \"./DSAuthMeta.sol\";\n\ncontract MetaTxToken is DSTokenBaseMeta(0), DSAuthMeta {\n  uint8 public decimals;\n  string public symbol;\n  string public name;\n\n  bool public locked;\n  bytes32 public DOMAIN_SEPARATOR;\n\n  mapping(address => uint256) metatransactionNonces;\n\n  event Mint(address indexed guy, uint256 wad);\n  event Burn(address indexed guy, uint256 wad);\n\n  function getMetatransactionNonce(address _user) override public view returns (uint256 nonce){\n    return metatransactionNonces[_user];\n  }\n\n  function incrementMetatransactionNonce(address _user) override internal {\n    metatransactionNonces[_user] = add(metatransactionNonces[_user], 1);\n  }\n\n  modifier unlocked {\n    if (locked) {\n      require(isAuthorized(msgSender(), msg.sig), \"colony-token-unauthorised\");\n    }\n    _;\n  }\n\n  constructor(string memory _name, string memory _symbol, uint8 _decimals) {\n    name = _name;\n    symbol = _symbol;\n    decimals = _decimals;\n    locked = true;\n\n    uint256 chainId;\n    assembly {\n        chainId := chainid()\n    }\n\n    DOMAIN_SEPARATOR = keccak256(\n        abi.encode(\n            keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n            keccak256(bytes(name)),\n            keccak256(bytes(\"1\")),\n            chainId,\n            address(this)\n        )\n    );\n  }\n\n  function transferFrom(address src, address dst, uint256 wad) public\n  unlocked override\n  returns (bool)\n  {\n    return super.transferFrom(src, dst, wad);\n  }\n\n  function mint(uint256 wad) public auth {\n    mint(msgSender(), wad);\n  }\n\n  function burn(uint256 wad) public {\n    burn(msgSender(), wad);\n  }\n\n  function mint(address guy, uint256 wad) public auth {\n    _balances[guy] = add(_balances[guy], wad);\n    _supply = add(_supply, wad);\n\n    emit Mint(guy, wad);\n    emit Transfer(address(0x0), guy, wad);\n  }\n\n  function burn(address guy, uint256 wad) public {\n    if (guy != msgSender()) {\n      require(_approvals[guy][msgSender()] >= wad, \"ds-token-insufficient-approval\");\n      _approvals[guy][msgSender()] = sub(_approvals[guy][msgSender()], wad);\n    }\n\n    require(_balances[guy] >= wad, \"ds-token-insufficient-balance\");\n    _balances[guy] = sub(_balances[guy], wad);\n    _supply = sub(_supply, wad);\n\n    emit Burn(guy, wad);\n  }\n\n  function unlock() public\n  auth\n  {\n    locked = false;\n  }\n\n  // Pinched from https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol\n  // Which is also licenced under GPL V3\n\n  // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n  bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n\n  function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external unlocked {\n      require(deadline >= block.timestamp, \"colony-token-expired-deadline\");\n\n      bytes32 digest = keccak256(\n          abi.encodePacked(\n              \"\\x19\\x01\",\n              DOMAIN_SEPARATOR,\n              keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, metatransactionNonces[owner]++, deadline))\n          )\n      );\n      address recoveredAddress = ecrecover(digest, v, r, s);\n      require(recoveredAddress != address(0) && recoveredAddress == owner, \"colony-token-invalid-signature\");\n      _approvals[owner][spender] = value;\n\n      emit Approval(owner, spender, value);\n  }\n}",
  "sourcePath": "/home/alex/colony/colonyNetwork/contracts/metatxToken/MetaTxToken.sol",
  "ast": {
    "absolutePath": "/home/alex/colony/colonyNetwork/contracts/metatxToken/MetaTxToken.sol",
    "exportedSymbols": {
      "BasicMetaTransaction": [
        17484
      ],
      "DSAuth": [
        37396
      ],
      "DSAuthEvents": [
        37279
      ],
      "DSAuthMeta": [
        27005
      ],
      "DSAuthority": [
        37270
      ],
      "DSMath": [
        37752
      ],
      "DSTokenBaseMeta": [
        27219
      ],
      "ERC20": [
        37468
      ],
      "ERC20Events": [
        37415
      ],
      "ERC20Extended": [
        18388
      ],
      "MetaTransactionMsgSender": [
        18604
      ],
      "MetaTxToken": [
        27628
      ],
      "MultiChain": [
        18679
      ]
    },
    "id": 27629,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 27221,
        "literals": [
          "solidity",
          "0.7",
          ".3"
        ],
        "nodeType": "PragmaDirective",
        "src": "700:22:47"
      },
      {
        "absolutePath": "/home/alex/colony/colonyNetwork/contracts/metatxToken/DSTokenBaseMeta.sol",
        "file": "./DSTokenBaseMeta.sol",
        "id": 27222,
        "nodeType": "ImportDirective",
        "scope": 27629,
        "sourceUnit": 27220,
        "src": "724:31:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alex/colony/colonyNetwork/contracts/metatxToken/DSAuthMeta.sol",
        "file": "./DSAuthMeta.sol",
        "id": 27223,
        "nodeType": "ImportDirective",
        "scope": 27629,
        "sourceUnit": 27006,
        "src": "756:26:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": [
              {
                "hexValue": "30",
                "id": 27225,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "824:1:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0"
              }
            ],
            "baseName": {
              "id": 27224,
              "name": "DSTokenBaseMeta",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 27219,
              "src": "808:15:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSTokenBaseMeta_$27219",
                "typeString": "contract DSTokenBaseMeta"
              }
            },
            "id": 27226,
            "nodeType": "InheritanceSpecifier",
            "src": "808:18:47"
          },
          {
            "baseName": {
              "id": 27227,
              "name": "DSAuthMeta",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 27005,
              "src": "828:10:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSAuthMeta_$27005",
                "typeString": "contract DSAuthMeta"
              }
            },
            "id": 27228,
            "nodeType": "InheritanceSpecifier",
            "src": "828:10:47"
          }
        ],
        "contractDependencies": [
          17484,
          18604,
          18679,
          27005,
          27219,
          37279,
          37415,
          37468,
          37752
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 27628,
        "linearizedBaseContracts": [
          27628,
          27005,
          27219,
          17484,
          18679,
          18604,
          37752,
          37279,
          37468,
          37415
        ],
        "name": "MetaTxToken",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "313ce567",
            "id": 27230,
            "mutability": "mutable",
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "843:21:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 27229,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "843:5:47",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "95d89b41",
            "id": 27232,
            "mutability": "mutable",
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "868:20:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 27231,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "868:6:47",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "06fdde03",
            "id": 27234,
            "mutability": "mutable",
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "892:18:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 27233,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "892:6:47",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "cf309012",
            "id": 27236,
            "mutability": "mutable",
            "name": "locked",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "915:18:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 27235,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "915:4:47",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "3644e515",
            "id": 27238,
            "mutability": "mutable",
            "name": "DOMAIN_SEPARATOR",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "937:31:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 27237,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "937:7:47",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 27242,
            "mutability": "mutable",
            "name": "metatransactionNonces",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "973:49:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 27241,
              "keyType": {
                "id": 27239,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "981:7:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "973:27:47",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 27240,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "992:7:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "id": 27248,
            "name": "Mint",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 27247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27244,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 27248,
                  "src": "1038:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27243,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1038:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27246,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27248,
                  "src": "1059:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27245,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1037:34:47"
            },
            "src": "1027:45:47"
          },
          {
            "anonymous": false,
            "id": 27254,
            "name": "Burn",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 27253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27250,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 27254,
                  "src": "1086:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27249,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1086:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27252,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27254,
                  "src": "1107:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27251,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1107:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1085:34:47"
            },
            "src": "1075:45:47"
          },
          {
            "baseFunctions": [
              17336
            ],
            "body": {
              "id": 27266,
              "nodeType": "Block",
              "src": "1216:46:47",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 27262,
                      "name": "metatransactionNonces",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27242,
                      "src": "1229:21:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 27264,
                    "indexExpression": {
                      "id": 27263,
                      "name": "_user",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27256,
                      "src": "1251:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1229:28:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 27261,
                  "id": 27265,
                  "nodeType": "Return",
                  "src": "1222:35:47"
                }
              ]
            },
            "functionSelector": "b3eac1d8",
            "id": 27267,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMetatransactionNonce",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 27258,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1172:8:47"
            },
            "parameters": {
              "id": 27257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27256,
                  "mutability": "mutable",
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 27267,
                  "src": "1157:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27255,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1156:15:47"
            },
            "returnParameters": {
              "id": 27261,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27260,
                  "mutability": "mutable",
                  "name": "nonce",
                  "nodeType": "VariableDeclaration",
                  "scope": 27267,
                  "src": "1202:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27259,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1202:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1201:15:47"
            },
            "scope": 27628,
            "src": "1124:138:47",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              17341
            ],
            "body": {
              "id": 27284,
              "nodeType": "Block",
              "src": "1338:78:47",
              "statements": [
                {
                  "expression": {
                    "id": 27282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 27273,
                        "name": "metatransactionNonces",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27242,
                        "src": "1344:21:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 27275,
                      "indexExpression": {
                        "id": 27274,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27269,
                        "src": "1366:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1344:28:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 27277,
                            "name": "metatransactionNonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27242,
                            "src": "1379:21:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 27279,
                          "indexExpression": {
                            "id": 27278,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27269,
                            "src": "1401:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1379:28:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "hexValue": "31",
                          "id": 27280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1409:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 27276,
                        "name": "add",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "1375:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1375:36:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1344:67:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27283,
                  "nodeType": "ExpressionStatement",
                  "src": "1344:67:47"
                }
              ]
            },
            "id": 27285,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "incrementMetatransactionNonce",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 27271,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1320:8:47"
            },
            "parameters": {
              "id": 27270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27269,
                  "mutability": "mutable",
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 27285,
                  "src": "1305:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27268,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1304:15:47"
            },
            "returnParameters": {
              "id": 27272,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1338:0:47"
            },
            "scope": 27628,
            "src": "1266:150:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27301,
              "nodeType": "Block",
              "src": "1438:116:47",
              "statements": [
                {
                  "condition": {
                    "id": 27287,
                    "name": "locked",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27236,
                    "src": "1448:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 27299,
                  "nodeType": "IfStatement",
                  "src": "1444:99:47",
                  "trueBody": {
                    "id": 27298,
                    "nodeType": "Block",
                    "src": "1456:87:47",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 27290,
                                    "name": "msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18603,
                                    "src": "1485:9:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 27291,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1485:11:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 27292,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1498:3:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 27293,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sig",
                                  "nodeType": "MemberAccess",
                                  "src": "1498:7:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "id": 27289,
                                "name": "isAuthorized",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27004,
                                "src": "1472:12:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$",
                                  "typeString": "function (address,bytes4) view returns (bool)"
                                }
                              },
                              "id": 27294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1472:34:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "636f6c6f6e792d746f6b656e2d756e617574686f7269736564",
                              "id": 27295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1508:27:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d37c89ab35379dbbb026297d255b69ea134b61b163699a001e9dbf9a490c7cf2",
                                "typeString": "literal_string \"colony-token-unauthorised\""
                              },
                              "value": "colony-token-unauthorised"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d37c89ab35379dbbb026297d255b69ea134b61b163699a001e9dbf9a490c7cf2",
                                "typeString": "literal_string \"colony-token-unauthorised\""
                              }
                            ],
                            "id": 27288,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1464:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 27296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1464:72:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27297,
                        "nodeType": "ExpressionStatement",
                        "src": "1464:72:47"
                      }
                    ]
                  }
                },
                {
                  "id": 27300,
                  "nodeType": "PlaceholderStatement",
                  "src": "1548:1:47"
                }
              ]
            },
            "id": 27302,
            "name": "unlocked",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 27286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1438:0:47"
            },
            "src": "1420:134:47",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27359,
              "nodeType": "Block",
              "src": "1631:461:47",
              "statements": [
                {
                  "expression": {
                    "id": 27313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27311,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27234,
                      "src": "1637:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 27312,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27304,
                      "src": "1644:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1637:12:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 27314,
                  "nodeType": "ExpressionStatement",
                  "src": "1637:12:47"
                },
                {
                  "expression": {
                    "id": 27317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27315,
                      "name": "symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27232,
                      "src": "1655:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 27316,
                      "name": "_symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27306,
                      "src": "1664:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1655:16:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 27318,
                  "nodeType": "ExpressionStatement",
                  "src": "1655:16:47"
                },
                {
                  "expression": {
                    "id": 27321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27319,
                      "name": "decimals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27230,
                      "src": "1677:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 27320,
                      "name": "_decimals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27308,
                      "src": "1688:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "1677:20:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 27322,
                  "nodeType": "ExpressionStatement",
                  "src": "1677:20:47"
                },
                {
                  "expression": {
                    "id": 27325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27323,
                      "name": "locked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27236,
                      "src": "1703:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 27324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1712:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1703:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 27326,
                  "nodeType": "ExpressionStatement",
                  "src": "1703:13:47"
                },
                {
                  "assignments": [
                    27328
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27328,
                      "mutability": "mutable",
                      "name": "chainId",
                      "nodeType": "VariableDeclaration",
                      "scope": 27359,
                      "src": "1723:15:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 27327,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1723:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 27329,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1723:15:47"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1753:36:47",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1763:20:47",
                        "value": {
                          "arguments": [],
                          "functionName": {
                            "name": "chainid",
                            "nodeType": "YulIdentifier",
                            "src": "1774:7:47"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1774:9:47"
                        },
                        "variableNames": [
                          {
                            "name": "chainId",
                            "nodeType": "YulIdentifier",
                            "src": "1763:7:47"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 27328,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1763:7:47",
                      "valueSize": 1
                    }
                  ],
                  "id": 27330,
                  "nodeType": "InlineAssembly",
                  "src": "1744:45:47"
                },
                {
                  "expression": {
                    "id": 27357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27331,
                      "name": "DOMAIN_SEPARATOR",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27238,
                      "src": "1795:16:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                  "id": 27336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1867:84:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                    "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                  },
                                  "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                    "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                  }
                                ],
                                "id": 27335,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "1857:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 27337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1857:95:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 27341,
                                      "name": "name",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27234,
                                      "src": "1982:4:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string storage ref"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string storage ref"
                                      }
                                    ],
                                    "id": 27340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1976:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 27339,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1976:5:47",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 27342,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1976:11:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes storage pointer"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes storage pointer"
                                  }
                                ],
                                "id": 27338,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "1966:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 27343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1966:22:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 27347,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2018:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                        "typeString": "literal_string \"1\""
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                        "typeString": "literal_string \"1\""
                                      }
                                    ],
                                    "id": 27346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2012:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 27345,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2012:5:47",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 27348,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2012:10:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 27344,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2002:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 27349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2002:21:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 27350,
                              "name": "chainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27328,
                              "src": "2037:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 27353,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2066:4:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MetaTxToken_$27628",
                                    "typeString": "contract MetaTxToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MetaTxToken_$27628",
                                    "typeString": "contract MetaTxToken"
                                  }
                                ],
                                "id": 27352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2058:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 27351,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2058:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 27354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2058:13:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 27333,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1833:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 27334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "1833:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 27355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1833:248:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 27332,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "1814:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 27356,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1814:273:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1795:292:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 27358,
                  "nodeType": "ExpressionStatement",
                  "src": "1795:292:47"
                }
              ]
            },
            "id": 27360,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27309,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27304,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 27360,
                  "src": "1570:19:47",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27303,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1570:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27306,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 27360,
                  "src": "1591:21:47",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27305,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1591:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27308,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 27360,
                  "src": "1614:15:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 27307,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1614:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1569:61:47"
            },
            "returnParameters": {
              "id": 27310,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1631:0:47"
            },
            "scope": 27628,
            "src": "1558:534:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27189
            ],
            "body": {
              "id": 27381,
              "nodeType": "Block",
              "src": "2203:51:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 27376,
                        "name": "src",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27362,
                        "src": "2235:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27377,
                        "name": "dst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27364,
                        "src": "2240:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27378,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27366,
                        "src": "2245:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 27374,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "2216:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_MetaTxToken_$27628",
                          "typeString": "contract super MetaTxToken"
                        }
                      },
                      "id": 27375,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27189,
                      "src": "2216:18:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) returns (bool)"
                      }
                    },
                    "id": 27379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2216:33:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 27373,
                  "id": 27380,
                  "nodeType": "Return",
                  "src": "2209:40:47"
                }
              ]
            },
            "functionSelector": "23b872dd",
            "id": 27382,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27369,
                "modifierName": {
                  "id": 27368,
                  "name": "unlocked",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 27302,
                  "src": "2166:8:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2166:8:47"
              }
            ],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 27370,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2175:8:47"
            },
            "parameters": {
              "id": 27367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27362,
                  "mutability": "mutable",
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 27382,
                  "src": "2118:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2118:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27364,
                  "mutability": "mutable",
                  "name": "dst",
                  "nodeType": "VariableDeclaration",
                  "scope": 27382,
                  "src": "2131:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27363,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2131:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27366,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27382,
                  "src": "2144:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2144:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2117:39:47"
            },
            "returnParameters": {
              "id": 27373,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27372,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 27382,
                  "src": "2195:4:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 27371,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2195:4:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2194:6:47"
            },
            "scope": 27628,
            "src": "2096:158:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27395,
              "nodeType": "Block",
              "src": "2297:33:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 27390,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18603,
                          "src": "2308:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 27391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2308:11:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 27392,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27384,
                        "src": "2321:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27389,
                      "name": "mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        27396,
                        27450
                      ],
                      "referencedDeclaration": 27450,
                      "src": "2303:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 27393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2303:22:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27394,
                  "nodeType": "ExpressionStatement",
                  "src": "2303:22:47"
                }
              ]
            },
            "functionSelector": "a0712d68",
            "id": 27396,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27387,
                "modifierName": {
                  "id": 27386,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 26957,
                  "src": "2292:4:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2292:4:47"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27384,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27396,
                  "src": "2272:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27383,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2272:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2271:13:47"
            },
            "returnParameters": {
              "id": 27388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2297:0:47"
            },
            "scope": 27628,
            "src": "2258:72:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27407,
              "nodeType": "Block",
              "src": "2368:33:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 27402,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18603,
                          "src": "2379:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 27403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2379:11:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 27404,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27398,
                        "src": "2392:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27401,
                      "name": "burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        27408,
                        27525
                      ],
                      "referencedDeclaration": 27525,
                      "src": "2374:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 27405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2374:22:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27406,
                  "nodeType": "ExpressionStatement",
                  "src": "2374:22:47"
                }
              ]
            },
            "functionSelector": "42966c68",
            "id": 27408,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27399,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27398,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27408,
                  "src": "2348:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27397,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2348:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2347:13:47"
            },
            "returnParameters": {
              "id": 27400,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2368:0:47"
            },
            "scope": 27628,
            "src": "2334:67:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27449,
              "nodeType": "Block",
              "src": "2457:154:47",
              "statements": [
                {
                  "expression": {
                    "id": 27426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 27417,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "2463:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 27419,
                      "indexExpression": {
                        "id": 27418,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27410,
                        "src": "2473:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2463:14:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 27421,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "2484:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 27423,
                          "indexExpression": {
                            "id": 27422,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27410,
                            "src": "2494:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2484:14:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 27424,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27412,
                          "src": "2500:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27420,
                        "name": "add",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "2480:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27425,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2480:24:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2463:41:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27427,
                  "nodeType": "ExpressionStatement",
                  "src": "2463:41:47"
                },
                {
                  "expression": {
                    "id": 27433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27428,
                      "name": "_supply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27018,
                      "src": "2510:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 27430,
                          "name": "_supply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27018,
                          "src": "2524:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 27431,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27412,
                          "src": "2533:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27429,
                        "name": "add",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "2520:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2520:17:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2510:27:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27434,
                  "nodeType": "ExpressionStatement",
                  "src": "2510:27:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 27436,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27410,
                        "src": "2554:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27437,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27412,
                        "src": "2559:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27435,
                      "name": "Mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27248,
                      "src": "2549:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 27438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2549:14:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27439,
                  "nodeType": "EmitStatement",
                  "src": "2544:19:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307830",
                            "id": 27443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2591:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0x0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 27442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2583:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 27441,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2583:7:47",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 27444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2583:12:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 27445,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27410,
                        "src": "2597:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27446,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27412,
                        "src": "2602:3:47",
                        "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": 27440,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37414,
                      "src": "2574:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 27447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2574:32:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27448,
                  "nodeType": "EmitStatement",
                  "src": "2569:37:47"
                }
              ]
            },
            "functionSelector": "40c10f19",
            "id": 27450,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27415,
                "modifierName": {
                  "id": 27414,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 26957,
                  "src": "2452:4:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2452:4:47"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27410,
                  "mutability": "mutable",
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 27450,
                  "src": "2419:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27409,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2419:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27412,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27450,
                  "src": "2432:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27411,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2432:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2418:26:47"
            },
            "returnParameters": {
              "id": 27416,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2457:0:47"
            },
            "scope": 27628,
            "src": "2405:206:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27524,
              "nodeType": "Block",
              "src": "2662:380:47",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 27460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 27457,
                      "name": "guy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27452,
                      "src": "2672:3:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 27458,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18603,
                        "src": "2679:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                          "typeString": "function () view returns (address payable)"
                        }
                      },
                      "id": 27459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2679:11:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2672:18:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 27491,
                  "nodeType": "IfStatement",
                  "src": "2668:194:47",
                  "trueBody": {
                    "id": 27490,
                    "nodeType": "Block",
                    "src": "2692:170:47",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 27469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 27462,
                                    "name": "_approvals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27028,
                                    "src": "2708:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 27464,
                                  "indexExpression": {
                                    "id": 27463,
                                    "name": "guy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27452,
                                    "src": "2719:3:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2708:15:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 27467,
                                "indexExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 27465,
                                    "name": "msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18603,
                                    "src": "2724:9:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 27466,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2724:11:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2708:28:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 27468,
                                "name": "wad",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27454,
                                "src": "2740:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2708:35:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "64732d746f6b656e2d696e73756666696369656e742d617070726f76616c",
                              "id": 27470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2745:32:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_696d4069430cf8d6cb2027cca74c9eeb7bde4a18fa913c0c20fafe3803d09463",
                                "typeString": "literal_string \"ds-token-insufficient-approval\""
                              },
                              "value": "ds-token-insufficient-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_696d4069430cf8d6cb2027cca74c9eeb7bde4a18fa913c0c20fafe3803d09463",
                                "typeString": "literal_string \"ds-token-insufficient-approval\""
                              }
                            ],
                            "id": 27461,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2700:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 27471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2700:78:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27472,
                        "nodeType": "ExpressionStatement",
                        "src": "2700:78:47"
                      },
                      {
                        "expression": {
                          "id": 27488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 27473,
                                "name": "_approvals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27028,
                                "src": "2786:10:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 27477,
                              "indexExpression": {
                                "id": 27474,
                                "name": "guy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27452,
                                "src": "2797:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2786:15:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 27478,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 27475,
                                "name": "msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18603,
                                "src": "2802:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 27476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2802:11:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2786:28:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 27480,
                                    "name": "_approvals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27028,
                                    "src": "2821:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 27482,
                                  "indexExpression": {
                                    "id": 27481,
                                    "name": "guy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27452,
                                    "src": "2832:3:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2821:15:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 27485,
                                "indexExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 27483,
                                    "name": "msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18603,
                                    "src": "2837:9:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 27484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2837:11:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2821:28:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 27486,
                                "name": "wad",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27454,
                                "src": "2851:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 27479,
                              "name": "sub",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37514,
                              "src": "2817:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2817:38:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2786:69:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27489,
                        "nodeType": "ExpressionStatement",
                        "src": "2786:69:47"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 27497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 27493,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "2876:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 27495,
                          "indexExpression": {
                            "id": 27494,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27452,
                            "src": "2886:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2876:14:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 27496,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27454,
                          "src": "2894:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2876:21:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "64732d746f6b656e2d696e73756666696369656e742d62616c616e6365",
                        "id": 27498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2899:31:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_58b3253fdcbd27eec9eeef4ab31fa5cbbc7b0eada085070fa774e92cf7110bce",
                          "typeString": "literal_string \"ds-token-insufficient-balance\""
                        },
                        "value": "ds-token-insufficient-balance"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_58b3253fdcbd27eec9eeef4ab31fa5cbbc7b0eada085070fa774e92cf7110bce",
                          "typeString": "literal_string \"ds-token-insufficient-balance\""
                        }
                      ],
                      "id": 27492,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2868:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 27499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2868:63:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27500,
                  "nodeType": "ExpressionStatement",
                  "src": "2868:63:47"
                },
                {
                  "expression": {
                    "id": 27510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 27501,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "2937:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 27503,
                      "indexExpression": {
                        "id": 27502,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27452,
                        "src": "2947:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2937:14:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 27505,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "2958:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 27507,
                          "indexExpression": {
                            "id": 27506,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27452,
                            "src": "2968:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2958:14:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 27508,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27454,
                          "src": "2974:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27504,
                        "name": "sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37514,
                        "src": "2954:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2954:24:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2937:41:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27511,
                  "nodeType": "ExpressionStatement",
                  "src": "2937:41:47"
                },
                {
                  "expression": {
                    "id": 27517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27512,
                      "name": "_supply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27018,
                      "src": "2984:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 27514,
                          "name": "_supply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27018,
                          "src": "2998:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 27515,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27454,
                          "src": "3007:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27513,
                        "name": "sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37514,
                        "src": "2994:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2994:17:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2984:27:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27518,
                  "nodeType": "ExpressionStatement",
                  "src": "2984:27:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 27520,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27452,
                        "src": "3028:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27521,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27454,
                        "src": "3033:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27519,
                      "name": "Burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27254,
                      "src": "3023:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 27522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3023:14:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27523,
                  "nodeType": "EmitStatement",
                  "src": "3018:19:47"
                }
              ]
            },
            "functionSelector": "9dc29fac",
            "id": 27525,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27452,
                  "mutability": "mutable",
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 27525,
                  "src": "2629:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27451,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2629:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27454,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27525,
                  "src": "2642:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27453,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2642:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2628:26:47"
            },
            "returnParameters": {
              "id": 27456,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2662:0:47"
            },
            "scope": 27628,
            "src": "2615:427:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27534,
              "nodeType": "Block",
              "src": "3080:25:47",
              "statements": [
                {
                  "expression": {
                    "id": 27532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27530,
                      "name": "locked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27236,
                      "src": "3086:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 27531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3095:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3086:14:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 27533,
                  "nodeType": "ExpressionStatement",
                  "src": "3086:14:47"
                }
              ]
            },
            "functionSelector": "a69df4b5",
            "id": 27535,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27528,
                "modifierName": {
                  "id": 27527,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 26957,
                  "src": "3073:4:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3073:4:47"
              }
            ],
            "name": "unlock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27526,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3061:2:47"
            },
            "returnParameters": {
              "id": 27529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3080:0:47"
            },
            "scope": 27628,
            "src": "3046:59:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "30adf81f",
            "id": 27538,
            "mutability": "constant",
            "name": "PERMIT_TYPEHASH",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "3355:108:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 27536,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3355:7:47",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
              "id": 27537,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "3397:66:47",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                "typeString": "int_const 4995...(69 digits omitted)...3241"
              },
              "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 27626,
              "nodeType": "Block",
              "src": "3598:600:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 27561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 27558,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27546,
                          "src": "3614:8:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "expression": {
                            "id": 27559,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "3626:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 27560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "3626:15:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3614:27:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "636f6c6f6e792d746f6b656e2d657870697265642d646561646c696e65",
                        "id": 27562,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3643:31:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_815ebfb3109265b29ca267dae21cbe8c0cb89ce273ce5bcfb289f62de84da14d",
                          "typeString": "literal_string \"colony-token-expired-deadline\""
                        },
                        "value": "colony-token-expired-deadline"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_815ebfb3109265b29ca267dae21cbe8c0cb89ce273ce5bcfb289f62de84da14d",
                          "typeString": "literal_string \"colony-token-expired-deadline\""
                        }
                      ],
                      "id": 27557,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3606:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 27563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3606:69:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27564,
                  "nodeType": "ExpressionStatement",
                  "src": "3606:69:47"
                },
                {
                  "assignments": [
                    27566
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27566,
                      "mutability": "mutable",
                      "name": "digest",
                      "nodeType": "VariableDeclaration",
                      "scope": 27626,
                      "src": "3684:14:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 27565,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3684:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 27588,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "1901",
                            "id": 27570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3754:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string hex\"1901\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "id": 27571,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27238,
                            "src": "3780:16:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 27575,
                                    "name": "PERMIT_TYPEHASH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27538,
                                    "src": "3833:15:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 27576,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27540,
                                    "src": "3850:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 27577,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27542,
                                    "src": "3857:7:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 27578,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27544,
                                    "src": "3866:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 27582,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "3873:30:47",
                                    "subExpression": {
                                      "baseExpression": {
                                        "id": 27579,
                                        "name": "metatransactionNonces",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27242,
                                        "src": "3873:21:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 27581,
                                      "indexExpression": {
                                        "id": 27580,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27540,
                                        "src": "3895:5:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "3873:28:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 27583,
                                    "name": "deadline",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27546,
                                    "src": "3905:8:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 27573,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "3822:3:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 27574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "3822:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 27584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3822:92:47",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 27572,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "3812:9:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 27585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3812:103:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string hex\"1901\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 27568,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3722:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 27569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "3722:16:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 27586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3722:205:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 27567,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3701:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 27587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3701:234:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3684:251:47"
                },
                {
                  "assignments": [
                    27590
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27590,
                      "mutability": "mutable",
                      "name": "recoveredAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 27626,
                      "src": "3943:24:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 27589,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3943:7:47",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 27597,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 27592,
                        "name": "digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27566,
                        "src": "3980:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 27593,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27548,
                        "src": "3988:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 27594,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27550,
                        "src": "3991:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 27595,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27552,
                        "src": "3994:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 27591,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -6,
                      "src": "3970:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 27596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3970:26:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3943:53:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 27608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 27604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 27599,
                            "name": "recoveredAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27590,
                            "src": "4012:16:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 27602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4040:1:47",
                                "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": 27601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4032:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 27600,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4032:7:47",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 27603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4032:10:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4012:30:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 27607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 27605,
                            "name": "recoveredAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27590,
                            "src": "4046:16:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 27606,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27540,
                            "src": "4066:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4046:25:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4012:59:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "636f6c6f6e792d746f6b656e2d696e76616c69642d7369676e6174757265",
                        "id": 27609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4073:32:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_526edddc9727429a967a975832be0465c1934d62e7f830eb064e30b134f4fab2",
                          "typeString": "literal_string \"colony-token-invalid-signature\""
                        },
                        "value": "colony-token-invalid-signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_526edddc9727429a967a975832be0465c1934d62e7f830eb064e30b134f4fab2",
                          "typeString": "literal_string \"colony-token-invalid-signature\""
                        }
                      ],
                      "id": 27598,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4004:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 27610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4004:102:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27611,
                  "nodeType": "ExpressionStatement",
                  "src": "4004:102:47"
                },
                {
                  "expression": {
                    "id": 27618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 27612,
                          "name": "_approvals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27028,
                          "src": "4114:10:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                          }
                        },
                        "id": 27615,
                        "indexExpression": {
                          "id": 27613,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27540,
                          "src": "4125:5:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4114:17:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 27616,
                      "indexExpression": {
                        "id": 27614,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27542,
                        "src": "4132:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4114:26:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 27617,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27544,
                      "src": "4143:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4114:34:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27619,
                  "nodeType": "ExpressionStatement",
                  "src": "4114:34:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 27621,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27540,
                        "src": "4171:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27622,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27542,
                        "src": "4178:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27623,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27544,
                        "src": "4187:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27620,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37406,
                      "src": "4162:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 27624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4162:31:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27625,
                  "nodeType": "EmitStatement",
                  "src": "4157:36:47"
                }
              ]
            },
            "functionSelector": "d505accf",
            "id": 27627,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27555,
                "modifierName": {
                  "id": 27554,
                  "name": "unlocked",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 27302,
                  "src": "3589:8:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3589:8:47"
              }
            ],
            "name": "permit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27540,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3484:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27539,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3484:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27542,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3499:15:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27541,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3499:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27544,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3516:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27543,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3516:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27546,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3531:16:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27545,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3531:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27548,
                  "mutability": "mutable",
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3549:7:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 27547,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3549:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27550,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3558:9:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27549,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3558:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27552,
                  "mutability": "mutable",
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3569:9:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27551,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3569:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3483:96:47"
            },
            "returnParameters": {
              "id": 27556,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3598:0:47"
            },
            "scope": 27628,
            "src": "3468:730:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 27629,
        "src": "784:3416:47"
      }
    ],
    "src": "700:3500:47"
  },
  "legacyAST": {
    "absolutePath": "/home/alex/colony/colonyNetwork/contracts/metatxToken/MetaTxToken.sol",
    "exportedSymbols": {
      "BasicMetaTransaction": [
        17484
      ],
      "DSAuth": [
        37396
      ],
      "DSAuthEvents": [
        37279
      ],
      "DSAuthMeta": [
        27005
      ],
      "DSAuthority": [
        37270
      ],
      "DSMath": [
        37752
      ],
      "DSTokenBaseMeta": [
        27219
      ],
      "ERC20": [
        37468
      ],
      "ERC20Events": [
        37415
      ],
      "ERC20Extended": [
        18388
      ],
      "MetaTransactionMsgSender": [
        18604
      ],
      "MetaTxToken": [
        27628
      ],
      "MultiChain": [
        18679
      ]
    },
    "id": 27629,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 27221,
        "literals": [
          "solidity",
          "0.7",
          ".3"
        ],
        "nodeType": "PragmaDirective",
        "src": "700:22:47"
      },
      {
        "absolutePath": "/home/alex/colony/colonyNetwork/contracts/metatxToken/DSTokenBaseMeta.sol",
        "file": "./DSTokenBaseMeta.sol",
        "id": 27222,
        "nodeType": "ImportDirective",
        "scope": 27629,
        "sourceUnit": 27220,
        "src": "724:31:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alex/colony/colonyNetwork/contracts/metatxToken/DSAuthMeta.sol",
        "file": "./DSAuthMeta.sol",
        "id": 27223,
        "nodeType": "ImportDirective",
        "scope": 27629,
        "sourceUnit": 27006,
        "src": "756:26:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": [
              {
                "hexValue": "30",
                "id": 27225,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "824:1:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0"
              }
            ],
            "baseName": {
              "id": 27224,
              "name": "DSTokenBaseMeta",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 27219,
              "src": "808:15:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSTokenBaseMeta_$27219",
                "typeString": "contract DSTokenBaseMeta"
              }
            },
            "id": 27226,
            "nodeType": "InheritanceSpecifier",
            "src": "808:18:47"
          },
          {
            "baseName": {
              "id": 27227,
              "name": "DSAuthMeta",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 27005,
              "src": "828:10:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSAuthMeta_$27005",
                "typeString": "contract DSAuthMeta"
              }
            },
            "id": 27228,
            "nodeType": "InheritanceSpecifier",
            "src": "828:10:47"
          }
        ],
        "contractDependencies": [
          17484,
          18604,
          18679,
          27005,
          27219,
          37279,
          37415,
          37468,
          37752
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 27628,
        "linearizedBaseContracts": [
          27628,
          27005,
          27219,
          17484,
          18679,
          18604,
          37752,
          37279,
          37468,
          37415
        ],
        "name": "MetaTxToken",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "313ce567",
            "id": 27230,
            "mutability": "mutable",
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "843:21:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 27229,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "843:5:47",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "95d89b41",
            "id": 27232,
            "mutability": "mutable",
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "868:20:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 27231,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "868:6:47",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "06fdde03",
            "id": 27234,
            "mutability": "mutable",
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "892:18:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 27233,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "892:6:47",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "cf309012",
            "id": 27236,
            "mutability": "mutable",
            "name": "locked",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "915:18:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 27235,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "915:4:47",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "3644e515",
            "id": 27238,
            "mutability": "mutable",
            "name": "DOMAIN_SEPARATOR",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "937:31:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 27237,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "937:7:47",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 27242,
            "mutability": "mutable",
            "name": "metatransactionNonces",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "973:49:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 27241,
              "keyType": {
                "id": 27239,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "981:7:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "973:27:47",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 27240,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "992:7:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "id": 27248,
            "name": "Mint",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 27247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27244,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 27248,
                  "src": "1038:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27243,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1038:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27246,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27248,
                  "src": "1059:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27245,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1037:34:47"
            },
            "src": "1027:45:47"
          },
          {
            "anonymous": false,
            "id": 27254,
            "name": "Burn",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 27253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27250,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 27254,
                  "src": "1086:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27249,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1086:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27252,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27254,
                  "src": "1107:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27251,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1107:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1085:34:47"
            },
            "src": "1075:45:47"
          },
          {
            "baseFunctions": [
              17336
            ],
            "body": {
              "id": 27266,
              "nodeType": "Block",
              "src": "1216:46:47",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 27262,
                      "name": "metatransactionNonces",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27242,
                      "src": "1229:21:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 27264,
                    "indexExpression": {
                      "id": 27263,
                      "name": "_user",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27256,
                      "src": "1251:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1229:28:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 27261,
                  "id": 27265,
                  "nodeType": "Return",
                  "src": "1222:35:47"
                }
              ]
            },
            "functionSelector": "b3eac1d8",
            "id": 27267,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMetatransactionNonce",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 27258,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1172:8:47"
            },
            "parameters": {
              "id": 27257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27256,
                  "mutability": "mutable",
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 27267,
                  "src": "1157:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27255,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1156:15:47"
            },
            "returnParameters": {
              "id": 27261,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27260,
                  "mutability": "mutable",
                  "name": "nonce",
                  "nodeType": "VariableDeclaration",
                  "scope": 27267,
                  "src": "1202:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27259,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1202:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1201:15:47"
            },
            "scope": 27628,
            "src": "1124:138:47",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              17341
            ],
            "body": {
              "id": 27284,
              "nodeType": "Block",
              "src": "1338:78:47",
              "statements": [
                {
                  "expression": {
                    "id": 27282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 27273,
                        "name": "metatransactionNonces",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27242,
                        "src": "1344:21:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 27275,
                      "indexExpression": {
                        "id": 27274,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27269,
                        "src": "1366:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1344:28:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 27277,
                            "name": "metatransactionNonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27242,
                            "src": "1379:21:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 27279,
                          "indexExpression": {
                            "id": 27278,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27269,
                            "src": "1401:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1379:28:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "hexValue": "31",
                          "id": 27280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1409:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 27276,
                        "name": "add",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "1375:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1375:36:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1344:67:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27283,
                  "nodeType": "ExpressionStatement",
                  "src": "1344:67:47"
                }
              ]
            },
            "id": 27285,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "incrementMetatransactionNonce",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 27271,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1320:8:47"
            },
            "parameters": {
              "id": 27270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27269,
                  "mutability": "mutable",
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 27285,
                  "src": "1305:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27268,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1304:15:47"
            },
            "returnParameters": {
              "id": 27272,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1338:0:47"
            },
            "scope": 27628,
            "src": "1266:150:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27301,
              "nodeType": "Block",
              "src": "1438:116:47",
              "statements": [
                {
                  "condition": {
                    "id": 27287,
                    "name": "locked",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27236,
                    "src": "1448:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 27299,
                  "nodeType": "IfStatement",
                  "src": "1444:99:47",
                  "trueBody": {
                    "id": 27298,
                    "nodeType": "Block",
                    "src": "1456:87:47",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 27290,
                                    "name": "msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18603,
                                    "src": "1485:9:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 27291,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1485:11:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 27292,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1498:3:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 27293,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sig",
                                  "nodeType": "MemberAccess",
                                  "src": "1498:7:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "id": 27289,
                                "name": "isAuthorized",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27004,
                                "src": "1472:12:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$",
                                  "typeString": "function (address,bytes4) view returns (bool)"
                                }
                              },
                              "id": 27294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1472:34:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "636f6c6f6e792d746f6b656e2d756e617574686f7269736564",
                              "id": 27295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1508:27:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d37c89ab35379dbbb026297d255b69ea134b61b163699a001e9dbf9a490c7cf2",
                                "typeString": "literal_string \"colony-token-unauthorised\""
                              },
                              "value": "colony-token-unauthorised"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d37c89ab35379dbbb026297d255b69ea134b61b163699a001e9dbf9a490c7cf2",
                                "typeString": "literal_string \"colony-token-unauthorised\""
                              }
                            ],
                            "id": 27288,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1464:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 27296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1464:72:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27297,
                        "nodeType": "ExpressionStatement",
                        "src": "1464:72:47"
                      }
                    ]
                  }
                },
                {
                  "id": 27300,
                  "nodeType": "PlaceholderStatement",
                  "src": "1548:1:47"
                }
              ]
            },
            "id": 27302,
            "name": "unlocked",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 27286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1438:0:47"
            },
            "src": "1420:134:47",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27359,
              "nodeType": "Block",
              "src": "1631:461:47",
              "statements": [
                {
                  "expression": {
                    "id": 27313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27311,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27234,
                      "src": "1637:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 27312,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27304,
                      "src": "1644:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1637:12:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 27314,
                  "nodeType": "ExpressionStatement",
                  "src": "1637:12:47"
                },
                {
                  "expression": {
                    "id": 27317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27315,
                      "name": "symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27232,
                      "src": "1655:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 27316,
                      "name": "_symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27306,
                      "src": "1664:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1655:16:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 27318,
                  "nodeType": "ExpressionStatement",
                  "src": "1655:16:47"
                },
                {
                  "expression": {
                    "id": 27321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27319,
                      "name": "decimals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27230,
                      "src": "1677:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 27320,
                      "name": "_decimals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27308,
                      "src": "1688:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "1677:20:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 27322,
                  "nodeType": "ExpressionStatement",
                  "src": "1677:20:47"
                },
                {
                  "expression": {
                    "id": 27325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27323,
                      "name": "locked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27236,
                      "src": "1703:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 27324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1712:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1703:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 27326,
                  "nodeType": "ExpressionStatement",
                  "src": "1703:13:47"
                },
                {
                  "assignments": [
                    27328
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27328,
                      "mutability": "mutable",
                      "name": "chainId",
                      "nodeType": "VariableDeclaration",
                      "scope": 27359,
                      "src": "1723:15:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 27327,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1723:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 27329,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1723:15:47"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1753:36:47",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1763:20:47",
                        "value": {
                          "arguments": [],
                          "functionName": {
                            "name": "chainid",
                            "nodeType": "YulIdentifier",
                            "src": "1774:7:47"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1774:9:47"
                        },
                        "variableNames": [
                          {
                            "name": "chainId",
                            "nodeType": "YulIdentifier",
                            "src": "1763:7:47"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 27328,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1763:7:47",
                      "valueSize": 1
                    }
                  ],
                  "id": 27330,
                  "nodeType": "InlineAssembly",
                  "src": "1744:45:47"
                },
                {
                  "expression": {
                    "id": 27357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27331,
                      "name": "DOMAIN_SEPARATOR",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27238,
                      "src": "1795:16:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                  "id": 27336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1867:84:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                    "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                  },
                                  "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                    "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                  }
                                ],
                                "id": 27335,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "1857:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 27337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1857:95:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 27341,
                                      "name": "name",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27234,
                                      "src": "1982:4:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string storage ref"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string storage ref"
                                      }
                                    ],
                                    "id": 27340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1976:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 27339,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1976:5:47",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 27342,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1976:11:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes storage pointer"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes storage pointer"
                                  }
                                ],
                                "id": 27338,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "1966:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 27343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1966:22:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 27347,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2018:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                        "typeString": "literal_string \"1\""
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                        "typeString": "literal_string \"1\""
                                      }
                                    ],
                                    "id": 27346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2012:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 27345,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2012:5:47",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 27348,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2012:10:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 27344,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2002:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 27349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2002:21:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 27350,
                              "name": "chainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27328,
                              "src": "2037:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 27353,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2066:4:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MetaTxToken_$27628",
                                    "typeString": "contract MetaTxToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MetaTxToken_$27628",
                                    "typeString": "contract MetaTxToken"
                                  }
                                ],
                                "id": 27352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2058:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 27351,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2058:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 27354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2058:13:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 27333,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1833:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 27334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "1833:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 27355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1833:248:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 27332,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "1814:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 27356,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1814:273:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1795:292:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 27358,
                  "nodeType": "ExpressionStatement",
                  "src": "1795:292:47"
                }
              ]
            },
            "id": 27360,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27309,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27304,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 27360,
                  "src": "1570:19:47",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27303,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1570:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27306,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 27360,
                  "src": "1591:21:47",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27305,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1591:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27308,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 27360,
                  "src": "1614:15:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 27307,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1614:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1569:61:47"
            },
            "returnParameters": {
              "id": 27310,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1631:0:47"
            },
            "scope": 27628,
            "src": "1558:534:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27189
            ],
            "body": {
              "id": 27381,
              "nodeType": "Block",
              "src": "2203:51:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 27376,
                        "name": "src",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27362,
                        "src": "2235:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27377,
                        "name": "dst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27364,
                        "src": "2240:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27378,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27366,
                        "src": "2245:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 27374,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "2216:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_MetaTxToken_$27628",
                          "typeString": "contract super MetaTxToken"
                        }
                      },
                      "id": 27375,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27189,
                      "src": "2216:18:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) returns (bool)"
                      }
                    },
                    "id": 27379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2216:33:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 27373,
                  "id": 27380,
                  "nodeType": "Return",
                  "src": "2209:40:47"
                }
              ]
            },
            "functionSelector": "23b872dd",
            "id": 27382,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27369,
                "modifierName": {
                  "id": 27368,
                  "name": "unlocked",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 27302,
                  "src": "2166:8:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2166:8:47"
              }
            ],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 27370,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2175:8:47"
            },
            "parameters": {
              "id": 27367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27362,
                  "mutability": "mutable",
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 27382,
                  "src": "2118:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2118:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27364,
                  "mutability": "mutable",
                  "name": "dst",
                  "nodeType": "VariableDeclaration",
                  "scope": 27382,
                  "src": "2131:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27363,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2131:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27366,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27382,
                  "src": "2144:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2144:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2117:39:47"
            },
            "returnParameters": {
              "id": 27373,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27372,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 27382,
                  "src": "2195:4:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 27371,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2195:4:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2194:6:47"
            },
            "scope": 27628,
            "src": "2096:158:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27395,
              "nodeType": "Block",
              "src": "2297:33:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 27390,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18603,
                          "src": "2308:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 27391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2308:11:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 27392,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27384,
                        "src": "2321:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27389,
                      "name": "mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        27396,
                        27450
                      ],
                      "referencedDeclaration": 27450,
                      "src": "2303:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 27393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2303:22:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27394,
                  "nodeType": "ExpressionStatement",
                  "src": "2303:22:47"
                }
              ]
            },
            "functionSelector": "a0712d68",
            "id": 27396,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27387,
                "modifierName": {
                  "id": 27386,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 26957,
                  "src": "2292:4:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2292:4:47"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27384,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27396,
                  "src": "2272:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27383,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2272:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2271:13:47"
            },
            "returnParameters": {
              "id": 27388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2297:0:47"
            },
            "scope": 27628,
            "src": "2258:72:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27407,
              "nodeType": "Block",
              "src": "2368:33:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 27402,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18603,
                          "src": "2379:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 27403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2379:11:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 27404,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27398,
                        "src": "2392:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27401,
                      "name": "burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        27408,
                        27525
                      ],
                      "referencedDeclaration": 27525,
                      "src": "2374:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 27405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2374:22:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27406,
                  "nodeType": "ExpressionStatement",
                  "src": "2374:22:47"
                }
              ]
            },
            "functionSelector": "42966c68",
            "id": 27408,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27399,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27398,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27408,
                  "src": "2348:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27397,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2348:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2347:13:47"
            },
            "returnParameters": {
              "id": 27400,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2368:0:47"
            },
            "scope": 27628,
            "src": "2334:67:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27449,
              "nodeType": "Block",
              "src": "2457:154:47",
              "statements": [
                {
                  "expression": {
                    "id": 27426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 27417,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "2463:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 27419,
                      "indexExpression": {
                        "id": 27418,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27410,
                        "src": "2473:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2463:14:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 27421,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "2484:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 27423,
                          "indexExpression": {
                            "id": 27422,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27410,
                            "src": "2494:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2484:14:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 27424,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27412,
                          "src": "2500:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27420,
                        "name": "add",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "2480:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27425,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2480:24:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2463:41:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27427,
                  "nodeType": "ExpressionStatement",
                  "src": "2463:41:47"
                },
                {
                  "expression": {
                    "id": 27433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27428,
                      "name": "_supply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27018,
                      "src": "2510:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 27430,
                          "name": "_supply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27018,
                          "src": "2524:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 27431,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27412,
                          "src": "2533:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27429,
                        "name": "add",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "2520:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2520:17:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2510:27:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27434,
                  "nodeType": "ExpressionStatement",
                  "src": "2510:27:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 27436,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27410,
                        "src": "2554:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27437,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27412,
                        "src": "2559:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27435,
                      "name": "Mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27248,
                      "src": "2549:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 27438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2549:14:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27439,
                  "nodeType": "EmitStatement",
                  "src": "2544:19:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "307830",
                            "id": 27443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2591:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0x0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 27442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2583:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 27441,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2583:7:47",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 27444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2583:12:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 27445,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27410,
                        "src": "2597:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27446,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27412,
                        "src": "2602:3:47",
                        "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": 27440,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37414,
                      "src": "2574:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 27447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2574:32:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27448,
                  "nodeType": "EmitStatement",
                  "src": "2569:37:47"
                }
              ]
            },
            "functionSelector": "40c10f19",
            "id": 27450,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27415,
                "modifierName": {
                  "id": 27414,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 26957,
                  "src": "2452:4:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2452:4:47"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27410,
                  "mutability": "mutable",
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 27450,
                  "src": "2419:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27409,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2419:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27412,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27450,
                  "src": "2432:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27411,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2432:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2418:26:47"
            },
            "returnParameters": {
              "id": 27416,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2457:0:47"
            },
            "scope": 27628,
            "src": "2405:206:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27524,
              "nodeType": "Block",
              "src": "2662:380:47",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 27460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 27457,
                      "name": "guy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27452,
                      "src": "2672:3:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 27458,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18603,
                        "src": "2679:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                          "typeString": "function () view returns (address payable)"
                        }
                      },
                      "id": 27459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2679:11:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2672:18:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 27491,
                  "nodeType": "IfStatement",
                  "src": "2668:194:47",
                  "trueBody": {
                    "id": 27490,
                    "nodeType": "Block",
                    "src": "2692:170:47",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 27469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 27462,
                                    "name": "_approvals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27028,
                                    "src": "2708:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 27464,
                                  "indexExpression": {
                                    "id": 27463,
                                    "name": "guy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27452,
                                    "src": "2719:3:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2708:15:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 27467,
                                "indexExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 27465,
                                    "name": "msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18603,
                                    "src": "2724:9:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 27466,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2724:11:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2708:28:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 27468,
                                "name": "wad",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27454,
                                "src": "2740:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2708:35:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "64732d746f6b656e2d696e73756666696369656e742d617070726f76616c",
                              "id": 27470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2745:32:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_696d4069430cf8d6cb2027cca74c9eeb7bde4a18fa913c0c20fafe3803d09463",
                                "typeString": "literal_string \"ds-token-insufficient-approval\""
                              },
                              "value": "ds-token-insufficient-approval"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_696d4069430cf8d6cb2027cca74c9eeb7bde4a18fa913c0c20fafe3803d09463",
                                "typeString": "literal_string \"ds-token-insufficient-approval\""
                              }
                            ],
                            "id": 27461,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2700:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 27471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2700:78:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27472,
                        "nodeType": "ExpressionStatement",
                        "src": "2700:78:47"
                      },
                      {
                        "expression": {
                          "id": 27488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 27473,
                                "name": "_approvals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27028,
                                "src": "2786:10:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 27477,
                              "indexExpression": {
                                "id": 27474,
                                "name": "guy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27452,
                                "src": "2797:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2786:15:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 27478,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 27475,
                                "name": "msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18603,
                                "src": "2802:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 27476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2802:11:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2786:28:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 27480,
                                    "name": "_approvals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27028,
                                    "src": "2821:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 27482,
                                  "indexExpression": {
                                    "id": 27481,
                                    "name": "guy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27452,
                                    "src": "2832:3:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2821:15:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 27485,
                                "indexExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 27483,
                                    "name": "msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18603,
                                    "src": "2837:9:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 27484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2837:11:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2821:28:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 27486,
                                "name": "wad",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27454,
                                "src": "2851:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 27479,
                              "name": "sub",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37514,
                              "src": "2817:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2817:38:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2786:69:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27489,
                        "nodeType": "ExpressionStatement",
                        "src": "2786:69:47"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 27497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 27493,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "2876:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 27495,
                          "indexExpression": {
                            "id": 27494,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27452,
                            "src": "2886:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2876:14:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 27496,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27454,
                          "src": "2894:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2876:21:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "64732d746f6b656e2d696e73756666696369656e742d62616c616e6365",
                        "id": 27498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2899:31:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_58b3253fdcbd27eec9eeef4ab31fa5cbbc7b0eada085070fa774e92cf7110bce",
                          "typeString": "literal_string \"ds-token-insufficient-balance\""
                        },
                        "value": "ds-token-insufficient-balance"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_58b3253fdcbd27eec9eeef4ab31fa5cbbc7b0eada085070fa774e92cf7110bce",
                          "typeString": "literal_string \"ds-token-insufficient-balance\""
                        }
                      ],
                      "id": 27492,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2868:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 27499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2868:63:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27500,
                  "nodeType": "ExpressionStatement",
                  "src": "2868:63:47"
                },
                {
                  "expression": {
                    "id": 27510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 27501,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "2937:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 27503,
                      "indexExpression": {
                        "id": 27502,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27452,
                        "src": "2947:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2937:14:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 27505,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "2958:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 27507,
                          "indexExpression": {
                            "id": 27506,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27452,
                            "src": "2968:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2958:14:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 27508,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27454,
                          "src": "2974:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27504,
                        "name": "sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37514,
                        "src": "2954:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2954:24:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2937:41:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27511,
                  "nodeType": "ExpressionStatement",
                  "src": "2937:41:47"
                },
                {
                  "expression": {
                    "id": 27517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27512,
                      "name": "_supply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27018,
                      "src": "2984:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 27514,
                          "name": "_supply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27018,
                          "src": "2998:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 27515,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27454,
                          "src": "3007:3:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27513,
                        "name": "sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37514,
                        "src": "2994:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2994:17:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2984:27:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27518,
                  "nodeType": "ExpressionStatement",
                  "src": "2984:27:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 27520,
                        "name": "guy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27452,
                        "src": "3028:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27521,
                        "name": "wad",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27454,
                        "src": "3033:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27519,
                      "name": "Burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27254,
                      "src": "3023:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 27522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3023:14:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27523,
                  "nodeType": "EmitStatement",
                  "src": "3018:19:47"
                }
              ]
            },
            "functionSelector": "9dc29fac",
            "id": 27525,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27452,
                  "mutability": "mutable",
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 27525,
                  "src": "2629:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27451,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2629:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27454,
                  "mutability": "mutable",
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 27525,
                  "src": "2642:11:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27453,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2642:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2628:26:47"
            },
            "returnParameters": {
              "id": 27456,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2662:0:47"
            },
            "scope": 27628,
            "src": "2615:427:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27534,
              "nodeType": "Block",
              "src": "3080:25:47",
              "statements": [
                {
                  "expression": {
                    "id": 27532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 27530,
                      "name": "locked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27236,
                      "src": "3086:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 27531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3095:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3086:14:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 27533,
                  "nodeType": "ExpressionStatement",
                  "src": "3086:14:47"
                }
              ]
            },
            "functionSelector": "a69df4b5",
            "id": 27535,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27528,
                "modifierName": {
                  "id": 27527,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 26957,
                  "src": "3073:4:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3073:4:47"
              }
            ],
            "name": "unlock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27526,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3061:2:47"
            },
            "returnParameters": {
              "id": 27529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3080:0:47"
            },
            "scope": 27628,
            "src": "3046:59:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "30adf81f",
            "id": 27538,
            "mutability": "constant",
            "name": "PERMIT_TYPEHASH",
            "nodeType": "VariableDeclaration",
            "scope": 27628,
            "src": "3355:108:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 27536,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3355:7:47",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
              "id": 27537,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "3397:66:47",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                "typeString": "int_const 4995...(69 digits omitted)...3241"
              },
              "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 27626,
              "nodeType": "Block",
              "src": "3598:600:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 27561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 27558,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27546,
                          "src": "3614:8:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "expression": {
                            "id": 27559,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "3626:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 27560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "3626:15:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3614:27:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "636f6c6f6e792d746f6b656e2d657870697265642d646561646c696e65",
                        "id": 27562,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3643:31:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_815ebfb3109265b29ca267dae21cbe8c0cb89ce273ce5bcfb289f62de84da14d",
                          "typeString": "literal_string \"colony-token-expired-deadline\""
                        },
                        "value": "colony-token-expired-deadline"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_815ebfb3109265b29ca267dae21cbe8c0cb89ce273ce5bcfb289f62de84da14d",
                          "typeString": "literal_string \"colony-token-expired-deadline\""
                        }
                      ],
                      "id": 27557,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3606:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 27563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3606:69:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27564,
                  "nodeType": "ExpressionStatement",
                  "src": "3606:69:47"
                },
                {
                  "assignments": [
                    27566
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27566,
                      "mutability": "mutable",
                      "name": "digest",
                      "nodeType": "VariableDeclaration",
                      "scope": 27626,
                      "src": "3684:14:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 27565,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3684:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 27588,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "1901",
                            "id": 27570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3754:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string hex\"1901\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "id": 27571,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27238,
                            "src": "3780:16:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 27575,
                                    "name": "PERMIT_TYPEHASH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27538,
                                    "src": "3833:15:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 27576,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27540,
                                    "src": "3850:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 27577,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27542,
                                    "src": "3857:7:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 27578,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27544,
                                    "src": "3866:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 27582,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "3873:30:47",
                                    "subExpression": {
                                      "baseExpression": {
                                        "id": 27579,
                                        "name": "metatransactionNonces",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27242,
                                        "src": "3873:21:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 27581,
                                      "indexExpression": {
                                        "id": 27580,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27540,
                                        "src": "3895:5:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "3873:28:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 27583,
                                    "name": "deadline",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27546,
                                    "src": "3905:8:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 27573,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "3822:3:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 27574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "3822:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 27584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3822:92:47",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 27572,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "3812:9:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 27585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3812:103:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string hex\"1901\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 27568,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3722:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 27569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "3722:16:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 27586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3722:205:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 27567,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3701:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 27587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3701:234:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3684:251:47"
                },
                {
                  "assignments": [
                    27590
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27590,
                      "mutability": "mutable",
                      "name": "recoveredAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 27626,
                      "src": "3943:24:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 27589,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3943:7:47",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 27597,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 27592,
                        "name": "digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27566,
                        "src": "3980:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 27593,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27548,
                        "src": "3988:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 27594,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27550,
                        "src": "3991:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 27595,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27552,
                        "src": "3994:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 27591,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -6,
                      "src": "3970:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 27596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3970:26:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3943:53:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 27608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 27604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 27599,
                            "name": "recoveredAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27590,
                            "src": "4012:16:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 27602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4040:1:47",
                                "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": 27601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4032:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 27600,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4032:7:47",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 27603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4032:10:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4012:30:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 27607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 27605,
                            "name": "recoveredAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27590,
                            "src": "4046:16:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 27606,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27540,
                            "src": "4066:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4046:25:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4012:59:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "636f6c6f6e792d746f6b656e2d696e76616c69642d7369676e6174757265",
                        "id": 27609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4073:32:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_526edddc9727429a967a975832be0465c1934d62e7f830eb064e30b134f4fab2",
                          "typeString": "literal_string \"colony-token-invalid-signature\""
                        },
                        "value": "colony-token-invalid-signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_526edddc9727429a967a975832be0465c1934d62e7f830eb064e30b134f4fab2",
                          "typeString": "literal_string \"colony-token-invalid-signature\""
                        }
                      ],
                      "id": 27598,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4004:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 27610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4004:102:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27611,
                  "nodeType": "ExpressionStatement",
                  "src": "4004:102:47"
                },
                {
                  "expression": {
                    "id": 27618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 27612,
                          "name": "_approvals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27028,
                          "src": "4114:10:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                          }
                        },
                        "id": 27615,
                        "indexExpression": {
                          "id": 27613,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27540,
                          "src": "4125:5:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4114:17:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 27616,
                      "indexExpression": {
                        "id": 27614,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27542,
                        "src": "4132:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4114:26:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 27617,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27544,
                      "src": "4143:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4114:34:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27619,
                  "nodeType": "ExpressionStatement",
                  "src": "4114:34:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 27621,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27540,
                        "src": "4171:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27622,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27542,
                        "src": "4178:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 27623,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27544,
                        "src": "4187:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 27620,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37406,
                      "src": "4162:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 27624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4162:31:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 27625,
                  "nodeType": "EmitStatement",
                  "src": "4157:36:47"
                }
              ]
            },
            "functionSelector": "d505accf",
            "id": 27627,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 27555,
                "modifierName": {
                  "id": 27554,
                  "name": "unlocked",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 27302,
                  "src": "3589:8:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3589:8:47"
              }
            ],
            "name": "permit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27540,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3484:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27539,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3484:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27542,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3499:15:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27541,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3499:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27544,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3516:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27543,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3516:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27546,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3531:16:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27545,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3531:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27548,
                  "mutability": "mutable",
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3549:7:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 27547,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3549:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27550,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3558:9:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27549,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3558:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27552,
                  "mutability": "mutable",
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "3569:9:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27551,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3569:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3483:96:47"
            },
            "returnParameters": {
              "id": 27556,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3598:0:47"
            },
            "scope": 27628,
            "src": "3468:730:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 27629,
        "src": "784:3416:47"
      }
    ],
    "src": "700:3500:47"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.3+commit.9bfce1f6.Linux.g++"
  },
  "networks": {},
  "schemaVersion": "3.3.0",
  "updatedAt": "2021-06-30T10:14:33.888Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)": {
        "params": {
          "_payload": "Function call to make via meta transaction",
          "_sigR": "R part of the signature",
          "_sigS": "S part of the signature",
          "_sigV": "V part of the signature",
          "_user": "Address of user trying to do meta transaction"
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)": {
        "notice": "Main function to be called when user wants to execute meta transaction. The actual function to be called should be passed as param with name functionSignature Here the basic signature recovery is being used. Signature is expected to be generated using personal_sign method."
      }
    },
    "version": 1
  }
}