{
  "contractName": "DummyDGX",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_dummyDGXStorage",
          "type": "address"
        },
        {
          "name": "_feesAdmin",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "_totalSupply",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "_balance",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_receiver",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_data",
          "type": "bytes32"
        }
      ],
      "name": "transferAndCall",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "name": "_allowance",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        },
        {
          "name": "_no_demurrage_fee",
          "type": "bool"
        },
        {
          "name": "_no_transfer_fee",
          "type": "bool"
        }
      ],
      "name": "updateUserFeesConfigs",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "showDemurrageConfigs",
      "outputs": [
        {
          "name": "_base",
          "type": "uint256"
        },
        {
          "name": "_rate",
          "type": "uint256"
        },
        {
          "name": "_collector",
          "type": "address"
        },
        {
          "name": "_no_demurrage_fee",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_for",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mintDgxFor",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_of",
          "type": "address"
        },
        {
          "name": "_byMinutes",
          "type": "uint256"
        }
      ],
      "name": "modifyLastPaymentDate",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516040806114b38339810180604052810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506113e4806100cf6000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100d5578063095ea7b31461016557806318160ddd146101ca57806323b872dd146101f5578063293f9a9c1461027a578063313ce567146102ea57806370a082311461031b5780638583e8231461037257806395d89b41146103e5578063a9059cbb14610475578063b59a7796146104da578063b9570c011461053f578063bb2e807a146105b2578063dd62ed3e14610617575b600080fd5b3480156100e157600080fd5b506100ea61068e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561012a57808201518184015260208101905061010f565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017157600080fd5b506101b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106c7565b604051808215151515815260200191505060405180910390f35b3480156101d657600080fd5b506101df610804565b6040518082815260200191505060405180910390f35b34801561020157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cb565b604051808215151515815260200191505060405180910390f35b34801561028657600080fd5b5061028f610a4a565b604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b3480156102f657600080fd5b506102ff610b44565b604051808260ff1660ff16815260200191505060405180910390f35b34801561032757600080fd5b5061035c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b49565b6040518082815260200191505060405180910390f35b34801561037e57600080fd5b506103cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190803515159060200190929190505050610c49565b604051808215151515815260200191505060405180910390f35b3480156103f157600080fd5b506103fa610dbf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561043a57808201518184015260208101905061041f565b50505050905090810190601f1680156104675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048157600080fd5b506104c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610df8565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b50610525600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f61565b604051808215151515815260200191505060405180910390f35b34801561054b57600080fd5b50610598600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560001916906020019092919050505061106a565b604051808215151515815260200191505060405180910390f35b3480156105be57600080fd5b506105fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117a565b604051808215151515815260200191505060405180910390f35b34801561062357600080fd5b50610678600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611283565b6040518082815260200191505060405180910390f35b6040805190810160405280601681526020017f44756d6d7920446967697820476f6c6420546f6b656e0000000000000000000081525081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663779b742c3385856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156107c157600080fd5b505af11580156107d5573d6000803e3d6000fd5b505050506040513d60208110156107eb57600080fd5b8101908080519060200190929190505050905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357e7946f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561088b57600080fd5b505af115801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b8101908080519060200190929190505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392846ab68585338660016040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018215151515815260200195505050505050602060405180830381600087803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505050506040513d6020811015610a3057600080fd5b810190808051906020019092919050505090509392505050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663493f8d306040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401608060405180830381600087803b158015610ad557600080fd5b505af1158015610ae9573d6000803e3d6000fd5b505050506040513d6080811015610aff57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508094508195508296508397505050505090919293565b600981565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376cab952836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610c0757600080fd5b505af1158015610c1b573d6000803e3d6000fd5b505050506040513d6020811015610c3157600080fd5b81019080805190602001909291905050509050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ca757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ca9f65c8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001821515151581526020019350505050602060405180830381600087803b158015610d7b57600080fd5b505af1158015610d8f573d6000803e3d6000fd5b505050506040513d6020811015610da557600080fd5b810190808051906020019092919050505090509392505050565b6040805190810160405280600881526020017f44756d6d7944475800000000000000000000000000000000000000000000000081525081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392846ab6338560008660006040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018215151515815260200195505050505050602060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d6020811015610f4857600080fd5b8101908080519060200190929190505050905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635722b67f84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561102757600080fd5b505af115801561103b573d6000803e3d6000fd5b505050506040513d602081101561105157600080fd5b8101908080519060200190929190505050905092915050565b60006110768484610df8565b508373ffffffffffffffffffffffffffffffffffffffff16638397cc943385856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182600019166000191681526020019350505050602060405180830381600087803b15801561112a57600080fd5b505af115801561113e573d6000803e3d6000fd5b505050506040513d602081101561115457600080fd5b8101908080519060200190929190505050905080151561117357600080fd5b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1ed956b84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561124057600080fd5b505af1158015611254573d6000803e3d6000fd5b505050506040513d602081101561126a57600080fd5b8101908080519060200190929190505050905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d28b43f484846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561137557600080fd5b505af1158015611389573d6000803e3d6000fd5b505050506040513d602081101561139f57600080fd5b81019080805190602001909291905050509050929150505600a165627a7a723058204d14cb96daf1910b5fab6528f1d7a540c9b2afdaa8f8ffd27e4490079d2a1ab10029",
  "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100d5578063095ea7b31461016557806318160ddd146101ca57806323b872dd146101f5578063293f9a9c1461027a578063313ce567146102ea57806370a082311461031b5780638583e8231461037257806395d89b41146103e5578063a9059cbb14610475578063b59a7796146104da578063b9570c011461053f578063bb2e807a146105b2578063dd62ed3e14610617575b600080fd5b3480156100e157600080fd5b506100ea61068e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561012a57808201518184015260208101905061010f565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017157600080fd5b506101b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106c7565b604051808215151515815260200191505060405180910390f35b3480156101d657600080fd5b506101df610804565b6040518082815260200191505060405180910390f35b34801561020157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cb565b604051808215151515815260200191505060405180910390f35b34801561028657600080fd5b5061028f610a4a565b604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b3480156102f657600080fd5b506102ff610b44565b604051808260ff1660ff16815260200191505060405180910390f35b34801561032757600080fd5b5061035c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b49565b6040518082815260200191505060405180910390f35b34801561037e57600080fd5b506103cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190803515159060200190929190505050610c49565b604051808215151515815260200191505060405180910390f35b3480156103f157600080fd5b506103fa610dbf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561043a57808201518184015260208101905061041f565b50505050905090810190601f1680156104675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048157600080fd5b506104c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610df8565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b50610525600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f61565b604051808215151515815260200191505060405180910390f35b34801561054b57600080fd5b50610598600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560001916906020019092919050505061106a565b604051808215151515815260200191505060405180910390f35b3480156105be57600080fd5b506105fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117a565b604051808215151515815260200191505060405180910390f35b34801561062357600080fd5b50610678600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611283565b6040518082815260200191505060405180910390f35b6040805190810160405280601681526020017f44756d6d7920446967697820476f6c6420546f6b656e0000000000000000000081525081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663779b742c3385856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156107c157600080fd5b505af11580156107d5573d6000803e3d6000fd5b505050506040513d60208110156107eb57600080fd5b8101908080519060200190929190505050905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357e7946f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561088b57600080fd5b505af115801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b8101908080519060200190929190505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392846ab68585338660016040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018215151515815260200195505050505050602060405180830381600087803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505050506040513d6020811015610a3057600080fd5b810190808051906020019092919050505090509392505050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663493f8d306040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401608060405180830381600087803b158015610ad557600080fd5b505af1158015610ae9573d6000803e3d6000fd5b505050506040513d6080811015610aff57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508094508195508296508397505050505090919293565b600981565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376cab952836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610c0757600080fd5b505af1158015610c1b573d6000803e3d6000fd5b505050506040513d6020811015610c3157600080fd5b81019080805190602001909291905050509050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ca757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ca9f65c8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001821515151581526020019350505050602060405180830381600087803b158015610d7b57600080fd5b505af1158015610d8f573d6000803e3d6000fd5b505050506040513d6020811015610da557600080fd5b810190808051906020019092919050505090509392505050565b6040805190810160405280600881526020017f44756d6d7944475800000000000000000000000000000000000000000000000081525081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392846ab6338560008660006040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018215151515815260200195505050505050602060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d6020811015610f4857600080fd5b8101908080519060200190929190505050905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635722b67f84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561102757600080fd5b505af115801561103b573d6000803e3d6000fd5b505050506040513d602081101561105157600080fd5b8101908080519060200190929190505050905092915050565b60006110768484610df8565b508373ffffffffffffffffffffffffffffffffffffffff16638397cc943385856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182600019166000191681526020019350505050602060405180830381600087803b15801561112a57600080fd5b505af115801561113e573d6000803e3d6000fd5b505050506040513d602081101561115457600080fd5b8101908080519060200190929190505050905080151561117357600080fd5b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1ed956b84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561124057600080fd5b505af1158015611254573d6000803e3d6000fd5b505050506040513d602081101561126a57600080fd5b8101908080519060200190929190505050905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d28b43f484846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561137557600080fd5b505af1158015611389573d6000803e3d6000fd5b505050506040513d602081101561139f57600080fd5b81019080805190602001909291905050509050929150505600a165627a7a723058204d14cb96daf1910b5fab6528f1d7a540c9b2afdaa8f8ffd27e4490079d2a1ab10029",
  "sourceMap": "59:3290:69:-;;;279:149;8:9:-1;5:2;;;30:1;27;20:12;5:2;279:149:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;378:16;356:19;;:38;;;;;;;;;;;;;;;;;;413:10;400;;:23;;;;;;;;;;;;;;;;;;279:149;;59:3290;;;;;;",
  "deployedSourceMap": "59:3290:69:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;136:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;136:54:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;136:54:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1586:192:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;512:166:69;;;;;;;;;;;;;;;;;;;;;;;1068:232;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1068:232:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:305;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2316:305:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;240:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:34:69;;;;;;;;;;;;;;;;;;;;;;;;;;;682:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;682:182:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1991:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1991:321:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;194:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;194:42:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;194:42:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;868:196:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3142:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3142:205:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1304:278;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1304:278:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2830:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2830:178:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1782:205:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;136:54;;;;;;;;;;;;;;;;;;;;:::o;1586:192::-;1661:13;1711:19;;;;;;;;;;;1695:48;;;1744:10;1756:8;1766:6;1695:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1695:78:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1695:78:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1695:78:69;;;;;;;;;;;;;;;;1684:89;;1586:192;;;;:::o;512:166::-;572:20;633:19;;;;;;;;;;;617:54;;;:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;617:56:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;617:56:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;617:56:69;;;;;;;;;;;;;;;;602:71;;512:166;:::o;1068:232::-;1174:13;1224:19;;;;;;;;;;;1208:49;;;1258:5;1265:3;1270:10;1282:6;1290:4;1208:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1208:87:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1208:87:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1208:87:69;;;;;;;;;;;;;;;;1197:98;;1068:232;;;;;:::o;2316:305::-;2392:13;2413;2434:18;2460:22;2561:19;;;;;;;;;;;2545:69;;;:71;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2545:71:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2545:71:69;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2545:71:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2497:119;;;;;;;;;;;;;;;;2316:305;;;;:::o;240:34::-;273:1;240:34;:::o;682:182::-;754:16;807:19;;;;;;;;;;;791:60;;;852:6;791:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;791:68:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;791:68:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;791:68:69;;;;;;;;;;;;;;;;780:79;;682:182;;;:::o;1991:321::-;2144:13;485:10;;;;;;;;;;;471:24;;:10;:24;;;463:33;;;;;;;;2194:19;;;;;;;;;;;2178:61;;;2247:5;2260:17;2285:16;2178:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2178:129:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2178:129:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2178:129:69;;;;;;;;;;;;;;;;2167:140;;1991:321;;;;;:::o;194:42::-;;;;;;;;;;;;;;;;;;;;:::o;868:196::-;939:13;989:19;;;;;;;;;;;973:49;;;1023:10;1035:3;1040;1045:6;1053:5;973:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;973:86:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;973:86:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;973:86:69;;;;;;;;;;;;;;;;962:97;;868:196;;;;:::o;3142:205::-;3230:13;3280:19;;;;;;;;;;;3264:61;;;3326:3;3331:10;3264:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3264:78:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3264:78:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3264:78:69;;;;;;;;;;;;;;;;3253:89;;3142:205;;;;:::o;1304:278::-;1420:13;1443:28;1452:9;1463:7;1443:8;:28::i;:::-;;1502:9;1488:38;;;1527:10;1539:7;1548:5;1488:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1488:66:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1488:66:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1488:66:69;;;;;;;;;;;;;;;;1477:77;;1568:8;1560:17;;;;;;;;1304:278;;;;;:::o;2830:178::-;2905:13;2955:19;;;;;;;;;;;2939:49;;;2989:4;2995:7;2939:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2939:64:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2939:64:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2939:64:69;;;;;;;;;;;;;;;;2928:75;;2830:178;;;;:::o;1782:205::-;1872:18;1929:19;;;;;;;;;;;1913:51;;;1965:6;1973:8;1913:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1913:69:69;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1913:69:69;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1913:69:69;;;;;;;;;;;;;;;;1900:82;;1782:205;;;;:::o",
  "source": "pragma solidity ^0.4.23;\n\nimport \"./DummyDGXStorage.sol\";\n\ncontract DummyDGX {\n\n  address DGX_STORAGE_ADDRESS;\n  address FEES_ADMIN;\n\n  string public constant name = \"Dummy Digix Gold Token\";\n  string public constant symbol = \"DummyDGX\";\n  uint8 public constant decimals = 9;\n\n  constructor(address _dummyDGXStorage, address _feesAdmin)\n    public\n  {\n    DGX_STORAGE_ADDRESS = _dummyDGXStorage;\n    FEES_ADMIN = _feesAdmin;\n  }\n\n  modifier if_fees_admin() {\n    require(msg.sender == FEES_ADMIN);\n    _;\n  }\n\n  function totalSupply()\n    public\n    constant\n    returns (uint256 _totalSupply)\n  {\n    _totalSupply = DummyDGXStorage(DGX_STORAGE_ADDRESS).read_total_supply();\n  }\n\n  function balanceOf(address _owner)\n    public\n    constant\n    returns (uint256 _balance)\n  {\n    _balance = DummyDGXStorage(DGX_STORAGE_ADDRESS).show_demurraged_balance(_owner);\n  }\n\n  function transfer(address _to, uint256 _value)\n    public\n    returns (bool _success)\n  {\n    _success = DummyDGXStorage(DGX_STORAGE_ADDRESS).put_transfer(msg.sender, _to, 0x0, _value, false);\n  }\n\n  function transferFrom(\n    address _from,\n    address _to,\n    uint256 _value\n  )\n    public\n    returns (bool _success)\n  {\n    _success = DummyDGXStorage(DGX_STORAGE_ADDRESS).put_transfer(_from, _to, msg.sender, _value, true);\n  }\n\n  function transferAndCall(\n    address _receiver,\n    uint256 _amount,\n    bytes32 _data\n  )\n    public\n    returns (bool _success)\n  {\n    transfer(_receiver, _amount);\n    _success = TokenReceiver(_receiver).tokenFallback(msg.sender, _amount, _data);\n    require(_success);\n  }\n\n  function approve(address _spender, uint256 _value)\n    public\n    returns (bool _success)\n  {\n    _success = DummyDGXStorage(DGX_STORAGE_ADDRESS).put_approve(msg.sender, _spender, _value);\n  }\n\n  function allowance(address _owner, address _spender)\n    public\n    constant\n    returns (uint256 _allowance)\n  {\n    _allowance = DummyDGXStorage(DGX_STORAGE_ADDRESS).read_allowance(_owner, _spender);\n  }\n\n  function updateUserFeesConfigs(\n    address _user,\n    bool _no_demurrage_fee,\n    bool _no_transfer_fee\n  )\n    public\n    if_fees_admin()\n    returns (bool _success)\n  {\n    _success = DummyDGXStorage(DGX_STORAGE_ADDRESS).update_user_fees_configs(\n      _user,\n      _no_demurrage_fee,\n      _no_transfer_fee\n    );\n  }\n\n  function showDemurrageConfigs()\n    public\n    constant\n    returns (\n      uint256 _base,\n      uint256 _rate,\n      address _collector,\n      bool _no_demurrage_fee\n    )\n  {\n    (_base, _rate, _collector, _no_demurrage_fee) = DummyDGXStorage(DGX_STORAGE_ADDRESS).read_demurrage_config_underlying();\n  }\n\n  ////////////////////////////// MOCK FUNCTIONS ///////////////////////////////\n\n  // This function is not present in the DGX2.0 token contracts.\n  // For test purpose, only used to bypass the POP process\n  function mintDgxFor(address _for, uint256 _amount)\n    public\n    returns (bool _success)\n  {\n    _success = DummyDGXStorage(DGX_STORAGE_ADDRESS).mint_dgx_for(_for, _amount);\n  }\n\n  // This function is not present in the DGX2.0 token contracts.\n  // For test purpose, only used to simulate demurrage deduction\n  function modifyLastPaymentDate(address _of, uint256 _byMinutes)\n    public\n    returns (bool _success)\n  {\n    _success = DummyDGXStorage(DGX_STORAGE_ADDRESS).modify_last_payment_date(_of, _byMinutes);\n  }\n}\n",
  "sourcePath": "@digix/lite-dgx-contract/contracts/DummyDGX.sol",
  "ast": {
    "absolutePath": "@digix/lite-dgx-contract/contracts/DummyDGX.sol",
    "exportedSymbols": {
      "DummyDGX": [
        19610
      ]
    },
    "id": 19611,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 19323,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".23"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:69"
      },
      {
        "absolutePath": "@digix/lite-dgx-contract/contracts/DummyDGXStorage.sol",
        "file": "./DummyDGXStorage.sol",
        "id": 19324,
        "nodeType": "ImportDirective",
        "scope": 19611,
        "sourceUnit": 21193,
        "src": "26:31:69",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19610,
        "linearizedBaseContracts": [
          19610
        ],
        "name": "DummyDGX",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 19326,
            "name": "DGX_STORAGE_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "82:27:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 19325,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "82:7:69",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 19328,
            "name": "FEES_ADMIN",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "113:18:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 19327,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "113:7:69",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 19331,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "136:54:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 19329,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "136:6:69",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "44756d6d7920446967697820476f6c6420546f6b656e",
              "id": 19330,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "166:24:69",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_15813540638b840667b2835dd9d83cd7d59d4b11fd709c5ccd70287cba43de8a",
                "typeString": "literal_string \"Dummy Digix Gold Token\""
              },
              "value": "Dummy Digix Gold Token"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 19334,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "194:42:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 19332,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "194:6:69",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "44756d6d79444758",
              "id": 19333,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "226:10:69",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9a7e43f3f63475b930e79b1abd673f82851749645bc45d7620322df60d52114f",
                "typeString": "literal_string \"DummyDGX\""
              },
              "value": "DummyDGX"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 19337,
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "240:34:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 19335,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "240:5:69",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "39",
              "id": 19336,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "273:1:69",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_9_by_1",
                "typeString": "int_const 9"
              },
              "value": "9"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 19352,
              "nodeType": "Block",
              "src": "350:78:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19344,
                      "name": "DGX_STORAGE_ADDRESS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19326,
                      "src": "356:19:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 19345,
                      "name": "_dummyDGXStorage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19339,
                      "src": "378:16:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "356:38:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 19347,
                  "nodeType": "ExpressionStatement",
                  "src": "356:38:69"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19348,
                      "name": "FEES_ADMIN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19328,
                      "src": "400:10:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 19349,
                      "name": "_feesAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19341,
                      "src": "413:10:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "400:23:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 19351,
                  "nodeType": "ExpressionStatement",
                  "src": "400:23:69"
                }
              ]
            },
            "documentation": null,
            "id": 19353,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19339,
                  "name": "_dummyDGXStorage",
                  "nodeType": "VariableDeclaration",
                  "scope": 19353,
                  "src": "291:24:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19338,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "291:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19341,
                  "name": "_feesAdmin",
                  "nodeType": "VariableDeclaration",
                  "scope": 19353,
                  "src": "317:18:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "317:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "290:46:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "350:0:69"
            },
            "scope": 19610,
            "src": "279:149:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19363,
              "nodeType": "Block",
              "src": "457:51:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 19359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19356,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "471:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "471:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 19358,
                          "name": "FEES_ADMIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19328,
                          "src": "485:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "471:24:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 19355,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "463:7:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 19360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "463:33:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19361,
                  "nodeType": "ExpressionStatement",
                  "src": "463:33:69"
                },
                {
                  "id": 19362,
                  "nodeType": "PlaceholderStatement",
                  "src": "502:1:69"
                }
              ]
            },
            "documentation": null,
            "id": 19364,
            "name": "if_fees_admin",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 19354,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "454:2:69"
            },
            "src": "432:76:69",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19377,
              "nodeType": "Block",
              "src": "596:82:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19369,
                      "name": "_totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19367,
                      "src": "602:12:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19371,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "633:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19370,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "617:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "617:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "read_total_supply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20067,
                        "src": "617:54:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 19374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "617:56:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "602:71:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19376,
                  "nodeType": "ExpressionStatement",
                  "src": "602:71:69"
                }
              ]
            },
            "documentation": null,
            "id": 19378,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19365,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "532:2:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19367,
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 19378,
                  "src": "572:20:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19366,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "572:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "571:22:69"
            },
            "scope": 19610,
            "src": "512:166:69",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19394,
              "nodeType": "Block",
              "src": "774:90:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19385,
                      "name": "_balance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19383,
                      "src": "780:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19390,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19380,
                          "src": "852:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19387,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "807:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19386,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "791:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "791:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "show_demurraged_balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20147,
                        "src": "791:60:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 19391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "791:68:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "780:79:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19393,
                  "nodeType": "ExpressionStatement",
                  "src": "780:79:69"
                }
              ]
            },
            "documentation": null,
            "id": 19395,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19380,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 19395,
                  "src": "701:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "701:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "700:16:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19383,
                  "name": "_balance",
                  "nodeType": "VariableDeclaration",
                  "scope": 19395,
                  "src": "754:16:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19382,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "754:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "753:18:69"
            },
            "scope": 19610,
            "src": "682:182:69",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19418,
              "nodeType": "Block",
              "src": "956:108:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19404,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19402,
                      "src": "962:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19409,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "1023:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1023:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19411,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19397,
                          "src": "1035:3:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307830",
                          "id": 19412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1040:3:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0x0"
                        },
                        {
                          "argumentTypes": null,
                          "id": 19413,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19399,
                          "src": "1045:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 19414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1053:5:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19406,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "989:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19405,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "973:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "973:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "put_transfer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20387,
                        "src": "973:49:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$",
                          "typeString": "function (address,address,address,uint256,bool) external returns (bool)"
                        }
                      },
                      "id": 19415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "973:86:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "962:97:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19417,
                  "nodeType": "ExpressionStatement",
                  "src": "962:97:69"
                }
              ]
            },
            "documentation": null,
            "id": 19419,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19397,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 19419,
                  "src": "886:11:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19396,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "886:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19399,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 19419,
                  "src": "899:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19398,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "899:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "885:29:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19403,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19402,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19419,
                  "src": "939:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19401,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "939:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "938:15:69"
            },
            "scope": 19610,
            "src": "868:196:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19444,
              "nodeType": "Block",
              "src": "1191:109:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19430,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19428,
                      "src": "1197:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19435,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19421,
                          "src": "1258:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19436,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19423,
                          "src": "1265:3:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19437,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "1270:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1270:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19439,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19425,
                          "src": "1282:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 19440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1290:4:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19432,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "1224:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19431,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "1208:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1208:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "put_transfer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20387,
                        "src": "1208:49:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$",
                          "typeString": "function (address,address,address,uint256,bool) external returns (bool)"
                        }
                      },
                      "id": 19441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1208:87:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1197:98:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19443,
                  "nodeType": "ExpressionStatement",
                  "src": "1197:98:69"
                }
              ]
            },
            "documentation": null,
            "id": 19445,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19421,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 19445,
                  "src": "1095:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19420,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1095:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19423,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 19445,
                  "src": "1114:11:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19422,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1114:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19425,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 19445,
                  "src": "1131:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19424,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1131:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1089:60:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19428,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19445,
                  "src": "1174:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19427,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1173:15:69"
            },
            "scope": 19610,
            "src": "1068:232:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19477,
              "nodeType": "Block",
              "src": "1437:145:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19457,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19447,
                        "src": "1452:9:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19458,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19449,
                        "src": "1463:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 19456,
                      "name": "transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19419,
                      "src": "1443:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) returns (bool)"
                      }
                    },
                    "id": 19459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1443:28:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19460,
                  "nodeType": "ExpressionStatement",
                  "src": "1443:28:69"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19461,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19454,
                      "src": "1477:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19466,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "1527:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1527:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19468,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19449,
                          "src": "1539:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19469,
                          "name": "_data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19451,
                          "src": "1548:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19463,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19447,
                              "src": "1502:9:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19462,
                            "name": "TokenReceiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21206,
                            "src": "1488:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TokenReceiver_$21206_$",
                              "typeString": "type(contract TokenReceiver)"
                            }
                          },
                          "id": 19464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1488:24:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_TokenReceiver_$21206",
                            "typeString": "contract TokenReceiver"
                          }
                        },
                        "id": 19465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokenFallback",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21205,
                        "src": "1488:38:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (address,uint256,bytes32) external returns (bool)"
                        }
                      },
                      "id": 19470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1488:66:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1477:77:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19472,
                  "nodeType": "ExpressionStatement",
                  "src": "1477:77:69"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19474,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19454,
                        "src": "1568:8:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 19473,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1560:7:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 19475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1560:17:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19476,
                  "nodeType": "ExpressionStatement",
                  "src": "1560:17:69"
                }
              ]
            },
            "documentation": null,
            "id": 19478,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferAndCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19447,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 19478,
                  "src": "1334:17:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19446,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1334:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19449,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19478,
                  "src": "1357:15:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19448,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1357:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19451,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 19478,
                  "src": "1378:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19450,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1378:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1328:67:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19454,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19478,
                  "src": "1420:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19453,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1420:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1419:15:69"
            },
            "scope": 19610,
            "src": "1304:278:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19499,
              "nodeType": "Block",
              "src": "1678:100:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19487,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19485,
                      "src": "1684:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19492,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "1744:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1744:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19494,
                          "name": "_spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19480,
                          "src": "1756:8:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19495,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19482,
                          "src": "1766:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19489,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "1711:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19488,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "1695:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1695:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "put_approve",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20446,
                        "src": "1695:48:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (address,address,uint256) external returns (bool)"
                        }
                      },
                      "id": 19496,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1695:78:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1684:89:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19498,
                  "nodeType": "ExpressionStatement",
                  "src": "1684:89:69"
                }
              ]
            },
            "documentation": null,
            "id": 19500,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19480,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 19500,
                  "src": "1603:16:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1603:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19482,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 19500,
                  "src": "1621:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19481,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1602:34:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19485,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19500,
                  "src": "1661:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19484,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1661:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1660:15:69"
            },
            "scope": 19610,
            "src": "1586:192:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19519,
              "nodeType": "Block",
              "src": "1894:93:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19509,
                      "name": "_allowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19507,
                      "src": "1900:10:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19514,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19502,
                          "src": "1965:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19515,
                          "name": "_spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19504,
                          "src": "1973:8:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19511,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "1929:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19510,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "1913:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1913:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "read_allowance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20088,
                        "src": "1913:51:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address,address) view external returns (uint256)"
                        }
                      },
                      "id": 19516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1913:69:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1900:82:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19518,
                  "nodeType": "ExpressionStatement",
                  "src": "1900:82:69"
                }
              ]
            },
            "documentation": null,
            "id": 19520,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19502,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 19520,
                  "src": "1801:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19501,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19504,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 19520,
                  "src": "1817:16:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19503,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1817:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1800:34:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19507,
                  "name": "_allowance",
                  "nodeType": "VariableDeclaration",
                  "scope": 19520,
                  "src": "1872:18:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19506,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1872:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1871:20:69"
            },
            "scope": 19610,
            "src": "1782:205:69",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19544,
              "nodeType": "Block",
              "src": "2161:151:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19533,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19531,
                      "src": "2167:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19538,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19522,
                          "src": "2247:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19539,
                          "name": "_no_demurrage_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19524,
                          "src": "2260:17:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19540,
                          "name": "_no_transfer_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19526,
                          "src": "2285:16:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19535,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "2194:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19534,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "2178:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2178:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "update_user_fees_configs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20484,
                        "src": "2178:61:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$_t_bool_$returns$_t_bool_$",
                          "typeString": "function (address,bool,bool) external returns (bool)"
                        }
                      },
                      "id": 19541,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2178:129:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2167:140:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19543,
                  "nodeType": "ExpressionStatement",
                  "src": "2167:140:69"
                }
              ]
            },
            "documentation": null,
            "id": 19545,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 19529,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 19528,
                  "name": "if_fees_admin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 19364,
                  "src": "2115:13:69",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2115:15:69"
              }
            ],
            "name": "updateUserFeesConfigs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19527,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19522,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 19545,
                  "src": "2027:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19521,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2027:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19524,
                  "name": "_no_demurrage_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 19545,
                  "src": "2046:22:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19523,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2046:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19526,
                  "name": "_no_transfer_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 19545,
                  "src": "2074:21:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19525,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2074:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2021:78:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19531,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19545,
                  "src": "2144:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19530,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2144:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2143:15:69"
            },
            "scope": 19610,
            "src": "1991:321:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19568,
              "nodeType": "Block",
              "src": "2491:130:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 19556,
                          "name": "_base",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19548,
                          "src": "2498:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19557,
                          "name": "_rate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19550,
                          "src": "2505:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19558,
                          "name": "_collector",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19552,
                          "src": "2512:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19559,
                          "name": "_no_demurrage_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19554,
                          "src": "2524:17:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19560,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "2497:45:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_bool_$",
                        "typeString": "tuple(uint256,uint256,address,bool)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19562,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "2561:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19561,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "2545:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2545:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19564,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "read_demurrage_config_underlying",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19924,
                        "src": "2545:69:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_address_$_t_bool_$",
                          "typeString": "function () view external returns (uint256,uint256,address,bool)"
                        }
                      },
                      "id": 19565,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2545:71:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_bool_$",
                        "typeString": "tuple(uint256,uint256,address,bool)"
                      }
                    },
                    "src": "2497:119:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19567,
                  "nodeType": "ExpressionStatement",
                  "src": "2497:119:69"
                }
              ]
            },
            "documentation": null,
            "id": 19569,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "showDemurrageConfigs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19546,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2345:2:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19548,
                  "name": "_base",
                  "nodeType": "VariableDeclaration",
                  "scope": 19569,
                  "src": "2392:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19547,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2392:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19550,
                  "name": "_rate",
                  "nodeType": "VariableDeclaration",
                  "scope": 19569,
                  "src": "2413:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19549,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2413:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19552,
                  "name": "_collector",
                  "nodeType": "VariableDeclaration",
                  "scope": 19569,
                  "src": "2434:18:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19551,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2434:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19554,
                  "name": "_no_demurrage_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 19569,
                  "src": "2460:22:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19553,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2460:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2384:104:69"
            },
            "scope": 19610,
            "src": "2316:305:69",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19588,
              "nodeType": "Block",
              "src": "2922:86:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19578,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19576,
                      "src": "2928:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19583,
                          "name": "_for",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19571,
                          "src": "2989:4:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19584,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19573,
                          "src": "2995:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19580,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "2955:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19579,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "2939:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2939:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mint_dgx_for",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20516,
                        "src": "2939:49:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (address,uint256) external returns (bool)"
                        }
                      },
                      "id": 19585,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2939:64:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2928:75:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19587,
                  "nodeType": "ExpressionStatement",
                  "src": "2928:75:69"
                }
              ]
            },
            "documentation": "/////////////////////////// MOCK FUNCTIONS ///////////////////////////////",
            "id": 19589,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "mintDgxFor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19571,
                  "name": "_for",
                  "nodeType": "VariableDeclaration",
                  "scope": 19589,
                  "src": "2850:12:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19570,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2850:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19573,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19589,
                  "src": "2864:15:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19572,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2864:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2849:31:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19576,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19589,
                  "src": "2905:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19575,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2905:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2904:15:69"
            },
            "scope": 19610,
            "src": "2830:178:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19608,
              "nodeType": "Block",
              "src": "3247:100:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19598,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19596,
                      "src": "3253:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19603,
                          "name": "_of",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19591,
                          "src": "3326:3:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19604,
                          "name": "_byMinutes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19593,
                          "src": "3331:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19600,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "3280:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19599,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "3264:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3264:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "modify_last_payment_date",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20547,
                        "src": "3264:61:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (address,uint256) external returns (bool)"
                        }
                      },
                      "id": 19605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3264:78:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3253:89:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19607,
                  "nodeType": "ExpressionStatement",
                  "src": "3253:89:69"
                }
              ]
            },
            "documentation": null,
            "id": 19609,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "modifyLastPaymentDate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19594,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19591,
                  "name": "_of",
                  "nodeType": "VariableDeclaration",
                  "scope": 19609,
                  "src": "3173:11:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19590,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3173:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19593,
                  "name": "_byMinutes",
                  "nodeType": "VariableDeclaration",
                  "scope": 19609,
                  "src": "3186:18:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19592,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3186:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3172:33:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19597,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19596,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19609,
                  "src": "3230:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19595,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3230:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3229:15:69"
            },
            "scope": 19610,
            "src": "3142:205:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 19611,
        "src": "59:3290:69"
      }
    ],
    "src": "0:3350:69"
  },
  "legacyAST": {
    "absolutePath": "@digix/lite-dgx-contract/contracts/DummyDGX.sol",
    "exportedSymbols": {
      "DummyDGX": [
        19610
      ]
    },
    "id": 19611,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 19323,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".23"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:69"
      },
      {
        "absolutePath": "@digix/lite-dgx-contract/contracts/DummyDGXStorage.sol",
        "file": "./DummyDGXStorage.sol",
        "id": 19324,
        "nodeType": "ImportDirective",
        "scope": 19611,
        "sourceUnit": 21193,
        "src": "26:31:69",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19610,
        "linearizedBaseContracts": [
          19610
        ],
        "name": "DummyDGX",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 19326,
            "name": "DGX_STORAGE_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "82:27:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 19325,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "82:7:69",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 19328,
            "name": "FEES_ADMIN",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "113:18:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 19327,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "113:7:69",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 19331,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "136:54:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 19329,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "136:6:69",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "44756d6d7920446967697820476f6c6420546f6b656e",
              "id": 19330,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "166:24:69",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_15813540638b840667b2835dd9d83cd7d59d4b11fd709c5ccd70287cba43de8a",
                "typeString": "literal_string \"Dummy Digix Gold Token\""
              },
              "value": "Dummy Digix Gold Token"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 19334,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "194:42:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 19332,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "194:6:69",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "44756d6d79444758",
              "id": 19333,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "226:10:69",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9a7e43f3f63475b930e79b1abd673f82851749645bc45d7620322df60d52114f",
                "typeString": "literal_string \"DummyDGX\""
              },
              "value": "DummyDGX"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 19337,
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 19610,
            "src": "240:34:69",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 19335,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "240:5:69",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "39",
              "id": 19336,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "273:1:69",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_9_by_1",
                "typeString": "int_const 9"
              },
              "value": "9"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 19352,
              "nodeType": "Block",
              "src": "350:78:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19344,
                      "name": "DGX_STORAGE_ADDRESS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19326,
                      "src": "356:19:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 19345,
                      "name": "_dummyDGXStorage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19339,
                      "src": "378:16:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "356:38:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 19347,
                  "nodeType": "ExpressionStatement",
                  "src": "356:38:69"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19348,
                      "name": "FEES_ADMIN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19328,
                      "src": "400:10:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 19349,
                      "name": "_feesAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19341,
                      "src": "413:10:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "400:23:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 19351,
                  "nodeType": "ExpressionStatement",
                  "src": "400:23:69"
                }
              ]
            },
            "documentation": null,
            "id": 19353,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19339,
                  "name": "_dummyDGXStorage",
                  "nodeType": "VariableDeclaration",
                  "scope": 19353,
                  "src": "291:24:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19338,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "291:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19341,
                  "name": "_feesAdmin",
                  "nodeType": "VariableDeclaration",
                  "scope": 19353,
                  "src": "317:18:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "317:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "290:46:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "350:0:69"
            },
            "scope": 19610,
            "src": "279:149:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19363,
              "nodeType": "Block",
              "src": "457:51:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 19359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19356,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "471:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "471:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 19358,
                          "name": "FEES_ADMIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19328,
                          "src": "485:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "471:24:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 19355,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "463:7:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 19360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "463:33:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19361,
                  "nodeType": "ExpressionStatement",
                  "src": "463:33:69"
                },
                {
                  "id": 19362,
                  "nodeType": "PlaceholderStatement",
                  "src": "502:1:69"
                }
              ]
            },
            "documentation": null,
            "id": 19364,
            "name": "if_fees_admin",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 19354,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "454:2:69"
            },
            "src": "432:76:69",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19377,
              "nodeType": "Block",
              "src": "596:82:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19369,
                      "name": "_totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19367,
                      "src": "602:12:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19371,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "633:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19370,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "617:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "617:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "read_total_supply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20067,
                        "src": "617:54:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 19374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "617:56:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "602:71:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19376,
                  "nodeType": "ExpressionStatement",
                  "src": "602:71:69"
                }
              ]
            },
            "documentation": null,
            "id": 19378,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19365,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "532:2:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19367,
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 19378,
                  "src": "572:20:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19366,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "572:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "571:22:69"
            },
            "scope": 19610,
            "src": "512:166:69",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19394,
              "nodeType": "Block",
              "src": "774:90:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19385,
                      "name": "_balance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19383,
                      "src": "780:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19390,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19380,
                          "src": "852:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19387,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "807:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19386,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "791:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "791:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "show_demurraged_balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20147,
                        "src": "791:60:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 19391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "791:68:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "780:79:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19393,
                  "nodeType": "ExpressionStatement",
                  "src": "780:79:69"
                }
              ]
            },
            "documentation": null,
            "id": 19395,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19380,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 19395,
                  "src": "701:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "701:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "700:16:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19383,
                  "name": "_balance",
                  "nodeType": "VariableDeclaration",
                  "scope": 19395,
                  "src": "754:16:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19382,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "754:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "753:18:69"
            },
            "scope": 19610,
            "src": "682:182:69",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19418,
              "nodeType": "Block",
              "src": "956:108:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19404,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19402,
                      "src": "962:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19409,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "1023:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1023:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19411,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19397,
                          "src": "1035:3:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307830",
                          "id": 19412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1040:3:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0x0"
                        },
                        {
                          "argumentTypes": null,
                          "id": 19413,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19399,
                          "src": "1045:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 19414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1053:5:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19406,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "989:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19405,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "973:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "973:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "put_transfer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20387,
                        "src": "973:49:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$",
                          "typeString": "function (address,address,address,uint256,bool) external returns (bool)"
                        }
                      },
                      "id": 19415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "973:86:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "962:97:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19417,
                  "nodeType": "ExpressionStatement",
                  "src": "962:97:69"
                }
              ]
            },
            "documentation": null,
            "id": 19419,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19397,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 19419,
                  "src": "886:11:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19396,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "886:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19399,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 19419,
                  "src": "899:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19398,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "899:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "885:29:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19403,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19402,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19419,
                  "src": "939:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19401,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "939:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "938:15:69"
            },
            "scope": 19610,
            "src": "868:196:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19444,
              "nodeType": "Block",
              "src": "1191:109:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19430,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19428,
                      "src": "1197:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19435,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19421,
                          "src": "1258:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19436,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19423,
                          "src": "1265:3:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19437,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "1270:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1270:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19439,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19425,
                          "src": "1282:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 19440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1290:4:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19432,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "1224:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19431,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "1208:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1208:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "put_transfer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20387,
                        "src": "1208:49:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$",
                          "typeString": "function (address,address,address,uint256,bool) external returns (bool)"
                        }
                      },
                      "id": 19441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1208:87:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1197:98:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19443,
                  "nodeType": "ExpressionStatement",
                  "src": "1197:98:69"
                }
              ]
            },
            "documentation": null,
            "id": 19445,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19421,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 19445,
                  "src": "1095:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19420,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1095:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19423,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 19445,
                  "src": "1114:11:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19422,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1114:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19425,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 19445,
                  "src": "1131:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19424,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1131:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1089:60:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19428,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19445,
                  "src": "1174:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19427,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1173:15:69"
            },
            "scope": 19610,
            "src": "1068:232:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19477,
              "nodeType": "Block",
              "src": "1437:145:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19457,
                        "name": "_receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19447,
                        "src": "1452:9:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19458,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19449,
                        "src": "1463:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 19456,
                      "name": "transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19419,
                      "src": "1443:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) returns (bool)"
                      }
                    },
                    "id": 19459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1443:28:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19460,
                  "nodeType": "ExpressionStatement",
                  "src": "1443:28:69"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19461,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19454,
                      "src": "1477:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19466,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "1527:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1527:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19468,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19449,
                          "src": "1539:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19469,
                          "name": "_data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19451,
                          "src": "1548:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19463,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19447,
                              "src": "1502:9:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19462,
                            "name": "TokenReceiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21206,
                            "src": "1488:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TokenReceiver_$21206_$",
                              "typeString": "type(contract TokenReceiver)"
                            }
                          },
                          "id": 19464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1488:24:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_TokenReceiver_$21206",
                            "typeString": "contract TokenReceiver"
                          }
                        },
                        "id": 19465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokenFallback",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21205,
                        "src": "1488:38:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (address,uint256,bytes32) external returns (bool)"
                        }
                      },
                      "id": 19470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1488:66:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1477:77:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19472,
                  "nodeType": "ExpressionStatement",
                  "src": "1477:77:69"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19474,
                        "name": "_success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19454,
                        "src": "1568:8:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 19473,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1560:7:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 19475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1560:17:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19476,
                  "nodeType": "ExpressionStatement",
                  "src": "1560:17:69"
                }
              ]
            },
            "documentation": null,
            "id": 19478,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferAndCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19447,
                  "name": "_receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 19478,
                  "src": "1334:17:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19446,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1334:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19449,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19478,
                  "src": "1357:15:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19448,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1357:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19451,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 19478,
                  "src": "1378:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19450,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1378:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1328:67:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19454,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19478,
                  "src": "1420:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19453,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1420:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1419:15:69"
            },
            "scope": 19610,
            "src": "1304:278:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19499,
              "nodeType": "Block",
              "src": "1678:100:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19487,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19485,
                      "src": "1684:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19492,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26182,
                            "src": "1744:3:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 19493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1744:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19494,
                          "name": "_spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19480,
                          "src": "1756:8:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19495,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19482,
                          "src": "1766:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19489,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "1711:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19488,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "1695:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1695:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "put_approve",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20446,
                        "src": "1695:48:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (address,address,uint256) external returns (bool)"
                        }
                      },
                      "id": 19496,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1695:78:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1684:89:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19498,
                  "nodeType": "ExpressionStatement",
                  "src": "1684:89:69"
                }
              ]
            },
            "documentation": null,
            "id": 19500,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19480,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 19500,
                  "src": "1603:16:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1603:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19482,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 19500,
                  "src": "1621:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19481,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1602:34:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19485,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19500,
                  "src": "1661:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19484,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1661:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1660:15:69"
            },
            "scope": 19610,
            "src": "1586:192:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19519,
              "nodeType": "Block",
              "src": "1894:93:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19509,
                      "name": "_allowance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19507,
                      "src": "1900:10:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19514,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19502,
                          "src": "1965:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19515,
                          "name": "_spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19504,
                          "src": "1973:8:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19511,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "1929:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19510,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "1913:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1913:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "read_allowance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20088,
                        "src": "1913:51:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address,address) view external returns (uint256)"
                        }
                      },
                      "id": 19516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1913:69:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1900:82:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19518,
                  "nodeType": "ExpressionStatement",
                  "src": "1900:82:69"
                }
              ]
            },
            "documentation": null,
            "id": 19520,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19502,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 19520,
                  "src": "1801:14:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19501,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19504,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 19520,
                  "src": "1817:16:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19503,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1817:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1800:34:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19507,
                  "name": "_allowance",
                  "nodeType": "VariableDeclaration",
                  "scope": 19520,
                  "src": "1872:18:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19506,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1872:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1871:20:69"
            },
            "scope": 19610,
            "src": "1782:205:69",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19544,
              "nodeType": "Block",
              "src": "2161:151:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19533,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19531,
                      "src": "2167:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19538,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19522,
                          "src": "2247:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19539,
                          "name": "_no_demurrage_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19524,
                          "src": "2260:17:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19540,
                          "name": "_no_transfer_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19526,
                          "src": "2285:16:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19535,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "2194:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19534,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "2178:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2178:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "update_user_fees_configs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20484,
                        "src": "2178:61:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$_t_bool_$returns$_t_bool_$",
                          "typeString": "function (address,bool,bool) external returns (bool)"
                        }
                      },
                      "id": 19541,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2178:129:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2167:140:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19543,
                  "nodeType": "ExpressionStatement",
                  "src": "2167:140:69"
                }
              ]
            },
            "documentation": null,
            "id": 19545,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 19529,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 19528,
                  "name": "if_fees_admin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 19364,
                  "src": "2115:13:69",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2115:15:69"
              }
            ],
            "name": "updateUserFeesConfigs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19527,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19522,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 19545,
                  "src": "2027:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19521,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2027:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19524,
                  "name": "_no_demurrage_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 19545,
                  "src": "2046:22:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19523,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2046:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19526,
                  "name": "_no_transfer_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 19545,
                  "src": "2074:21:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19525,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2074:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2021:78:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19531,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19545,
                  "src": "2144:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19530,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2144:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2143:15:69"
            },
            "scope": 19610,
            "src": "1991:321:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19568,
              "nodeType": "Block",
              "src": "2491:130:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 19556,
                          "name": "_base",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19548,
                          "src": "2498:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19557,
                          "name": "_rate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19550,
                          "src": "2505:5:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19558,
                          "name": "_collector",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19552,
                          "src": "2512:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19559,
                          "name": "_no_demurrage_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19554,
                          "src": "2524:17:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19560,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "2497:45:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_bool_$",
                        "typeString": "tuple(uint256,uint256,address,bool)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19562,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "2561:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19561,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "2545:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2545:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19564,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "read_demurrage_config_underlying",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19924,
                        "src": "2545:69:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_address_$_t_bool_$",
                          "typeString": "function () view external returns (uint256,uint256,address,bool)"
                        }
                      },
                      "id": 19565,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2545:71:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_bool_$",
                        "typeString": "tuple(uint256,uint256,address,bool)"
                      }
                    },
                    "src": "2497:119:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19567,
                  "nodeType": "ExpressionStatement",
                  "src": "2497:119:69"
                }
              ]
            },
            "documentation": null,
            "id": 19569,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "showDemurrageConfigs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19546,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2345:2:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19548,
                  "name": "_base",
                  "nodeType": "VariableDeclaration",
                  "scope": 19569,
                  "src": "2392:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19547,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2392:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19550,
                  "name": "_rate",
                  "nodeType": "VariableDeclaration",
                  "scope": 19569,
                  "src": "2413:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19549,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2413:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19552,
                  "name": "_collector",
                  "nodeType": "VariableDeclaration",
                  "scope": 19569,
                  "src": "2434:18:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19551,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2434:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19554,
                  "name": "_no_demurrage_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 19569,
                  "src": "2460:22:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19553,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2460:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2384:104:69"
            },
            "scope": 19610,
            "src": "2316:305:69",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19588,
              "nodeType": "Block",
              "src": "2922:86:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19578,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19576,
                      "src": "2928:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19583,
                          "name": "_for",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19571,
                          "src": "2989:4:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19584,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19573,
                          "src": "2995:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19580,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "2955:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19579,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "2939:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2939:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mint_dgx_for",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20516,
                        "src": "2939:49:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (address,uint256) external returns (bool)"
                        }
                      },
                      "id": 19585,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2939:64:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2928:75:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19587,
                  "nodeType": "ExpressionStatement",
                  "src": "2928:75:69"
                }
              ]
            },
            "documentation": "/////////////////////////// MOCK FUNCTIONS ///////////////////////////////",
            "id": 19589,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "mintDgxFor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19571,
                  "name": "_for",
                  "nodeType": "VariableDeclaration",
                  "scope": 19589,
                  "src": "2850:12:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19570,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2850:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19573,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19589,
                  "src": "2864:15:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19572,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2864:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2849:31:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19576,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19589,
                  "src": "2905:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19575,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2905:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2904:15:69"
            },
            "scope": 19610,
            "src": "2830:178:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19608,
              "nodeType": "Block",
              "src": "3247:100:69",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19598,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19596,
                      "src": "3253:8:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19603,
                          "name": "_of",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19591,
                          "src": "3326:3:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19604,
                          "name": "_byMinutes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19593,
                          "src": "3331:10:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19600,
                              "name": "DGX_STORAGE_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19326,
                              "src": "3280:19:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19599,
                            "name": "DummyDGXStorage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21192,
                            "src": "3264:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DummyDGXStorage_$21192_$",
                              "typeString": "type(contract DummyDGXStorage)"
                            }
                          },
                          "id": 19601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3264:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DummyDGXStorage_$21192",
                            "typeString": "contract DummyDGXStorage"
                          }
                        },
                        "id": 19602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "modify_last_payment_date",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 20547,
                        "src": "3264:61:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (address,uint256) external returns (bool)"
                        }
                      },
                      "id": 19605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3264:78:69",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3253:89:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19607,
                  "nodeType": "ExpressionStatement",
                  "src": "3253:89:69"
                }
              ]
            },
            "documentation": null,
            "id": 19609,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "modifyLastPaymentDate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19594,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19591,
                  "name": "_of",
                  "nodeType": "VariableDeclaration",
                  "scope": 19609,
                  "src": "3173:11:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19590,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3173:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19593,
                  "name": "_byMinutes",
                  "nodeType": "VariableDeclaration",
                  "scope": 19609,
                  "src": "3186:18:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19592,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3186:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3172:33:69"
            },
            "payable": false,
            "returnParameters": {
              "id": 19597,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19596,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 19609,
                  "src": "3230:13:69",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19595,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3230:4:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3229:15:69"
            },
            "scope": 19610,
            "src": "3142:205:69",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 19611,
        "src": "59:3290:69"
      }
    ],
    "src": "0:3350:69"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-13T02:38:46.130Z"
}