{
  "contractName": "ConceptRegistry",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "initialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fathomToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "mewAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "distributorAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proxyFactory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "conceptExists",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_concept",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "cloneOf",
          "type": "address"
        }
      ],
      "name": "ConceptCreation",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_distributor",
          "type": "address"
        },
        {
          "name": "_proxyFactory",
          "type": "address"
        }
      ],
      "name": "init",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_parentList",
          "type": "address[]"
        },
        {
          "name": "_parentFactors",
          "type": "uint256[]"
        },
        {
          "name": "_lifetime",
          "type": "uint256"
        },
        {
          "name": "_data",
          "type": "bytes"
        },
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "cloneOf",
          "type": "address"
        }
      ],
      "name": "makeConcept",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.0+commit.1d4f565a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fathomToken\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_distributor\",\"type\":\"address\"},{\"name\":\"_proxyFactory\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_parentList\",\"type\":\"address[]\"},{\"name\":\"_parentFactors\",\"type\":\"uint256[]\"},{\"name\":\"_lifetime\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"},{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"cloneOf\",\"type\":\"address\"}],\"name\":\"makeConcept\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mewAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"distributorAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proxyFactory\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"conceptExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_concept\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"cloneOf\",\"type\":\"address\"}],\"name\":\"ConceptCreation\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{\"init(address,address,address)\":{\"notice\":\"Creates the MEW concept and links other relevant contracts\"}},\"notice\":\"Central contract of the fathom network, creates and stores the concept ontology\"}},\"settings\":{\"compilationTarget\":{\"/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol\":\"ConceptRegistry\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/builds/fathom/assess/contracts/contracts/Assessment.sol\":{\"keccak256\":\"0x38e344165281f6b705d538b5b1e36c9f2000896abb0e66a0e365009dfcb154ba\",\"urls\":[\"bzzr://6de365b6fcd48d7ecb26877ce7446f74c7116a66c79f97bad235c17324787cdf\"]},\"/builds/fathom/assess/contracts/contracts/AssessmentData.sol\":{\"keccak256\":\"0xda71f848916d4c5c519b9bb0cbd80fff3ebdf66d93205bbd47aa746fb7ea3149\",\"urls\":[\"bzzr://3f315e743c548f163c24067c7e11e1f9783123d02ae96390640b65bb6664443d\"]},\"/builds/fathom/assess/contracts/contracts/AssessmentProxy.sol\":{\"keccak256\":\"0x1ad6915fbc6c7ab4d0c5a3c9fddd262ff1899b80f812ef5ef1d774dfe26dfde2\",\"urls\":[\"bzzr://803ff846e154c773e8e8f0cd69cf7142b1b7d500553f6d1c253efde0d4c51297\"]},\"/builds/fathom/assess/contracts/contracts/Concept.sol\":{\"keccak256\":\"0x89c39768cf2aa6cd14f08b619c9981fbe6140d8ed926003fa72e9a07feb81533\",\"urls\":[\"bzzr://49884001aa3460e710b5d8704b055e282703516ae945469b161edea7a091415c\"]},\"/builds/fathom/assess/contracts/contracts/ConceptData.sol\":{\"keccak256\":\"0xba5f44d67c4d25679f7ce9ae139145bca84f85ea53405ae258d1f6c79f68aef9\",\"urls\":[\"bzzr://614dbf61f171bddf5d29eb27396e012d8dae15d22314652df38a92d1b5a43f5a\"]},\"/builds/fathom/assess/contracts/contracts/ConceptProxy.sol\":{\"keccak256\":\"0xed6cf5d2434e41b7c5feef082320abfc4725347802465516760b6e082bba2fb1\",\"urls\":[\"bzzr://5e9c8a3f8da6ec7ba5eac85b39942d590b69863029310ca8dbecfed477b57cc7\"]},\"/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol\":{\"keccak256\":\"0x37b9ea893f2e3714ed9e386871f16aff98621f6aac2c99214cddf1ddb286462c\",\"urls\":[\"bzzr://fe2531b7de74f5795710a510315edd555d208c8e18c7efbb5c28256aa47386f4\"]},\"/builds/fathom/assess/contracts/contracts/FathomToken.sol\":{\"keccak256\":\"0xd70c8cc96ac35367bebb4ecca938968b4b585ce5ac344540b538b4e08480a4c4\",\"urls\":[\"bzzr://be7d78ab6ae00ed2e18e7df4344cb062c79566e4b94a90502fd567e97b3af9d3\"]},\"/builds/fathom/assess/contracts/contracts/Math.sol\":{\"keccak256\":\"0x0e89dc6b2d825d93107a5c9b32312b94e18cb8e693aa8e0332a8f17d118ba207\",\"urls\":[\"bzzr://2dc75be49f09ed441c84240522225c9ceccc7577d3fad4bb5d39b0666947227c\"]},\"/builds/fathom/assess/contracts/contracts/Minter.sol\":{\"keccak256\":\"0x5c6a9bbd37b0f935ee951bf87fb8f4494555e3e98c99049c51234b383dbcf3a0\",\"urls\":[\"bzzr://a4ef613b4eb19182a63b3375aaedc1a455ce290dc23406c998742f1467a6ce1f\"]},\"/builds/fathom/assess/contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xca112dd4cad6b82624ac9899cbb869884c78cf0a1b08a3efc0767d93f06a1d7c\",\"urls\":[\"bzzr://b4087ee1320cc97a872fb849fd9c7f0b1c2faf43c6b681ddcd77ad705060fcd6\"]},\"/builds/fathom/assess/contracts/contracts/ProxyFactory.sol\":{\"keccak256\":\"0x19e6c1094d0556a918710647e757f878a02750ae61d182aeae8168e864f39725\",\"urls\":[\"bzzr://ec7eeaee9c749149f541e4f61421acb4bd969344a586508a3eee9da67492df06\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x1aad84a4229d5da4b9ffb4433c58b2a91ba9ffbd7b11af0500f9a9795869d865\",\"urls\":[\"bzzr://b8e6b572cd2f7e04b58bf072ec24bbef7914c947e232a390cb8f07ffb1bc8157\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol\":{\"keccak256\":\"0xc6f4c1d0822f8a8a78e0cb49fdb716acf26a7356109c4dcc6d5836b873e50b2d\",\"urls\":[\"bzzr://7f6656657ed55a5f0836a10b3e8517eddd25c0b9989c78b80a29075c304b20bd\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xe0490847690823c25e2e258c1f4689b54e6d051f784aca8ef2da8c0789f2be8a\",\"urls\":[\"bzzr://d324bd158255fbdb33d2294fd179a3b0456b72d31c2ba3212b428acfc18dcf88\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol\":{\"keccak256\":\"0x225613675e94acc479c38897f053e94f287a57730bb8a56ccae598074dd4469b\",\"urls\":[\"bzzr://80293b34ebc97ac3a32572451170e70d31c93f896cbd85d249b13362978ea11f\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol\":{\"keccak256\":\"0x275f9b31e4ad7f868d8bd4a8e85e2bb68d1bed3b28e919e95df08310ff4de93d\",\"urls\":[\"bzzr://4eb59cdd2161bd6e9a02c3f0e735e285723f14963cae565c3543c38ccc3bb47d\"]}},\"version\":1}",
  "bytecode": "0x60806040526001805460a060020a60ff021916905534801561002057600080fd5b50610993806100306000396000f3fe60806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663158ef93e81146100925780631684ae4d146100bb578063184b9559146100ec578063326b7fbb146101335780639e45c8861461030c578063a51af4c514610321578063c10f1a7514610336578063c18e46791461034b575b600080fd5b34801561009e57600080fd5b506100a761037e565b604080519115158252519081900360200190f35b3480156100c757600080fd5b506100d061039f565b60408051600160a060020a039092168252519081900360200190f35b3480156100f857600080fd5b506101316004803603606081101561010f57600080fd5b50600160a060020a0381358116916020810135821691604090910135166103ae565b005b34801561013f57600080fd5b506100d0600480360360c081101561015657600080fd5b81019060208101813564010000000081111561017157600080fd5b82018360208201111561018357600080fd5b803590602001918460208302840111640100000000831117156101a557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184602083028401116401000000008311171561022957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295843595909490935060408101925060200135905064010000000081111561028157600080fd5b82018360208201111561029357600080fd5b803590602001918460018302840111640100000000831117156102b557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050600160a060020a0383358116945060209093013590921691506106539050565b34801561031857600080fd5b506100d0610925565b34801561032d57600080fd5b506100d0610934565b34801561034257600080fd5b506100d0610943565b34801561035757600080fd5b506100a76004803603602081101561036e57600080fd5b5035600160a060020a0316610952565b60015474010000000000000000000000000000000000000000900460ff1681565b600154600160a060020a031681565b60015474010000000000000000000000000000000000000000900460ff16151561064e576001805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03868116919091179092556003805482168584161790556004805490911683831617908190556040805160008082526020808301828152838501948590527fdff57b78000000000000000000000000000000000000000000000000000000009094527f80000000000000000000000000000000000000000000000000000000000000006084840181905260c4840183905260e4840183905260c06044850190815284516101048601819052969097169663dff57b789694959491939283928291606489019160a48a01916101248b01918a91028083838a5b838110156104e65781810151838201526020016104ce565b50505050905001848103835288818151815260200191508051906020019060200280838360005b8381101561052557818101518382015260200161050d565b5050505090500184810382526000815260200160200198505050505050505050602060405180830381600087803b15801561055f57600080fd5b505af1158015610573573d6000803e3d6000fd5b505050506040513d602081101561058957600080fd5b505160028054600160a060020a0392831673ffffffffffffffffffffffffffffffffffffffff1990911617908190556040805191909216815290516000917f30fb76d4ae29dc0cc63dc43ee321d3cb1c8cf671e1d6cf4e13c012090d5531f5919081900360200190a2600254600160a060020a03166000908152602081905260409020805460ff19166001908117909155805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b505050565b60008087511115156106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d7573742073706563696679206174206c65617374206f6e6520706172656e7460448201527f20636f6e63657074000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000600460009054906101000a9004600160a060020a0316600160a060020a031663dff57b788989898989896040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018781526020018060200186600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a0316815260200184810384528a818151815260200191508051906020019060200280838360005b838110156107c15781810151838201526020016107a9565b50505050905001848103835289818151815260200191508051906020019060200280838360005b838110156108005781810151838201526020016107e8565b50505050905001848103825287818151815260200191508051906020019080838360005b8381101561083c578181015183820152602001610824565b50505050905090810190601f1680156108695780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050506040513d60208110156108b957600080fd5b5051600160a060020a0380821660008181526020818152604091829020805460ff1916600117905581519283529051939450918616927f30fb76d4ae29dc0cc63dc43ee321d3cb1c8cf671e1d6cf4e13c012090d5531f5929181900390910190a2979650505050505050565b600254600160a060020a031681565b600354600160a060020a031681565b600454600160a060020a031681565b60006020819052908152604090205460ff168156fea165627a7a7230582046f6a46ca1bc34e63a9074d88609d2e1af25c671386b7f519e94109f7b346f3e0029",
  "deployedBytecode": "0x60806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663158ef93e81146100925780631684ae4d146100bb578063184b9559146100ec578063326b7fbb146101335780639e45c8861461030c578063a51af4c514610321578063c10f1a7514610336578063c18e46791461034b575b600080fd5b34801561009e57600080fd5b506100a761037e565b604080519115158252519081900360200190f35b3480156100c757600080fd5b506100d061039f565b60408051600160a060020a039092168252519081900360200190f35b3480156100f857600080fd5b506101316004803603606081101561010f57600080fd5b50600160a060020a0381358116916020810135821691604090910135166103ae565b005b34801561013f57600080fd5b506100d0600480360360c081101561015657600080fd5b81019060208101813564010000000081111561017157600080fd5b82018360208201111561018357600080fd5b803590602001918460208302840111640100000000831117156101a557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184602083028401116401000000008311171561022957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295843595909490935060408101925060200135905064010000000081111561028157600080fd5b82018360208201111561029357600080fd5b803590602001918460018302840111640100000000831117156102b557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050600160a060020a0383358116945060209093013590921691506106539050565b34801561031857600080fd5b506100d0610925565b34801561032d57600080fd5b506100d0610934565b34801561034257600080fd5b506100d0610943565b34801561035757600080fd5b506100a76004803603602081101561036e57600080fd5b5035600160a060020a0316610952565b60015474010000000000000000000000000000000000000000900460ff1681565b600154600160a060020a031681565b60015474010000000000000000000000000000000000000000900460ff16151561064e576001805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03868116919091179092556003805482168584161790556004805490911683831617908190556040805160008082526020808301828152838501948590527fdff57b78000000000000000000000000000000000000000000000000000000009094527f80000000000000000000000000000000000000000000000000000000000000006084840181905260c4840183905260e4840183905260c06044850190815284516101048601819052969097169663dff57b789694959491939283928291606489019160a48a01916101248b01918a91028083838a5b838110156104e65781810151838201526020016104ce565b50505050905001848103835288818151815260200191508051906020019060200280838360005b8381101561052557818101518382015260200161050d565b5050505090500184810382526000815260200160200198505050505050505050602060405180830381600087803b15801561055f57600080fd5b505af1158015610573573d6000803e3d6000fd5b505050506040513d602081101561058957600080fd5b505160028054600160a060020a0392831673ffffffffffffffffffffffffffffffffffffffff1990911617908190556040805191909216815290516000917f30fb76d4ae29dc0cc63dc43ee321d3cb1c8cf671e1d6cf4e13c012090d5531f5919081900360200190a2600254600160a060020a03166000908152602081905260409020805460ff19166001908117909155805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b505050565b60008087511115156106ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d7573742073706563696679206174206c65617374206f6e6520706172656e7460448201527f20636f6e63657074000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000600460009054906101000a9004600160a060020a0316600160a060020a031663dff57b788989898989896040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018781526020018060200186600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a0316815260200184810384528a818151815260200191508051906020019060200280838360005b838110156107c15781810151838201526020016107a9565b50505050905001848103835289818151815260200191508051906020019060200280838360005b838110156108005781810151838201526020016107e8565b50505050905001848103825287818151815260200191508051906020019080838360005b8381101561083c578181015183820152602001610824565b50505050905090810190601f1680156108695780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050506040513d60208110156108b957600080fd5b5051600160a060020a0380821660008181526020818152604091829020805460ff1916600117905581519283529051939450918616927f30fb76d4ae29dc0cc63dc43ee321d3cb1c8cf671e1d6cf4e13c012090d5531f5929181900390910190a2979650505050505050565b600254600160a060020a031681565b600354600160a060020a031681565b600454600160a060020a031681565b60006020819052908152604090205460ff168156fea165627a7a7230582046f6a46ca1bc34e63a9074d88609d2e1af25c671386b7f519e94109f7b346f3e0029",
  "sourceMap": "182:2507:6:-;;;300:31;;;-1:-1:-1;;;;;;300:31:6;;;182:2507;5:2:-1;;;;30:1;27;20:12;5:2;182:2507:6;;;;;;;",
  "deployedSourceMap": "182:2507:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;300:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;300:31:6;;;;;;;;;;;;;;;;;;;;;;267:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;267:26:6;;;;;;;;-1:-1:-1;;;;;267:26:6;;;;;;;;;;;;;;735:652;;8:9:-1;5:2;;;30:1;27;20:12;5:2;735:652:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;735:652:6;;;;;;;;;;;;;;;;;;;;;;1993:694;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1993:694:6;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1993:694:6;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1993:694:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1993:694:6;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1993:694:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1993:694:6;;;;;;;;-1:-1:-1;1993:694:6;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;1993:694:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1993:694:6;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1993:694:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1993:694:6;;;;;;;;;-1:-1:-1;1993:694:6;;;;-1:-1:-1;1993:694:6;;;;-1:-1:-1;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;1993:694:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1993:694:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1993:694:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1993:694:6;;-1:-1:-1;;;;;;;1993:694:6;;;;;-1:-1:-1;1993:694:6;;;;;;;;;-1:-1:-1;1993:694:6;;-1:-1:-1;1993:694:6;401:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:25:6;;;;510:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:33:6;;;;550:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;550:32:6;;;;214:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;214:46:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;214:46:6;-1:-1:-1;;;;;214:46:6;;;300:31;;;;;;;;;:::o;267:26::-;;;-1:-1:-1;;;;;267:26:6;;:::o;735:652::-;831:11;;;;;;;:20;;827:554;;867:11;:20;;-1:-1:-1;;867:20:6;;;-1:-1:-1;;;;;867:20:6;;;;;;;;;;901:18;:33;;;;;;;;;;948:12;:42;;;;;;;;;;;;;1061:16;;;-1:-1:-1;1061:16:6;;;;;;;1095:13;;;;;;;;;;1017:215;;;;1131:6;1017:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;;;;;:26;;1061:16;;;1131:6;;-1:-1:-1;;;1017:215:6;;;;;;;;;;;;;;1061:16;;1017:215;;;1061:16;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1017:215:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1017:215:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1017:215:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1017:215:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1017:215:6;1004:10;:228;;-1:-1:-1;;;;;1004:228:6;;;-1:-1:-1;;1004:228:6;;;;;;;;1251:41;;;1267:10;;;;1251:41;;;;1004:10;;1251:41;;;;;;1017:215;1251:41;;;1320:10;;-1:-1:-1;;;;;1320:10:6;1306:13;:25;;;;;;;;;;:32;;-1:-1:-1;;1306:32:6;1334:4;1306:32;;;;;;1352:18;;-1:-1:-1;;1352:18:6;;;;;827:554;735:652;;;:::o;1993:694::-;2230:7;2282:1;2261:11;:18;:22;2253:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2338:25;2366:12;;;;;;;;;-1:-1:-1;;;;;2366:12:6;-1:-1:-1;;;;;2366:26:6;;2406:11;2431:14;2459:9;2482:5;2501:6;2521:7;2366:172;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2366:172:6;-1:-1:-1;;;;;2366:172:6;;;;;;-1:-1:-1;;;;;2366:172:6;-1:-1:-1;;;;;2366:172:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2366:172:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2366:172:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2366:172:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2366:172:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2366:172:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2366:172:6;-1:-1:-1;;;;;2549:32:6;;;:13;:32;;;2366:172;2549:32;;;;;;;;:39;;-1:-1:-1;;2549:39:6;2584:4;2549:39;;;2603:43;;;;;;;2366:172;;-1:-1:-1;2603:43:6;;;;;;;;;;;;;;;2663:17;1993:694;-1:-1:-1;;;;;;;1993:694:6:o;401:25::-;;;-1:-1:-1;;;;;401:25:6;;:::o;510:33::-;;;-1:-1:-1;;;;;510:33:6;;:::o;550:32::-;;;-1:-1:-1;;;;;550:32:6;;:::o;214:46::-;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"./Concept.sol\";\nimport \"./ProxyFactory.sol\";\n\n\n/**\n   @notice Central contract of the fathom network, creates and stores the\n   concept ontology\n */\ncontract ConceptRegistry {\n\n    mapping (address => bool) public conceptExists;\n\n    address public fathomToken;\n\n    bool public initialized = false;\n\n    // MEW is the first concept that exists, it has no parents\n    address public mewAddress;\n\n    // The address which is allowed to add members to MEW without assessment\n    address public distributorAddress;\n\n    ProxyFactory public proxyFactory;\n\n    event ConceptCreation (address _concept, address indexed cloneOf);\n\n    ///@notice Creates the MEW concept and links other relevant contracts\n    function init(address _token, address _distributor, address _proxyFactory) public {\n        if (initialized == false) {\n            fathomToken = _token;\n            distributorAddress = _distributor;\n            proxyFactory = ProxyFactory(_proxyFactory);\n            mewAddress = proxyFactory.createConcept(\n                new address[](0),\n                new uint[](0),\n                uint(2**255),\n                \"\",\n                address(0x0),\n                address(0x0)\n            );\n            emit ConceptCreation(mewAddress, address(0x0));\n            conceptExists[mewAddress] = true;\n            initialized = true;\n        }\n    }\n\n    /*\n      @notice: To create a new concept\n      @param _parentList: An array of addresses containing the addresses of the concepts parents\n      @param _parentFactors: List of degrees of similarity to each parent (must add up to 1000)\n      @param _lifetime: How long assessments in this concept remain valid\n      @param _data: Can be used to define what the concept is about\n      @param _owner: Address which can change the concept lifetime, data and parents\n      @param cloneOf: Address of the concept that this concept has been cloned of\n      @return the address of the new concept\n    */\n    function makeConcept (\n        address[] memory _parentList,\n        uint[] memory _parentFactors,\n        uint _lifetime,\n        bytes memory _data,\n        address _owner,\n        address cloneOf\n    )\n        public\n        returns (address)\n    {\n        require(_parentList.length > 0, \"Must specify at least one parent concept\");\n        address newConceptAddress = proxyFactory.createConcept(\n            _parentList,\n            _parentFactors,\n            _lifetime,\n            _data,\n            _owner,\n            cloneOf\n        );\n\n        conceptExists[newConceptAddress] = true;\n        emit ConceptCreation(newConceptAddress, cloneOf);\n        return newConceptAddress;\n    }\n}\n",
  "sourcePath": "/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol",
  "ast": {
    "absolutePath": "/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol",
    "exportedSymbols": {
      "ConceptRegistry": [
        2682
      ]
    },
    "id": 2683,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2531,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Concept.sol",
        "file": "./Concept.sol",
        "id": 2532,
        "nodeType": "ImportDirective",
        "scope": 2683,
        "sourceUnit": 2248,
        "src": "25:23:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/ProxyFactory.sol",
        "file": "./ProxyFactory.sol",
        "id": 2533,
        "nodeType": "ImportDirective",
        "scope": 2683,
        "sourceUnit": 5391,
        "src": "49:28:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@notice Central contract of the fathom network, creates and stores the\nconcept ontology",
        "fullyImplemented": true,
        "id": 2682,
        "linearizedBaseContracts": [
          2682
        ],
        "name": "ConceptRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2537,
            "name": "conceptExists",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "214:46:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2536,
              "keyType": {
                "id": 2534,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "223:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "214:25:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2535,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "234:4:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2539,
            "name": "fathomToken",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "267:26:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2538,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "267:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2542,
            "name": "initialized",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "300:31:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2540,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "300:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 2541,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "326:5:6",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2544,
            "name": "mewAddress",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "401:25:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2543,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "401:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2546,
            "name": "distributorAddress",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "510:33:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2545,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "510:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2548,
            "name": "proxyFactory",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "550:32:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ProxyFactory_$5390",
              "typeString": "contract ProxyFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 2547,
              "name": "ProxyFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5390,
              "src": "550:12:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                "typeString": "contract ProxyFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2554,
            "name": "ConceptCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2550,
                  "indexed": false,
                  "name": "_concept",
                  "nodeType": "VariableDeclaration",
                  "scope": 2554,
                  "src": "612:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2549,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "612:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2552,
                  "indexed": true,
                  "name": "cloneOf",
                  "nodeType": "VariableDeclaration",
                  "scope": 2554,
                  "src": "630:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2551,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "630:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "611:43:6"
            },
            "src": "589:66:6"
          },
          {
            "body": {
              "id": 2627,
              "nodeType": "Block",
              "src": "817:570:6",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2563,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2542,
                      "src": "831:11:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 2564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "846:5:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "831:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2626,
                  "nodeType": "IfStatement",
                  "src": "827:554:6",
                  "trueBody": {
                    "id": 2625,
                    "nodeType": "Block",
                    "src": "853:528:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2566,
                            "name": "fathomToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2539,
                            "src": "867:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2567,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2556,
                            "src": "881:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "867:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2569,
                        "nodeType": "ExpressionStatement",
                        "src": "867:20:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2570,
                            "name": "distributorAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2546,
                            "src": "901:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2571,
                            "name": "_distributor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2558,
                            "src": "922:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "901:33:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2573,
                        "nodeType": "ExpressionStatement",
                        "src": "901:33:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2574,
                            "name": "proxyFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2548,
                            "src": "948:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                              "typeString": "contract ProxyFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2576,
                                "name": "_proxyFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2560,
                                "src": "976:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2575,
                              "name": "ProxyFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5390,
                              "src": "963:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ProxyFactory_$5390_$",
                                "typeString": "type(contract ProxyFactory)"
                              }
                            },
                            "id": 2577,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "963:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                              "typeString": "contract ProxyFactory"
                            }
                          },
                          "src": "948:42:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                            "typeString": "contract ProxyFactory"
                          }
                        },
                        "id": 2579,
                        "nodeType": "ExpressionStatement",
                        "src": "948:42:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2580,
                            "name": "mewAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2544,
                            "src": "1004:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1075:1:6",
                                    "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": 2585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "1061:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                                    "typeString": "function (uint256) pure returns (address[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 2583,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1065:7:6",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 2584,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "1065:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  }
                                },
                                "id": 2587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1061:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory",
                                  "typeString": "address[] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1106:1:6",
                                    "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": 2590,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "1095:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                                    "typeString": "function (uint256) pure returns (uint256[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 2588,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1099:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2589,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "1099:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  }
                                },
                                "id": 2592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1095:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                                    },
                                    "id": 2596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 2594,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1131:1:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "323535",
                                      "id": 2595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1134:3:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_255_by_1",
                                        "typeString": "int_const 255"
                                      },
                                      "value": "255"
                                    },
                                    "src": "1131:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                                    }
                                  ],
                                  "id": 2593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1126:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 2597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1126:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 2598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1156:2:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "307830",
                                    "id": 2600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1184:3:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2599,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1176:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1176:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "307830",
                                    "id": 2603,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1214:3:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1206:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1206:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory",
                                  "typeString": "address[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2581,
                                "name": "proxyFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2548,
                                "src": "1017:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                                  "typeString": "contract ProxyFactory"
                                }
                              },
                              "id": 2582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "createConcept",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5372,
                              "src": "1017:26:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address[] memory,uint256[] memory,uint256,bytes memory,address,address) external returns (address)"
                              }
                            },
                            "id": 2605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1017:215:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1004:228:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2607,
                        "nodeType": "ExpressionStatement",
                        "src": "1004:228:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2609,
                              "name": "mewAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2544,
                              "src": "1267:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 2611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1287:3:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2610,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1279:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1279:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2608,
                            "name": "ConceptCreation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2554,
                            "src": "1251:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 2613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1251:41:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2614,
                        "nodeType": "EmitStatement",
                        "src": "1246:46:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2615,
                              "name": "conceptExists",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2537,
                              "src": "1306:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2617,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2616,
                              "name": "mewAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2544,
                              "src": "1320:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1306:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1334:4:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1306:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2620,
                        "nodeType": "ExpressionStatement",
                        "src": "1306:32:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2621,
                            "name": "initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2542,
                            "src": "1352:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1366:4:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1352:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2624,
                        "nodeType": "ExpressionStatement",
                        "src": "1352:18:6"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Creates the MEW concept and links other relevant contracts",
            "id": 2628,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2556,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 2628,
                  "src": "749:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "749:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2558,
                  "name": "_distributor",
                  "nodeType": "VariableDeclaration",
                  "scope": 2628,
                  "src": "765:20:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "765:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2560,
                  "name": "_proxyFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 2628,
                  "src": "787:21:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2559,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "787:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "748:61:6"
            },
            "returnParameters": {
              "id": 2562,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "817:0:6"
            },
            "scope": 2682,
            "src": "735:652:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2680,
              "nodeType": "Block",
              "src": "2243:444:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2648,
                            "name": "_parentList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2631,
                            "src": "2261:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2261:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2282:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2261:22:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d7573742073706563696679206174206c65617374206f6e6520706172656e7420636f6e63657074",
                        "id": 2652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2285:42:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_605ae4a255c2f2a9ea8474c513eb2f1f9d3e3e2202bb5eca139b9e167850cc33",
                          "typeString": "literal_string \"Must specify at least one parent concept\""
                        },
                        "value": "Must specify at least one parent concept"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_605ae4a255c2f2a9ea8474c513eb2f1f9d3e3e2202bb5eca139b9e167850cc33",
                          "typeString": "literal_string \"Must specify at least one parent concept\""
                        }
                      ],
                      "id": 2647,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2253:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2253:75:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2654,
                  "nodeType": "ExpressionStatement",
                  "src": "2253:75:6"
                },
                {
                  "assignments": [
                    2656
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2656,
                      "name": "newConceptAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 2680,
                      "src": "2338:25:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2655,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2338:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2666,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2659,
                        "name": "_parentList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2631,
                        "src": "2406:11:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2660,
                        "name": "_parentFactors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2634,
                        "src": "2431:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2661,
                        "name": "_lifetime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2636,
                        "src": "2459:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2662,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2638,
                        "src": "2482:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2663,
                        "name": "_owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2640,
                        "src": "2501:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2664,
                        "name": "cloneOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2642,
                        "src": "2521:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2657,
                        "name": "proxyFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2548,
                        "src": "2366:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                          "typeString": "contract ProxyFactory"
                        }
                      },
                      "id": 2658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createConcept",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5372,
                      "src": "2366:26:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_address_$",
                        "typeString": "function (address[] memory,uint256[] memory,uint256,bytes memory,address,address) external returns (address)"
                      }
                    },
                    "id": 2665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2366:172:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2338:200:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2667,
                        "name": "conceptExists",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2537,
                        "src": "2549:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2669,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2668,
                        "name": "newConceptAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2656,
                        "src": "2563:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2549:32:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2584:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2549:39:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2672,
                  "nodeType": "ExpressionStatement",
                  "src": "2549:39:6"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2674,
                        "name": "newConceptAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2656,
                        "src": "2619:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2675,
                        "name": "cloneOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2642,
                        "src": "2638:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2673,
                      "name": "ConceptCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2554,
                      "src": "2603:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 2676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2603:43:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2677,
                  "nodeType": "EmitStatement",
                  "src": "2598:48:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2678,
                    "name": "newConceptAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2656,
                    "src": "2663:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2646,
                  "id": 2679,
                  "nodeType": "Return",
                  "src": "2656:24:6"
                }
              ]
            },
            "documentation": null,
            "id": 2681,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "makeConcept",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2631,
                  "name": "_parentList",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2024:28:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2629,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2024:7:6",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2630,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2024:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2634,
                  "name": "_parentFactors",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2062:28:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2632,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "2062:4:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2633,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2062:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2636,
                  "name": "_lifetime",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2100:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2635,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2100:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2638,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2124:18:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2637,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2124:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2640,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2152:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2639,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2152:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2642,
                  "name": "cloneOf",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2176:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2176:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2014:183:6"
            },
            "returnParameters": {
              "id": 2646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2645,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2230:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2644,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2230:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2229:9:6"
            },
            "scope": 2682,
            "src": "1993:694:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2683,
        "src": "182:2507:6"
      }
    ],
    "src": "0:2690:6"
  },
  "legacyAST": {
    "absolutePath": "/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol",
    "exportedSymbols": {
      "ConceptRegistry": [
        2682
      ]
    },
    "id": 2683,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2531,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Concept.sol",
        "file": "./Concept.sol",
        "id": 2532,
        "nodeType": "ImportDirective",
        "scope": 2683,
        "sourceUnit": 2248,
        "src": "25:23:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/ProxyFactory.sol",
        "file": "./ProxyFactory.sol",
        "id": 2533,
        "nodeType": "ImportDirective",
        "scope": 2683,
        "sourceUnit": 5391,
        "src": "49:28:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@notice Central contract of the fathom network, creates and stores the\nconcept ontology",
        "fullyImplemented": true,
        "id": 2682,
        "linearizedBaseContracts": [
          2682
        ],
        "name": "ConceptRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2537,
            "name": "conceptExists",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "214:46:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2536,
              "keyType": {
                "id": 2534,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "223:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "214:25:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2535,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "234:4:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2539,
            "name": "fathomToken",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "267:26:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2538,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "267:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2542,
            "name": "initialized",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "300:31:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2540,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "300:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "66616c7365",
              "id": 2541,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "326:5:6",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "false"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2544,
            "name": "mewAddress",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "401:25:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2543,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "401:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2546,
            "name": "distributorAddress",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "510:33:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2545,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "510:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2548,
            "name": "proxyFactory",
            "nodeType": "VariableDeclaration",
            "scope": 2682,
            "src": "550:32:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ProxyFactory_$5390",
              "typeString": "contract ProxyFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 2547,
              "name": "ProxyFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5390,
              "src": "550:12:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                "typeString": "contract ProxyFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2554,
            "name": "ConceptCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2550,
                  "indexed": false,
                  "name": "_concept",
                  "nodeType": "VariableDeclaration",
                  "scope": 2554,
                  "src": "612:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2549,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "612:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2552,
                  "indexed": true,
                  "name": "cloneOf",
                  "nodeType": "VariableDeclaration",
                  "scope": 2554,
                  "src": "630:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2551,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "630:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "611:43:6"
            },
            "src": "589:66:6"
          },
          {
            "body": {
              "id": 2627,
              "nodeType": "Block",
              "src": "817:570:6",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2563,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2542,
                      "src": "831:11:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 2564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "846:5:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "831:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2626,
                  "nodeType": "IfStatement",
                  "src": "827:554:6",
                  "trueBody": {
                    "id": 2625,
                    "nodeType": "Block",
                    "src": "853:528:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2566,
                            "name": "fathomToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2539,
                            "src": "867:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2567,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2556,
                            "src": "881:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "867:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2569,
                        "nodeType": "ExpressionStatement",
                        "src": "867:20:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2570,
                            "name": "distributorAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2546,
                            "src": "901:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2571,
                            "name": "_distributor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2558,
                            "src": "922:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "901:33:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2573,
                        "nodeType": "ExpressionStatement",
                        "src": "901:33:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2574,
                            "name": "proxyFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2548,
                            "src": "948:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                              "typeString": "contract ProxyFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2576,
                                "name": "_proxyFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2560,
                                "src": "976:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2575,
                              "name": "ProxyFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5390,
                              "src": "963:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ProxyFactory_$5390_$",
                                "typeString": "type(contract ProxyFactory)"
                              }
                            },
                            "id": 2577,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "963:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                              "typeString": "contract ProxyFactory"
                            }
                          },
                          "src": "948:42:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                            "typeString": "contract ProxyFactory"
                          }
                        },
                        "id": 2579,
                        "nodeType": "ExpressionStatement",
                        "src": "948:42:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2580,
                            "name": "mewAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2544,
                            "src": "1004:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1075:1:6",
                                    "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": 2585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "1061:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                                    "typeString": "function (uint256) pure returns (address[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 2583,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1065:7:6",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 2584,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "1065:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  }
                                },
                                "id": 2587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1061:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory",
                                  "typeString": "address[] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1106:1:6",
                                    "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": 2590,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "1095:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                                    "typeString": "function (uint256) pure returns (uint256[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 2588,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1099:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2589,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "1099:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  }
                                },
                                "id": 2592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1095:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                                    },
                                    "id": 2596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 2594,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1131:1:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "323535",
                                      "id": 2595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1134:3:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_255_by_1",
                                        "typeString": "int_const 255"
                                      },
                                      "value": "255"
                                    },
                                    "src": "1131:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                                    }
                                  ],
                                  "id": 2593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1126:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 2597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1126:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 2598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1156:2:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "307830",
                                    "id": 2600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1184:3:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2599,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1176:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1176:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "307830",
                                    "id": 2603,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1214:3:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1206:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1206:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory",
                                  "typeString": "address[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2581,
                                "name": "proxyFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2548,
                                "src": "1017:12:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                                  "typeString": "contract ProxyFactory"
                                }
                              },
                              "id": 2582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "createConcept",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5372,
                              "src": "1017:26:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address[] memory,uint256[] memory,uint256,bytes memory,address,address) external returns (address)"
                              }
                            },
                            "id": 2605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1017:215:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1004:228:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2607,
                        "nodeType": "ExpressionStatement",
                        "src": "1004:228:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2609,
                              "name": "mewAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2544,
                              "src": "1267:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 2611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1287:3:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2610,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1279:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1279:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2608,
                            "name": "ConceptCreation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2554,
                            "src": "1251:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 2613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1251:41:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2614,
                        "nodeType": "EmitStatement",
                        "src": "1246:46:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2615,
                              "name": "conceptExists",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2537,
                              "src": "1306:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2617,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2616,
                              "name": "mewAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2544,
                              "src": "1320:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1306:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1334:4:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1306:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2620,
                        "nodeType": "ExpressionStatement",
                        "src": "1306:32:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2621,
                            "name": "initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2542,
                            "src": "1352:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1366:4:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1352:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2624,
                        "nodeType": "ExpressionStatement",
                        "src": "1352:18:6"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Creates the MEW concept and links other relevant contracts",
            "id": 2628,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2556,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 2628,
                  "src": "749:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "749:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2558,
                  "name": "_distributor",
                  "nodeType": "VariableDeclaration",
                  "scope": 2628,
                  "src": "765:20:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "765:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2560,
                  "name": "_proxyFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 2628,
                  "src": "787:21:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2559,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "787:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "748:61:6"
            },
            "returnParameters": {
              "id": 2562,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "817:0:6"
            },
            "scope": 2682,
            "src": "735:652:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2680,
              "nodeType": "Block",
              "src": "2243:444:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2648,
                            "name": "_parentList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2631,
                            "src": "2261:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2261:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2282:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2261:22:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d7573742073706563696679206174206c65617374206f6e6520706172656e7420636f6e63657074",
                        "id": 2652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2285:42:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_605ae4a255c2f2a9ea8474c513eb2f1f9d3e3e2202bb5eca139b9e167850cc33",
                          "typeString": "literal_string \"Must specify at least one parent concept\""
                        },
                        "value": "Must specify at least one parent concept"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_605ae4a255c2f2a9ea8474c513eb2f1f9d3e3e2202bb5eca139b9e167850cc33",
                          "typeString": "literal_string \"Must specify at least one parent concept\""
                        }
                      ],
                      "id": 2647,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2253:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2253:75:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2654,
                  "nodeType": "ExpressionStatement",
                  "src": "2253:75:6"
                },
                {
                  "assignments": [
                    2656
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2656,
                      "name": "newConceptAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 2680,
                      "src": "2338:25:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2655,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2338:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2666,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2659,
                        "name": "_parentList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2631,
                        "src": "2406:11:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2660,
                        "name": "_parentFactors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2634,
                        "src": "2431:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2661,
                        "name": "_lifetime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2636,
                        "src": "2459:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2662,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2638,
                        "src": "2482:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2663,
                        "name": "_owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2640,
                        "src": "2501:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2664,
                        "name": "cloneOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2642,
                        "src": "2521:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2657,
                        "name": "proxyFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2548,
                        "src": "2366:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                          "typeString": "contract ProxyFactory"
                        }
                      },
                      "id": 2658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createConcept",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5372,
                      "src": "2366:26:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_address_$",
                        "typeString": "function (address[] memory,uint256[] memory,uint256,bytes memory,address,address) external returns (address)"
                      }
                    },
                    "id": 2665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2366:172:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2338:200:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2667,
                        "name": "conceptExists",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2537,
                        "src": "2549:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2669,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2668,
                        "name": "newConceptAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2656,
                        "src": "2563:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2549:32:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2584:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2549:39:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2672,
                  "nodeType": "ExpressionStatement",
                  "src": "2549:39:6"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2674,
                        "name": "newConceptAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2656,
                        "src": "2619:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2675,
                        "name": "cloneOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2642,
                        "src": "2638:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2673,
                      "name": "ConceptCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2554,
                      "src": "2603:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 2676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2603:43:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2677,
                  "nodeType": "EmitStatement",
                  "src": "2598:48:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2678,
                    "name": "newConceptAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2656,
                    "src": "2663:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2646,
                  "id": 2679,
                  "nodeType": "Return",
                  "src": "2656:24:6"
                }
              ]
            },
            "documentation": null,
            "id": 2681,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "makeConcept",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2631,
                  "name": "_parentList",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2024:28:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2629,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2024:7:6",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2630,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2024:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2634,
                  "name": "_parentFactors",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2062:28:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2632,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "2062:4:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2633,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2062:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2636,
                  "name": "_lifetime",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2100:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2635,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2100:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2638,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2124:18:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2637,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2124:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2640,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2152:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2639,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2152:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2642,
                  "name": "cloneOf",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2176:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2176:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2014:183:6"
            },
            "returnParameters": {
              "id": 2646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2645,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2681,
                  "src": "2230:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2644,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2230:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2229:9:6"
            },
            "scope": 2682,
            "src": "1993:694:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2683,
        "src": "182:2507:6"
      }
    ],
    "src": "0:2690:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {
        "0x30fb76d4ae29dc0cc63dc43ee321d3cb1c8cf671e1d6cf4e13c012090d5531f5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "name": "_concept",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "cloneOf",
              "type": "address"
            }
          ],
          "name": "ConceptCreation",
          "type": "event",
          "signature": "0x30fb76d4ae29dc0cc63dc43ee321d3cb1c8cf671e1d6cf4e13c012090d5531f5"
        }
      },
      "links": {},
      "address": "0x892542874FeFca8227A33918cdD8bDec79Ca4e2C",
      "transactionHash": "0x726a4b724b72723704e6f67af35e310e4693a5171e5521fb0df5a3e422200dd0"
    }
  },
  "schemaVersion": "3.0.9",
  "updatedAt": "2019-06-21T15:40:45.158Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {
      "init(address,address,address)": {
        "notice": "Creates the MEW concept and links other relevant contracts"
      }
    },
    "notice": "Central contract of the fathom network, creates and stores the concept ontology"
  }
}