{
  "contractName": "MultiOracle",
  "abi": [
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_result",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "_sender",
          "type": "address"
        }
      ],
      "name": "ResultSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "id",
          "type": "bytes32"
        },
        {
          "name": "result",
          "type": "bytes"
        }
      ],
      "name": "setResult",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "resultFor",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isResultSet",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOracleSet",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        },
        {
          "name": "_dataSource",
          "type": "address"
        }
      ],
      "name": "newOracle",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506110d6806100206000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806316dffad8146100a957806336eb6a921461012057806353bac2c914610169578063715018a6146101b25780638da5cb5b146101c95780638f32d59b146102205780639d8d3f611461024f578063c4d66de8146102a0578063d09cc57e146102e3578063f2fde38b1461038d575b600080fd5b3480156100b557600080fd5b5061011e6004803603810190808035600019169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506103d0565b005b34801561012c57600080fd5b5061014f60048036038101908080356000191690602001909291905050506104e5565b604051808215151515815260200191505060405180910390f35b34801561017557600080fd5b50610198600480360381019080803560001916906020019092919050505061055c565b604051808215151515815260200191505060405180910390f35b3480156101be57600080fd5b506101c7610591565b005b3480156101d557600080fd5b506101de61064d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022c57600080fd5b50610235610677565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b5061029e6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106cf565b005b3480156102ac57600080fd5b506102e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090c565b005b3480156102ef57600080fd5b506103126004803603810190808035600019169060200190929190505050610a4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610352578082015181840152602081019050610337565b50505050905090810190601f16801561037f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039957600080fd5b506103ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b88565b005b60666000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f5468652063616c6c6572206973206e6f74207468652076616c6964206461746181526020017f20736f75726365207769746820676976656e2069642e0000000000000000000081525060400191505060405180910390fd5b6104e18282610ba7565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff1660666000846000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600060666000836000191660001916815260200190815260200160002060020160009054906101000a900460ff169050919050565b610599610677565b15156105a457600080fd5b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6106d7610677565b15156106e257600080fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e76616c69642064617461536f757263652e0000000000000000000000000081525060200191505060405180910390fd5b610791836104e5565b15151561082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f7261636c6520776974682074686520676976656e2069642068617320616c7281526020017f65616479206265656e207365742e00000000000000000000000000000000000081525060400191505060405180910390fd5b6108358361055c565b1515156108aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f526573756c742068617320616c7265616479206265656e207365742e0000000081525060200191505060405180910390fd5b8160666000856000191660001916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008060019054906101000a900460ff168061092c575061092b610d7d565b5b8061094357506000809054906101000a900460ff16155b15156109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff021916908315150217905550610a2d82610d8e565b80600060016101000a81548160ff0219169083151502179055505050565b6060610a568261055c565b1515610aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f54686520726573756c7420686173206e6f74206265656e207365742e0000000081525060200191505060405180910390fd5b6066600083600019166000191681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7c5780601f10610b5157610100808354040283529160200191610b7c565b820191906000526020600020905b815481529060010190602001808311610b5f57829003601f168201915b50505050509050919050565b610b90610677565b1515610b9b57600080fd5b610ba481610f05565b50565b610bb08261055c565b151515610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f526573756c742068617320616c7265616479206265656e207365742e0000000081525060200191505060405180910390fd5b806066600084600019166000191681526020019081526020016000206001019080519060200190610c57929190611005565b50600160666000846000191660001916815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f9693067292753e3e1e85088e138675c8bf76cc6b9a0512830a45c1bb2cea4d90828233604051808460001916600019168152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015610d33578082015181840152602081019050610d18565b50505050905090810190601f168015610d605780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1610d798282611001565b5050565b600080303b90506000811491505090565b60008060019054906101000a900460ff1680610dae5750610dad610d7d565b5b80610dc557506000809054906101000a900460ff16155b1515610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610f4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061104657805160ff1916838001178555611074565b82800160010185558215611074579182015b82811115611073578251825591602001919060010190611058565b5b5090506110819190611085565b5090565b6110a791905b808211156110a357600081600090555060010161108b565b5090565b905600a165627a7a72305820bf2bcfbc8df5cb04db7b4e6f9624ab9ebed383c42f571ee6dcfcc2d66f96feac0029",
  "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806316dffad8146100a957806336eb6a921461012057806353bac2c914610169578063715018a6146101b25780638da5cb5b146101c95780638f32d59b146102205780639d8d3f611461024f578063c4d66de8146102a0578063d09cc57e146102e3578063f2fde38b1461038d575b600080fd5b3480156100b557600080fd5b5061011e6004803603810190808035600019169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506103d0565b005b34801561012c57600080fd5b5061014f60048036038101908080356000191690602001909291905050506104e5565b604051808215151515815260200191505060405180910390f35b34801561017557600080fd5b50610198600480360381019080803560001916906020019092919050505061055c565b604051808215151515815260200191505060405180910390f35b3480156101be57600080fd5b506101c7610591565b005b3480156101d557600080fd5b506101de61064d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022c57600080fd5b50610235610677565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b5061029e6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106cf565b005b3480156102ac57600080fd5b506102e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090c565b005b3480156102ef57600080fd5b506103126004803603810190808035600019169060200190929190505050610a4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610352578082015181840152602081019050610337565b50505050905090810190601f16801561037f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039957600080fd5b506103ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b88565b005b60666000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f5468652063616c6c6572206973206e6f74207468652076616c6964206461746181526020017f20736f75726365207769746820676976656e2069642e0000000000000000000081525060400191505060405180910390fd5b6104e18282610ba7565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff1660666000846000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600060666000836000191660001916815260200190815260200160002060020160009054906101000a900460ff169050919050565b610599610677565b15156105a457600080fd5b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6106d7610677565b15156106e257600080fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e76616c69642064617461536f757263652e0000000000000000000000000081525060200191505060405180910390fd5b610791836104e5565b15151561082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f7261636c6520776974682074686520676976656e2069642068617320616c7281526020017f65616479206265656e207365742e00000000000000000000000000000000000081525060400191505060405180910390fd5b6108358361055c565b1515156108aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f526573756c742068617320616c7265616479206265656e207365742e0000000081525060200191505060405180910390fd5b8160666000856000191660001916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008060019054906101000a900460ff168061092c575061092b610d7d565b5b8061094357506000809054906101000a900460ff16155b15156109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff021916908315150217905550610a2d82610d8e565b80600060016101000a81548160ff0219169083151502179055505050565b6060610a568261055c565b1515610aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f54686520726573756c7420686173206e6f74206265656e207365742e0000000081525060200191505060405180910390fd5b6066600083600019166000191681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7c5780601f10610b5157610100808354040283529160200191610b7c565b820191906000526020600020905b815481529060010190602001808311610b5f57829003601f168201915b50505050509050919050565b610b90610677565b1515610b9b57600080fd5b610ba481610f05565b50565b610bb08261055c565b151515610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f526573756c742068617320616c7265616479206265656e207365742e0000000081525060200191505060405180910390fd5b806066600084600019166000191681526020019081526020016000206001019080519060200190610c57929190611005565b50600160666000846000191660001916815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f9693067292753e3e1e85088e138675c8bf76cc6b9a0512830a45c1bb2cea4d90828233604051808460001916600019168152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015610d33578082015181840152602081019050610d18565b50505050905090810190601f168015610d605780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1610d798282611001565b5050565b600080303b90506000811491505090565b60008060019054906101000a900460ff1680610dae5750610dad610d7d565b5b80610dc557506000809054906101000a900460ff16155b1515610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610f4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061104657805160ff1916838001178555611074565b82800160010185558215611074579182015b82811115611073578251825591602001919060010190611058565b5b5090506110819190611085565b5090565b6110a791905b808211156110a357600081600090555060010161108b565b5090565b905600a165627a7a72305820bf2bcfbc8df5cb04db7b4e6f9624ab9ebed383c42f571ee6dcfcc2d66f96feac0029",
  "sourceMap": "156:3022:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;156:3022:14;;;;;;;",
  "deployedSourceMap": "156:3022:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;905:212:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1885:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1885:132:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1617:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1617:119:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1375:113:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1375:113:28;;;;;;741:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;741:70:28;;;;;;;;;;;;;;;;;;;;;;;;;;;1028:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1028:83:28;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:322:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2112:322:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;688:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;688:94:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;1293:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1293:178:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1293:178:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1649:101:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1649:101:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:212:14;1003:7;:11;1011:2;1003:11;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;989:36;;:10;:36;;;981:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1090:22;1101:2;1105:6;1090:10;:22::i;:::-;905:212;;:::o;1885:132::-;1955:4;2010:1;1976:36;;:7;:11;1984:2;1976:11;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:36;;;;1969:43;;1885:132;;;:::o;1617:119::-;1687:4;1708:7;:11;1716:2;1708:11;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;1701:30;;1617:119;;;:::o;1375:113:28:-;926:9;:7;:9::i;:::-;918:18;;;;;;;;1451:6;;;;;;;;;;;1432:26;;;;;;;;;;;;1481:1;1464:6;;:19;;;;;;;;;;;;;;;;;;1375:113::o;741:70::-;778:7;800:6;;;;;;;;;;;793:13;;741:70;:::o;1028:83::-;1067:4;1100:6;;;;;;;;;;;1086:20;;:10;:20;;;1079:27;;1028:83;:::o;2112:322:14:-;926:9:28;:7;:9::i;:::-;918:18;;;;;;;;2225:11:14;611:1;590:23;;:9;:23;;;;582:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:16;2267:3;2255:11;:16::i;:::-;2254:17;2246:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2337:16;2349:3;2337:11;:16::i;:::-;2336:17;2328:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2418:11;2392:7;:12;2400:3;2392:12;;;;;;;;;;;;;;;;;:23;;;:37;;;;;;;;;;;;;;;;;;942:1:28;2112:322:14;;:::o;688:94::-;1121:20:29;1016:12;;;;;;;;;;;:31;;;;1032:15;:13;:15::i;:::-;1016:31;:47;;;;1052:11;;;;;;;;;;;1051:12;1016:47;1008:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:12;;;;;;;;;;;1121:35;;1177:4;1162:12;;:19;;;;;;;;;;;;;;;;;;1201:4;1187:11;;:18;;;;;;;;;;;;;;;;;;750:27:14;769:7;750:18;:27::i;:::-;1235:15:29;1220:12;;:30;;;;;;;;;;;;;;;;;;688:94:14;;:::o;1293:178::-;1364:5;1387:15;1399:2;1387:11;:15::i;:::-;1379:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1448:7;:11;1456:2;1448:11;;;;;;;;;;;;;;;;;:18;;1441:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1293:178;;;:::o;1649:101:28:-;926:9;:7;:9::i;:::-;918:18;;;;;;;;1717:28;1736:8;1717:18;:28::i;:::-;1649:101;:::o;2699:296:14:-;2790:16;2802:3;2790:11;:16::i;:::-;2789:17;2781:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2867:7;2845;:12;2853:3;2845:12;;;;;;;;;;;;;;;;;:19;;:29;;;;;;;;;;;;:::i;:::-;;2907:4;2880:7;:12;2888:3;2880:12;;;;;;;;;;;;;;;;;:24;;;:31;;;;;;;;;;;;;;;;;;2922:35;2932:3;2937:7;2946:10;2922:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2922:35:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2963:27;2977:3;2982:7;2963:13;:27::i;:::-;2699:296;;:::o;1341:467:29:-;1388:4;1729:10;1774:7;1762:20;1756:26;;1802:1;1796:2;:7;1789:14;;1341:467;;:::o;605:81:28:-;1121:20:29;1016:12;;;;;;;;;;;:31;;;;1032:15;:13;:15::i;:::-;1016:31;:47;;;;1052:11;;;;;;;;;;;1051:12;1016:47;1008:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:12;;;;;;;;;;;1121:35;;1177:4;1162:12;;:19;;;;;;;;;;;;;;;;;;1201:4;1187:11;;:18;;;;;;;;;;;;;;;;;;675:6:28;666;;:15;;;;;;;;;;;;;;;;;;1235::29;1220:12;;:30;;;;;;;;;;;;;;;;;;605:81:28;;:::o;1884:169::-;1973:1;1953:22;;:8;:22;;;;1945:31;;;;;;;;2016:8;1987:38;;2008:6;;;;;;;;;;;1987:38;;;;;;;;;;;;2040:8;2031:6;;:17;;;;;;;;;;;;;;;;;;1884:169;:::o;3072:104:14:-;;;:::o;156:3022::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./IOracle.sol\";\nimport \"openzeppelin-eth/contracts/ownership/Ownable.sol\";\nimport \"zos-lib/contracts/Initializable.sol\";\n\ncontract MultiOracle is Initializable, IOracle, Ownable {\n\n  struct OracleData {\n    address dataSource;\n    bytes result;\n    bool resultIsSet;\n  }\n\n  mapping (bytes32 => OracleData) results; // id to result map\n\n  event ResultSet(bytes32 _id, bytes _result, address _sender);\n\n  /**\n   * @dev Throws if operator is not dataSource.\n   * @param _operator address\n   */\n  modifier onlyIfValidAddress(address _operator)\n  {\n    require(_operator != address(0), \"Invalid dataSource.\");\n    _;\n  }\n\n  /*\n   *  Public functions\n   */\n\n  function initialize(address _sender) public initializer {\n    Ownable.initialize(_sender);\n  }\n\n /**\n  * @dev Sets the result of the oracle\n  * @param id The id being set\n  * @param result The result being set\n  */\n  function setResult(\n    bytes32 id,\n    bytes result\n  )\n    public\n  {\n    require(msg.sender == results[id].dataSource, \"The caller is not the valid data source with given id.\");\n    _setResult(id, result);\n  }\n\n  /**\n   * @dev Returns the result or reverts if it hasn't been set\n   * @param id The id to identify the oracle\n   * @return The result or the oracle's single event\n   */\n  function resultFor(bytes32 id) \n    external\n    view\n    returns\n    (bytes)\n  {\n    require(isResultSet(id), \"The result has not been set.\");\n    return results[id].result;\n  }\n\n  /**\n   * @dev Checks if the result has been set\n   * @param id The id to identify oracle\n   * @return True if the result has been set\n   */\n  function isResultSet(bytes32 id)\n    public\n    view\n    returns\n    (bool)\n  {\n    return results[id].resultIsSet;\n  }\n\n  /**\n   * @dev Checks if the oracle has been set\n   * @param id The id to identify the oracle\n   * @return True if the oracle has been set\n  */\n  function isOracleSet(bytes32 id)\n    public\n    view\n    returns\n    (bool)\n  {\n    return results[id].dataSource != address(0);\n  }\n\n  /**\n   * @dev Only owner could add a new oracle with id and dataSource information\n   */\n  function newOracle(\n    bytes32 _id,\n    address _dataSource\n  )\n    public\n    onlyOwner\n    onlyIfValidAddress(_dataSource)\n  {\n    require(!isOracleSet(_id), \"Oracle with the given id has already been set.\");\n    require(!isResultSet(_id), \"Result has already been set.\");\n    results[_id].dataSource = _dataSource;\n  }\n\n  /*\n   *  Internal functions\n   */\n\n  /**\n   * @dev Set's the result, emits ResultSet, and calls the _resultWasSet()\n   * overridable function\n   * @param _result The result of the oracle's single event.\n   * @param _id The id to identify single oracle.\n   */\n  function _setResult(\n    bytes32 _id, \n    bytes _result\n  )\n    internal\n  {\n    require(!isResultSet(_id), \"Result has already been set.\");\n    results[_id].result = _result;\n    results[_id].resultIsSet = true;\n    emit ResultSet(_id, _result, msg.sender);\n    _resultWasSet(_id, _result);\n  }\n\n  /**\n   * @dev Empty function meant to be overidden in subclasses\n   */\n  function _resultWasSet(bytes32 /*_id*/, bytes /*_result*/)\n    internal\n  {\n    // optional override\n  }\n}\n",
  "sourcePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/MultiOracle.sol",
  "ast": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/MultiOracle.sol",
    "exportedSymbols": {
      "MultiOracle": [
        646
      ]
    },
    "id": 647,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 428,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:14"
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/IOracle.sol",
        "file": "./IOracle.sol",
        "id": 429,
        "nodeType": "ImportDirective",
        "scope": 647,
        "sourceUnit": 274,
        "src": "26:23:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-eth/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-eth/contracts/ownership/Ownable.sol",
        "id": 430,
        "nodeType": "ImportDirective",
        "scope": 647,
        "sourceUnit": 3186,
        "src": "50:58:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zos-lib/contracts/Initializable.sol",
        "file": "zos-lib/contracts/Initializable.sol",
        "id": 431,
        "nodeType": "ImportDirective",
        "scope": 647,
        "sourceUnit": 3242,
        "src": "109:45:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 432,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3241,
              "src": "180:13:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$3241",
                "typeString": "contract Initializable"
              }
            },
            "id": 433,
            "nodeType": "InheritanceSpecifier",
            "src": "180:13:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 434,
              "name": "IOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 273,
              "src": "195:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IOracle_$273",
                "typeString": "contract IOracle"
              }
            },
            "id": 435,
            "nodeType": "InheritanceSpecifier",
            "src": "195:7:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 436,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3185,
              "src": "204:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$3185",
                "typeString": "contract Ownable"
              }
            },
            "id": 437,
            "nodeType": "InheritanceSpecifier",
            "src": "204:7:14"
          }
        ],
        "contractDependencies": [
          273,
          3185,
          3241
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 646,
        "linearizedBaseContracts": [
          646,
          3185,
          273,
          3241
        ],
        "name": "MultiOracle",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "MultiOracle.OracleData",
            "id": 444,
            "members": [
              {
                "constant": false,
                "id": 439,
                "name": "dataSource",
                "nodeType": "VariableDeclaration",
                "scope": 444,
                "src": "241:18:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 438,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "241:7:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 441,
                "name": "result",
                "nodeType": "VariableDeclaration",
                "scope": 444,
                "src": "265:12:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 440,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "265:5:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 443,
                "name": "resultIsSet",
                "nodeType": "VariableDeclaration",
                "scope": 444,
                "src": "283:16:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 442,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "283:4:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "OracleData",
            "nodeType": "StructDefinition",
            "scope": 646,
            "src": "217:87:14",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 448,
            "name": "results",
            "nodeType": "VariableDeclaration",
            "scope": 646,
            "src": "308:39:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
              "typeString": "mapping(bytes32 => struct MultiOracle.OracleData)"
            },
            "typeName": {
              "id": 447,
              "keyType": {
                "id": 445,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "317:7:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "308:31:14",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                "typeString": "mapping(bytes32 => struct MultiOracle.OracleData)"
              },
              "valueType": {
                "contractScope": null,
                "id": 446,
                "name": "OracleData",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 444,
                "src": "328:10:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_OracleData_$444_storage_ptr",
                  "typeString": "struct MultiOracle.OracleData"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 456,
            "name": "ResultSet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 450,
                  "indexed": false,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 456,
                  "src": "388:11:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 449,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "388:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 452,
                  "indexed": false,
                  "name": "_result",
                  "nodeType": "VariableDeclaration",
                  "scope": 456,
                  "src": "401:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 451,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "401:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 454,
                  "indexed": false,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 456,
                  "src": "416:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 453,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "416:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "387:45:14"
            },
            "src": "372:61:14"
          },
          {
            "body": {
              "id": 470,
              "nodeType": "Block",
              "src": "576:73:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 461,
                          "name": "_operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 458,
                          "src": "590:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "611:1:14",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "603:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "603:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "590:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642064617461536f757263652e",
                        "id": 466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "615:21:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5a7df9f29eb10a5d189ddd4473567aa13324296e3a01c7061b08815f550117e4",
                          "typeString": "literal_string \"Invalid dataSource.\""
                        },
                        "value": "Invalid dataSource."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5a7df9f29eb10a5d189ddd4473567aa13324296e3a01c7061b08815f550117e4",
                          "typeString": "literal_string \"Invalid dataSource.\""
                        }
                      ],
                      "id": 460,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "582:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "582:55:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 468,
                  "nodeType": "ExpressionStatement",
                  "src": "582:55:14"
                },
                {
                  "id": 469,
                  "nodeType": "PlaceholderStatement",
                  "src": "643:1:14"
                }
              ]
            },
            "documentation": "@dev Throws if operator is not dataSource.\n@param _operator address",
            "id": 471,
            "name": "onlyIfValidAddress",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 458,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 471,
                  "src": "555:17:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 457,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "555:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "554:19:14"
            },
            "src": "527:122:14",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 484,
              "nodeType": "Block",
              "src": "744:38:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 481,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 473,
                        "src": "769:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 478,
                        "name": "Ownable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3185,
                        "src": "750:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Ownable_$3185_$",
                          "typeString": "type(contract Ownable)"
                        }
                      },
                      "id": 480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3101,
                      "src": "750:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "750:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 483,
                  "nodeType": "ExpressionStatement",
                  "src": "750:27:14"
                }
              ]
            },
            "documentation": null,
            "id": 485,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 476,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 475,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3222,
                  "src": "732:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "732:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 473,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 485,
                  "src": "708:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "708:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "707:17:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "744:0:14"
            },
            "scope": 646,
            "src": "688:94:14",
            "stateMutability": "nonpayable",
            "superFunction": 3101,
            "visibility": "public"
          },
          {
            "body": {
              "id": 508,
              "nodeType": "Block",
              "src": "975:142:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 493,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3256,
                            "src": "989:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "989:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 495,
                              "name": "results",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 448,
                              "src": "1003:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                                "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                              }
                            },
                            "id": 497,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 496,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 487,
                              "src": "1011:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1003:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OracleData_$444_storage",
                              "typeString": "struct MultiOracle.OracleData storage ref"
                            }
                          },
                          "id": 498,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "dataSource",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 439,
                          "src": "1003:22:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "989:36:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5468652063616c6c6572206973206e6f74207468652076616c6964206461746120736f75726365207769746820676976656e2069642e",
                        "id": 500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1027:56:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d5cd3fb749ce606a6b6bae1aad547470d577e69563ff9c06065dd169b9b6f611",
                          "typeString": "literal_string \"The caller is not the valid data source with given id.\""
                        },
                        "value": "The caller is not the valid data source with given id."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d5cd3fb749ce606a6b6bae1aad547470d577e69563ff9c06065dd169b9b6f611",
                          "typeString": "literal_string \"The caller is not the valid data source with given id.\""
                        }
                      ],
                      "id": 492,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "981:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "981:103:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 502,
                  "nodeType": "ExpressionStatement",
                  "src": "981:103:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 504,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 487,
                        "src": "1101:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 505,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 489,
                        "src": "1105:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 503,
                      "name": "_setResult",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 637,
                      "src": "1090:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1090:22:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 507,
                  "nodeType": "ExpressionStatement",
                  "src": "1090:22:14"
                }
              ]
            },
            "documentation": "@dev Sets the result of the oracle\n@param id The id being set\n@param result The result being set",
            "id": 509,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setResult",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 487,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 509,
                  "src": "929:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 486,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "929:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 489,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 509,
                  "src": "945:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 488,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "945:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "923:38:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 491,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "975:0:14"
            },
            "scope": 646,
            "src": "905:212:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 528,
              "nodeType": "Block",
              "src": "1373:98:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 518,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 511,
                            "src": "1399:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 517,
                          "name": "isResultSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 542,
                          "src": "1387:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1387:15:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686520726573756c7420686173206e6f74206265656e207365742e",
                        "id": 520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1404:30:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b4c2c41b307e538d03aa2610139cc2634e8b8010e8522370d1796162149980d0",
                          "typeString": "literal_string \"The result has not been set.\""
                        },
                        "value": "The result has not been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b4c2c41b307e538d03aa2610139cc2634e8b8010e8522370d1796162149980d0",
                          "typeString": "literal_string \"The result has not been set.\""
                        }
                      ],
                      "id": 516,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "1379:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1379:56:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 522,
                  "nodeType": "ExpressionStatement",
                  "src": "1379:56:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 523,
                        "name": "results",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 448,
                        "src": "1448:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                          "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                        }
                      },
                      "id": 525,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 524,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 511,
                        "src": "1456:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1448:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_OracleData_$444_storage",
                        "typeString": "struct MultiOracle.OracleData storage ref"
                      }
                    },
                    "id": 526,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "result",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 441,
                    "src": "1448:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 515,
                  "id": 527,
                  "nodeType": "Return",
                  "src": "1441:25:14"
                }
              ]
            },
            "documentation": "@dev Returns the result or reverts if it hasn't been set\n@param id The id to identify the oracle\n@return The result or the oracle's single event",
            "id": 529,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "resultFor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 512,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 511,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1312:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 510,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1312:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1311:12:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 514,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1364:5:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 513,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1363:7:14"
            },
            "scope": 646,
            "src": "1293:178:14",
            "stateMutability": "view",
            "superFunction": 265,
            "visibility": "external"
          },
          {
            "body": {
              "id": 541,
              "nodeType": "Block",
              "src": "1695:41:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 536,
                        "name": "results",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 448,
                        "src": "1708:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                          "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                        }
                      },
                      "id": 538,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 537,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 531,
                        "src": "1716:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1708:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_OracleData_$444_storage",
                        "typeString": "struct MultiOracle.OracleData storage ref"
                      }
                    },
                    "id": 539,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "resultIsSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 443,
                    "src": "1708:23:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 535,
                  "id": 540,
                  "nodeType": "Return",
                  "src": "1701:30:14"
                }
              ]
            },
            "documentation": "@dev Checks if the result has been set\n@param id The id to identify oracle\n@return True if the result has been set",
            "id": 542,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isResultSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 531,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 542,
                  "src": "1638:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 530,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1638:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1637:12:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 534,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 542,
                  "src": "1687:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 533,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1687:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1686:6:14"
            },
            "scope": 646,
            "src": "1617:119:14",
            "stateMutability": "view",
            "superFunction": 272,
            "visibility": "public"
          },
          {
            "body": {
              "id": 558,
              "nodeType": "Block",
              "src": "1963:54:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 549,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "1976:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                            "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                          }
                        },
                        "id": 551,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 550,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 544,
                          "src": "1984:2:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1976:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OracleData_$444_storage",
                          "typeString": "struct MultiOracle.OracleData storage ref"
                        }
                      },
                      "id": 552,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dataSource",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 439,
                      "src": "1976:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2010:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2002:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2002:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1976:36:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 548,
                  "id": 557,
                  "nodeType": "Return",
                  "src": "1969:43:14"
                }
              ]
            },
            "documentation": "@dev Checks if the oracle has been set\n@param id The id to identify the oracle\n@return True if the oracle has been set",
            "id": 559,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isOracleSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 544,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 559,
                  "src": "1906:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 543,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1906:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1905:12:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 547,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 559,
                  "src": "1955:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 546,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1955:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1954:6:14"
            },
            "scope": 646,
            "src": "1885:132:14",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 594,
              "nodeType": "Block",
              "src": "2240:194:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2254:17:14",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 573,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 561,
                              "src": "2267:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 572,
                            "name": "isOracleSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 559,
                            "src": "2255:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2255:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f7261636c6520776974682074686520676976656e2069642068617320616c7265616479206265656e207365742e",
                        "id": 576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2273:48:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1d43a3852eb1d28615908ad7e465f69f319466654c8681d92a0f557c9e0eccf5",
                          "typeString": "literal_string \"Oracle with the given id has already been set.\""
                        },
                        "value": "Oracle with the given id has already been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1d43a3852eb1d28615908ad7e465f69f319466654c8681d92a0f557c9e0eccf5",
                          "typeString": "literal_string \"Oracle with the given id has already been set.\""
                        }
                      ],
                      "id": 571,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "2246:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2246:76:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 578,
                  "nodeType": "ExpressionStatement",
                  "src": "2246:76:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2336:17:14",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 581,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 561,
                              "src": "2349:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 580,
                            "name": "isResultSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 542,
                            "src": "2337:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2337:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "526573756c742068617320616c7265616479206265656e207365742e",
                        "id": 584,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2355:30:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        },
                        "value": "Result has already been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        }
                      ],
                      "id": 579,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "2328:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2328:58:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 586,
                  "nodeType": "ExpressionStatement",
                  "src": "2328:58:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 587,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "2392:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                            "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                          }
                        },
                        "id": 589,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 588,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 561,
                          "src": "2400:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2392:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OracleData_$444_storage",
                          "typeString": "struct MultiOracle.OracleData storage ref"
                        }
                      },
                      "id": 590,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dataSource",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 439,
                      "src": "2392:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 591,
                      "name": "_dataSource",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 563,
                      "src": "2418:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2392:37:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 593,
                  "nodeType": "ExpressionStatement",
                  "src": "2392:37:14"
                }
              ]
            },
            "documentation": "@dev Only owner could add a new oracle with id and dataSource information",
            "id": 595,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 566,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 565,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3118,
                  "src": "2192:9:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2192:9:14"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 568,
                    "name": "_dataSource",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 563,
                    "src": "2225:11:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 569,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 567,
                  "name": "onlyIfValidAddress",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 471,
                  "src": "2206:18:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2206:31:14"
              }
            ],
            "name": "newOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 561,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 595,
                  "src": "2136:11:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 560,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2136:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 563,
                  "name": "_dataSource",
                  "nodeType": "VariableDeclaration",
                  "scope": 595,
                  "src": "2153:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2153:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2130:46:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 570,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2240:0:14"
            },
            "scope": 646,
            "src": "2112:322:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 636,
              "nodeType": "Block",
              "src": "2775:220:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 606,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2789:17:14",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 604,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 597,
                              "src": "2802:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 603,
                            "name": "isResultSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 542,
                            "src": "2790:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2790:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "526573756c742068617320616c7265616479206265656e207365742e",
                        "id": 607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2808:30:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        },
                        "value": "Result has already been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        }
                      ],
                      "id": 602,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "2781:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2781:58:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 609,
                  "nodeType": "ExpressionStatement",
                  "src": "2781:58:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 610,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "2845:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                            "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                          }
                        },
                        "id": 612,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 611,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 597,
                          "src": "2853:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2845:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OracleData_$444_storage",
                          "typeString": "struct MultiOracle.OracleData storage ref"
                        }
                      },
                      "id": 613,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "result",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 441,
                      "src": "2845:19:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 614,
                      "name": "_result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 599,
                      "src": "2867:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "2845:29:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 616,
                  "nodeType": "ExpressionStatement",
                  "src": "2845:29:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 617,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "2880:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                            "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                          }
                        },
                        "id": 619,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 618,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 597,
                          "src": "2888:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2880:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OracleData_$444_storage",
                          "typeString": "struct MultiOracle.OracleData storage ref"
                        }
                      },
                      "id": 620,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "resultIsSet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 443,
                      "src": "2880:24:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2907:4:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2880:31:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 623,
                  "nodeType": "ExpressionStatement",
                  "src": "2880:31:14"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 625,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 597,
                        "src": "2932:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 626,
                        "name": "_result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "2937:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 627,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3256,
                          "src": "2946:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2946:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 624,
                      "name": "ResultSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 456,
                      "src": "2922:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes memory,address)"
                      }
                    },
                    "id": 629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2922:35:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 630,
                  "nodeType": "EmitStatement",
                  "src": "2917:40:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 632,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 597,
                        "src": "2977:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 633,
                        "name": "_result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "2982:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 631,
                      "name": "_resultWasSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 645,
                      "src": "2963:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2963:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 635,
                  "nodeType": "ExpressionStatement",
                  "src": "2963:27:14"
                }
              ]
            },
            "documentation": "@dev Set's the result, emits ResultSet, and calls the _resultWasSet()\noverridable function\n@param _result The result of the oracle's single event.\n@param _id The id to identify single oracle.",
            "id": 637,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setResult",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 597,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 637,
                  "src": "2724:11:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 596,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2724:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 599,
                  "name": "_result",
                  "nodeType": "VariableDeclaration",
                  "scope": 637,
                  "src": "2742:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 598,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2742:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2718:41:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2775:0:14"
            },
            "scope": 646,
            "src": "2699:296:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 644,
              "nodeType": "Block",
              "src": "3146:30:14",
              "statements": []
            },
            "documentation": "@dev Empty function meant to be overidden in subclasses",
            "id": 645,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_resultWasSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 639,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 645,
                  "src": "3095:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 638,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3095:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 641,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 645,
                  "src": "3112:5:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 640,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3112:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3094:36:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 643,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3146:0:14"
            },
            "scope": 646,
            "src": "3072:104:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 647,
        "src": "156:3022:14"
      }
    ],
    "src": "0:3179:14"
  },
  "legacyAST": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/MultiOracle.sol",
    "exportedSymbols": {
      "MultiOracle": [
        646
      ]
    },
    "id": 647,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 428,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:14"
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/IOracle.sol",
        "file": "./IOracle.sol",
        "id": 429,
        "nodeType": "ImportDirective",
        "scope": 647,
        "sourceUnit": 274,
        "src": "26:23:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-eth/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-eth/contracts/ownership/Ownable.sol",
        "id": 430,
        "nodeType": "ImportDirective",
        "scope": 647,
        "sourceUnit": 3186,
        "src": "50:58:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zos-lib/contracts/Initializable.sol",
        "file": "zos-lib/contracts/Initializable.sol",
        "id": 431,
        "nodeType": "ImportDirective",
        "scope": 647,
        "sourceUnit": 3242,
        "src": "109:45:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 432,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3241,
              "src": "180:13:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$3241",
                "typeString": "contract Initializable"
              }
            },
            "id": 433,
            "nodeType": "InheritanceSpecifier",
            "src": "180:13:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 434,
              "name": "IOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 273,
              "src": "195:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IOracle_$273",
                "typeString": "contract IOracle"
              }
            },
            "id": 435,
            "nodeType": "InheritanceSpecifier",
            "src": "195:7:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 436,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3185,
              "src": "204:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$3185",
                "typeString": "contract Ownable"
              }
            },
            "id": 437,
            "nodeType": "InheritanceSpecifier",
            "src": "204:7:14"
          }
        ],
        "contractDependencies": [
          273,
          3185,
          3241
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 646,
        "linearizedBaseContracts": [
          646,
          3185,
          273,
          3241
        ],
        "name": "MultiOracle",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "MultiOracle.OracleData",
            "id": 444,
            "members": [
              {
                "constant": false,
                "id": 439,
                "name": "dataSource",
                "nodeType": "VariableDeclaration",
                "scope": 444,
                "src": "241:18:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 438,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "241:7:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 441,
                "name": "result",
                "nodeType": "VariableDeclaration",
                "scope": 444,
                "src": "265:12:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 440,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "265:5:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 443,
                "name": "resultIsSet",
                "nodeType": "VariableDeclaration",
                "scope": 444,
                "src": "283:16:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 442,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "283:4:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "OracleData",
            "nodeType": "StructDefinition",
            "scope": 646,
            "src": "217:87:14",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 448,
            "name": "results",
            "nodeType": "VariableDeclaration",
            "scope": 646,
            "src": "308:39:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
              "typeString": "mapping(bytes32 => struct MultiOracle.OracleData)"
            },
            "typeName": {
              "id": 447,
              "keyType": {
                "id": 445,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "317:7:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "308:31:14",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                "typeString": "mapping(bytes32 => struct MultiOracle.OracleData)"
              },
              "valueType": {
                "contractScope": null,
                "id": 446,
                "name": "OracleData",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 444,
                "src": "328:10:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_OracleData_$444_storage_ptr",
                  "typeString": "struct MultiOracle.OracleData"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 456,
            "name": "ResultSet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 450,
                  "indexed": false,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 456,
                  "src": "388:11:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 449,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "388:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 452,
                  "indexed": false,
                  "name": "_result",
                  "nodeType": "VariableDeclaration",
                  "scope": 456,
                  "src": "401:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 451,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "401:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 454,
                  "indexed": false,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 456,
                  "src": "416:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 453,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "416:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "387:45:14"
            },
            "src": "372:61:14"
          },
          {
            "body": {
              "id": 470,
              "nodeType": "Block",
              "src": "576:73:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 461,
                          "name": "_operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 458,
                          "src": "590:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "611:1:14",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "603:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "603:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "590:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642064617461536f757263652e",
                        "id": 466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "615:21:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5a7df9f29eb10a5d189ddd4473567aa13324296e3a01c7061b08815f550117e4",
                          "typeString": "literal_string \"Invalid dataSource.\""
                        },
                        "value": "Invalid dataSource."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5a7df9f29eb10a5d189ddd4473567aa13324296e3a01c7061b08815f550117e4",
                          "typeString": "literal_string \"Invalid dataSource.\""
                        }
                      ],
                      "id": 460,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "582:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "582:55:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 468,
                  "nodeType": "ExpressionStatement",
                  "src": "582:55:14"
                },
                {
                  "id": 469,
                  "nodeType": "PlaceholderStatement",
                  "src": "643:1:14"
                }
              ]
            },
            "documentation": "@dev Throws if operator is not dataSource.\n@param _operator address",
            "id": 471,
            "name": "onlyIfValidAddress",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 458,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 471,
                  "src": "555:17:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 457,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "555:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "554:19:14"
            },
            "src": "527:122:14",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 484,
              "nodeType": "Block",
              "src": "744:38:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 481,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 473,
                        "src": "769:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 478,
                        "name": "Ownable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3185,
                        "src": "750:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Ownable_$3185_$",
                          "typeString": "type(contract Ownable)"
                        }
                      },
                      "id": 480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3101,
                      "src": "750:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "750:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 483,
                  "nodeType": "ExpressionStatement",
                  "src": "750:27:14"
                }
              ]
            },
            "documentation": null,
            "id": 485,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 476,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 475,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3222,
                  "src": "732:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "732:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 473,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 485,
                  "src": "708:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "708:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "707:17:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "744:0:14"
            },
            "scope": 646,
            "src": "688:94:14",
            "stateMutability": "nonpayable",
            "superFunction": 3101,
            "visibility": "public"
          },
          {
            "body": {
              "id": 508,
              "nodeType": "Block",
              "src": "975:142:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 493,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3256,
                            "src": "989:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "989:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 495,
                              "name": "results",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 448,
                              "src": "1003:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                                "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                              }
                            },
                            "id": 497,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 496,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 487,
                              "src": "1011:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1003:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OracleData_$444_storage",
                              "typeString": "struct MultiOracle.OracleData storage ref"
                            }
                          },
                          "id": 498,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "dataSource",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 439,
                          "src": "1003:22:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "989:36:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5468652063616c6c6572206973206e6f74207468652076616c6964206461746120736f75726365207769746820676976656e2069642e",
                        "id": 500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1027:56:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d5cd3fb749ce606a6b6bae1aad547470d577e69563ff9c06065dd169b9b6f611",
                          "typeString": "literal_string \"The caller is not the valid data source with given id.\""
                        },
                        "value": "The caller is not the valid data source with given id."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d5cd3fb749ce606a6b6bae1aad547470d577e69563ff9c06065dd169b9b6f611",
                          "typeString": "literal_string \"The caller is not the valid data source with given id.\""
                        }
                      ],
                      "id": 492,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "981:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "981:103:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 502,
                  "nodeType": "ExpressionStatement",
                  "src": "981:103:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 504,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 487,
                        "src": "1101:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 505,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 489,
                        "src": "1105:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 503,
                      "name": "_setResult",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 637,
                      "src": "1090:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1090:22:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 507,
                  "nodeType": "ExpressionStatement",
                  "src": "1090:22:14"
                }
              ]
            },
            "documentation": "@dev Sets the result of the oracle\n@param id The id being set\n@param result The result being set",
            "id": 509,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setResult",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 487,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 509,
                  "src": "929:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 486,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "929:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 489,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 509,
                  "src": "945:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 488,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "945:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "923:38:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 491,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "975:0:14"
            },
            "scope": 646,
            "src": "905:212:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 528,
              "nodeType": "Block",
              "src": "1373:98:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 518,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 511,
                            "src": "1399:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 517,
                          "name": "isResultSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 542,
                          "src": "1387:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1387:15:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686520726573756c7420686173206e6f74206265656e207365742e",
                        "id": 520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1404:30:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b4c2c41b307e538d03aa2610139cc2634e8b8010e8522370d1796162149980d0",
                          "typeString": "literal_string \"The result has not been set.\""
                        },
                        "value": "The result has not been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b4c2c41b307e538d03aa2610139cc2634e8b8010e8522370d1796162149980d0",
                          "typeString": "literal_string \"The result has not been set.\""
                        }
                      ],
                      "id": 516,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "1379:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1379:56:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 522,
                  "nodeType": "ExpressionStatement",
                  "src": "1379:56:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 523,
                        "name": "results",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 448,
                        "src": "1448:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                          "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                        }
                      },
                      "id": 525,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 524,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 511,
                        "src": "1456:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1448:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_OracleData_$444_storage",
                        "typeString": "struct MultiOracle.OracleData storage ref"
                      }
                    },
                    "id": 526,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "result",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 441,
                    "src": "1448:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 515,
                  "id": 527,
                  "nodeType": "Return",
                  "src": "1441:25:14"
                }
              ]
            },
            "documentation": "@dev Returns the result or reverts if it hasn't been set\n@param id The id to identify the oracle\n@return The result or the oracle's single event",
            "id": 529,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "resultFor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 512,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 511,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1312:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 510,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1312:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1311:12:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 514,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 529,
                  "src": "1364:5:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 513,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1363:7:14"
            },
            "scope": 646,
            "src": "1293:178:14",
            "stateMutability": "view",
            "superFunction": 265,
            "visibility": "external"
          },
          {
            "body": {
              "id": 541,
              "nodeType": "Block",
              "src": "1695:41:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 536,
                        "name": "results",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 448,
                        "src": "1708:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                          "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                        }
                      },
                      "id": 538,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 537,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 531,
                        "src": "1716:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1708:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_OracleData_$444_storage",
                        "typeString": "struct MultiOracle.OracleData storage ref"
                      }
                    },
                    "id": 539,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "resultIsSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 443,
                    "src": "1708:23:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 535,
                  "id": 540,
                  "nodeType": "Return",
                  "src": "1701:30:14"
                }
              ]
            },
            "documentation": "@dev Checks if the result has been set\n@param id The id to identify oracle\n@return True if the result has been set",
            "id": 542,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isResultSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 531,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 542,
                  "src": "1638:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 530,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1638:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1637:12:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 534,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 542,
                  "src": "1687:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 533,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1687:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1686:6:14"
            },
            "scope": 646,
            "src": "1617:119:14",
            "stateMutability": "view",
            "superFunction": 272,
            "visibility": "public"
          },
          {
            "body": {
              "id": 558,
              "nodeType": "Block",
              "src": "1963:54:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 549,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "1976:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                            "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                          }
                        },
                        "id": 551,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 550,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 544,
                          "src": "1984:2:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1976:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OracleData_$444_storage",
                          "typeString": "struct MultiOracle.OracleData storage ref"
                        }
                      },
                      "id": 552,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "dataSource",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 439,
                      "src": "1976:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2010:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2002:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2002:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1976:36:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 548,
                  "id": 557,
                  "nodeType": "Return",
                  "src": "1969:43:14"
                }
              ]
            },
            "documentation": "@dev Checks if the oracle has been set\n@param id The id to identify the oracle\n@return True if the oracle has been set",
            "id": 559,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isOracleSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 544,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 559,
                  "src": "1906:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 543,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1906:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1905:12:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 547,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 559,
                  "src": "1955:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 546,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1955:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1954:6:14"
            },
            "scope": 646,
            "src": "1885:132:14",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 594,
              "nodeType": "Block",
              "src": "2240:194:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2254:17:14",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 573,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 561,
                              "src": "2267:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 572,
                            "name": "isOracleSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 559,
                            "src": "2255:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2255:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f7261636c6520776974682074686520676976656e2069642068617320616c7265616479206265656e207365742e",
                        "id": 576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2273:48:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1d43a3852eb1d28615908ad7e465f69f319466654c8681d92a0f557c9e0eccf5",
                          "typeString": "literal_string \"Oracle with the given id has already been set.\""
                        },
                        "value": "Oracle with the given id has already been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1d43a3852eb1d28615908ad7e465f69f319466654c8681d92a0f557c9e0eccf5",
                          "typeString": "literal_string \"Oracle with the given id has already been set.\""
                        }
                      ],
                      "id": 571,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "2246:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2246:76:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 578,
                  "nodeType": "ExpressionStatement",
                  "src": "2246:76:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2336:17:14",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 581,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 561,
                              "src": "2349:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 580,
                            "name": "isResultSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 542,
                            "src": "2337:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2337:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "526573756c742068617320616c7265616479206265656e207365742e",
                        "id": 584,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2355:30:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        },
                        "value": "Result has already been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        }
                      ],
                      "id": 579,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "2328:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2328:58:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 586,
                  "nodeType": "ExpressionStatement",
                  "src": "2328:58:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 587,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "2392:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                            "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                          }
                        },
                        "id": 589,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 588,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 561,
                          "src": "2400:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2392:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OracleData_$444_storage",
                          "typeString": "struct MultiOracle.OracleData storage ref"
                        }
                      },
                      "id": 590,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dataSource",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 439,
                      "src": "2392:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 591,
                      "name": "_dataSource",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 563,
                      "src": "2418:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2392:37:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 593,
                  "nodeType": "ExpressionStatement",
                  "src": "2392:37:14"
                }
              ]
            },
            "documentation": "@dev Only owner could add a new oracle with id and dataSource information",
            "id": 595,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 566,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 565,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3118,
                  "src": "2192:9:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2192:9:14"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 568,
                    "name": "_dataSource",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 563,
                    "src": "2225:11:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 569,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 567,
                  "name": "onlyIfValidAddress",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 471,
                  "src": "2206:18:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2206:31:14"
              }
            ],
            "name": "newOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 561,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 595,
                  "src": "2136:11:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 560,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2136:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 563,
                  "name": "_dataSource",
                  "nodeType": "VariableDeclaration",
                  "scope": 595,
                  "src": "2153:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2153:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2130:46:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 570,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2240:0:14"
            },
            "scope": 646,
            "src": "2112:322:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 636,
              "nodeType": "Block",
              "src": "2775:220:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 606,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2789:17:14",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 604,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 597,
                              "src": "2802:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 603,
                            "name": "isResultSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 542,
                            "src": "2790:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2790:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "526573756c742068617320616c7265616479206265656e207365742e",
                        "id": 607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2808:30:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        },
                        "value": "Result has already been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        }
                      ],
                      "id": 602,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "2781:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2781:58:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 609,
                  "nodeType": "ExpressionStatement",
                  "src": "2781:58:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 610,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "2845:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                            "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                          }
                        },
                        "id": 612,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 611,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 597,
                          "src": "2853:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2845:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OracleData_$444_storage",
                          "typeString": "struct MultiOracle.OracleData storage ref"
                        }
                      },
                      "id": 613,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "result",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 441,
                      "src": "2845:19:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 614,
                      "name": "_result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 599,
                      "src": "2867:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "2845:29:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 616,
                  "nodeType": "ExpressionStatement",
                  "src": "2845:29:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 617,
                          "name": "results",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "2880:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OracleData_$444_storage_$",
                            "typeString": "mapping(bytes32 => struct MultiOracle.OracleData storage ref)"
                          }
                        },
                        "id": 619,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 618,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 597,
                          "src": "2888:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2880:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OracleData_$444_storage",
                          "typeString": "struct MultiOracle.OracleData storage ref"
                        }
                      },
                      "id": 620,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "resultIsSet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 443,
                      "src": "2880:24:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2907:4:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2880:31:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 623,
                  "nodeType": "ExpressionStatement",
                  "src": "2880:31:14"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 625,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 597,
                        "src": "2932:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 626,
                        "name": "_result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "2937:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 627,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3256,
                          "src": "2946:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2946:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 624,
                      "name": "ResultSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 456,
                      "src": "2922:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes memory,address)"
                      }
                    },
                    "id": 629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2922:35:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 630,
                  "nodeType": "EmitStatement",
                  "src": "2917:40:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 632,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 597,
                        "src": "2977:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 633,
                        "name": "_result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "2982:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 631,
                      "name": "_resultWasSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 645,
                      "src": "2963:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2963:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 635,
                  "nodeType": "ExpressionStatement",
                  "src": "2963:27:14"
                }
              ]
            },
            "documentation": "@dev Set's the result, emits ResultSet, and calls the _resultWasSet()\noverridable function\n@param _result The result of the oracle's single event.\n@param _id The id to identify single oracle.",
            "id": 637,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setResult",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 597,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 637,
                  "src": "2724:11:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 596,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2724:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 599,
                  "name": "_result",
                  "nodeType": "VariableDeclaration",
                  "scope": 637,
                  "src": "2742:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 598,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2742:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2718:41:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2775:0:14"
            },
            "scope": 646,
            "src": "2699:296:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 644,
              "nodeType": "Block",
              "src": "3146:30:14",
              "statements": []
            },
            "documentation": "@dev Empty function meant to be overidden in subclasses",
            "id": 645,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_resultWasSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 639,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 645,
                  "src": "3095:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 638,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3095:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 641,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 645,
                  "src": "3112:5:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 640,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3112:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3094:36:14"
            },
            "payable": false,
            "returnParameters": {
              "id": 643,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3146:0:14"
            },
            "scope": 646,
            "src": "3072:104:14",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 647,
        "src": "156:3022:14"
      }
    ],
    "src": "0:3179:14"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-31T13:24:20.722Z"
}