{
  "contractName": "DAOFactory",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "baseACL",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "regFactory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "baseKernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_baseKernel",
          "type": "address"
        },
        {
          "name": "_baseACL",
          "type": "address"
        },
        {
          "name": "_regFactory",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "dao",
          "type": "address"
        }
      ],
      "name": "DeployDAO",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "reg",
          "type": "address"
        }
      ],
      "name": "DeployEVMScriptRegistry",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_root",
          "type": "address"
        }
      ],
      "name": "newDAO",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051606080611907833981018060405281019080805190602001909291908051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156100bf5780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506117b5806101526000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063086b339e1461006757806321687444146100be578063656362b514610141578063b16dd13014610198575b600080fd5b34801561007357600080fd5b5061007c6101ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100ca57600080fd5b506100ff600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610215565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014d57600080fd5b506101566110fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a457600080fd5b506101ad611122565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610248611147565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561029a573d6000803e3d6000fd5b509450600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610402578473ffffffffffffffffffffffffffffffffffffffff1663485cc955600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156103e557600080fd5b505af11580156103f9573d6000803e3d6000fd5b5050505061108c565b8473ffffffffffffffffffffffffffffffffffffffff1663485cc955600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561056f57600080fd5b505af1158015610583573d6000803e3d6000fd5b505050506040513d602081101561059957600080fd5b810190808051906020019092919050505093508373ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561061057600080fd5b505af1158015610624573d6000803e3d6000fd5b505050506040513d602081101561063a57600080fd5b810190808051906020019092919050505092508473ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050506040513d60208110156106db57600080fd5b810190808051906020019092919050505091508373ffffffffffffffffffffffffffffffffffffffff16630a8ed3db600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1580156107ef57600080fd5b505af1158015610803573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663be038478600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168785306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15801561093c57600080fd5b505af1158015610950573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333404143866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610a1157600080fd5b505af1158015610a25573d6000803e3d6000fd5b505050506040513d6020811015610a3b57600080fd5b810190808051906020019092919050505090507f1a40224412580c1ae5a2fbe8029a565f49a3a029608a8fd9320b32477f31457981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a18373ffffffffffffffffffffffffffffffffffffffff16639d0effdb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b158015610bb257600080fd5b505af1158015610bc6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663a885508a86846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16639d0effdb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16639d0effdb3086866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16630a8ed3db8886866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b158015610f7c57600080fd5b505af1158015610f90573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663afd925df8886866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b505050505b7f3a7eb042a769adf51e9be78b68ed7af0ad7b379246536efc376ed2ca0123828285604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a18495505050505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405161063280611158833901905600608060405234801561001057600080fd5b506040516020806106328339810180604052810190808051906020019092919050505061004b81610114640100000000026401000000009004565b151561005657600080fd5b806000807fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f86001026000191660001916815260200190815260200160002060007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6001026000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610166565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101555760009150610160565b823b90506000811191505b50919050565b6104bd806101756000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c9146101655780634558850c1461019057806348a0c8dd1461020f5780635c60da1b1461023e57806386070cfe14610295575b60006127105a101561011a5760003411801561008c5750600080369050145b151561009757600080fd5b61009f6102c8565b15156100aa57600080fd5b7f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee13334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1610162565b6101226102ff565b9050610161816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506103a0565b5b50005b34801561017157600080fd5b5061017a6103e3565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101cd600480360381019080803560001916906020019092919080356000191690602001909291905050506103ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021b57600080fd5b506102246102c8565b604051808215151515815260200191505060405180910390f35b34801561024a57600080fd5b506102536102ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b506102aa61042e565b60405180826000191660001916815260200191505060405180910390f35b60006102fa7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea60010260001916610434565b905090565b60008060007fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f86001026000191660001916815260200190815260200160002060007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6001026000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006103ab8361043f565b15156103b657600080fd5b612710905060008083516020850186855a03f43d604051816000823e82600081146103df578282f35b8282fd5b60006002905090565b60006020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610480576000915061048b565b823b90506000811191505b509190505600a165627a7a72305820fe12c379ea39fa43cb0d5478ecb6af9ec0e6bc5e1c6e0c5a3451dae188aef4d50029a165627a7a723058200aab433c24a618bf78b3944373b82d5969c7841756c5354047a893fc7104fd580029",
  "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063086b339e1461006757806321687444146100be578063656362b514610141578063b16dd13014610198575b600080fd5b34801561007357600080fd5b5061007c6101ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100ca57600080fd5b506100ff600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610215565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014d57600080fd5b506101566110fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a457600080fd5b506101ad611122565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610248611147565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561029a573d6000803e3d6000fd5b509450600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610402578473ffffffffffffffffffffffffffffffffffffffff1663485cc955600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156103e557600080fd5b505af11580156103f9573d6000803e3d6000fd5b5050505061108c565b8473ffffffffffffffffffffffffffffffffffffffff1663485cc955600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663de2873596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561056f57600080fd5b505af1158015610583573d6000803e3d6000fd5b505050506040513d602081101561059957600080fd5b810190808051906020019092919050505093508373ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561061057600080fd5b505af1158015610624573d6000803e3d6000fd5b505050506040513d602081101561063a57600080fd5b810190808051906020019092919050505092508473ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050506040513d60208110156106db57600080fd5b810190808051906020019092919050505091508373ffffffffffffffffffffffffffffffffffffffff16630a8ed3db600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1580156107ef57600080fd5b505af1158015610803573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663be038478600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168785306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15801561093c57600080fd5b505af1158015610950573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333404143866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610a1157600080fd5b505af1158015610a25573d6000803e3d6000fd5b505050506040513d6020811015610a3b57600080fd5b810190808051906020019092919050505090507f1a40224412580c1ae5a2fbe8029a565f49a3a029608a8fd9320b32477f31457981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a18373ffffffffffffffffffffffffffffffffffffffff16639d0effdb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b158015610bb257600080fd5b505af1158015610bc6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663a885508a86846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16639d0effdb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16639d0effdb3086866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16630a8ed3db8886866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b158015610f7c57600080fd5b505af1158015610f90573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663afd925df8886866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b505050505b7f3a7eb042a769adf51e9be78b68ed7af0ad7b379246536efc376ed2ca0123828285604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a18495505050505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405161063280611158833901905600608060405234801561001057600080fd5b506040516020806106328339810180604052810190808051906020019092919050505061004b81610114640100000000026401000000009004565b151561005657600080fd5b806000807fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f86001026000191660001916815260200190815260200160002060007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6001026000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610166565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101555760009150610160565b823b90506000811191505b50919050565b6104bd806101756000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c9146101655780634558850c1461019057806348a0c8dd1461020f5780635c60da1b1461023e57806386070cfe14610295575b60006127105a101561011a5760003411801561008c5750600080369050145b151561009757600080fd5b61009f6102c8565b15156100aa57600080fd5b7f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee13334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1610162565b6101226102ff565b9050610161816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506103a0565b5b50005b34801561017157600080fd5b5061017a6103e3565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101cd600480360381019080803560001916906020019092919080356000191690602001909291905050506103ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021b57600080fd5b506102246102c8565b604051808215151515815260200191505060405180910390f35b34801561024a57600080fd5b506102536102ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b506102aa61042e565b60405180826000191660001916815260200191505060405180910390f35b60006102fa7f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea60010260001916610434565b905090565b60008060007fc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f86001026000191660001916815260200190815260200160002060007f3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c6001026000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006103ab8361043f565b15156103b657600080fd5b612710905060008083516020850186855a03f43d604051816000823e82600081146103df578282f35b8282fd5b60006002905090565b60006020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610480576000915061048b565b823b90506000811191505b509190505600a165627a7a72305820fe12c379ea39fa43cb0d5478ecb6af9ec0e6bc5e1c6e0c5a3451dae188aef4d50029a165627a7a723058200aab433c24a618bf78b3944373b82d5969c7841756c5354047a893fc7104fd580029",
  "sourceMap": "220:1958:41:-;;;434:324;8:9:-1;5:2;;;30:1;27;20:12;5:2;434:324:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;636:1;604:34;;612:11;604:34;;;;600:89;;;667:11;654:10;;:24;;;;;;;;;;;;;;;;;;600:89;712:11;699:10;;:24;;;;;;;;;;;;;;;;;;743:8;733:7;;:18;;;;;;;;;;;;;;;;;;434:324;;;220:1958;;;;;;",
  "deployedSourceMap": "220:1958:41:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;277:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;277:19:41;;;;;;;;;;;;;;;;;;;;;;;;;;;860:1316;;8:9:-1;5:2;;;30:1;27;20:12;5:2;860:1316:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;302:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;302:42:41;;;;;;;;;;;;;;;;;;;;;;;;;;;246:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;246:25:41;;;;;;;;;;;;;;;;;;;;;;;;;;;277:19;;;;;;;;;;;;;:::o;860:1316::-;907:6;925:10;1142:7;1180:16;1242:22;1439:21;961:10;;;;;;;;;;;945:27;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;945:27:41;925:48;;1019:1;988:33;;996:10;;;;;;;;;;;988:33;;;984:1126;;;1037:3;:14;;;1052:7;;;;;;;;;;;1061:5;1037:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1037:30:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1037:30:41;;;;984:1126;;;1098:3;:14;;;1113:7;;;;;;;;;;;1122:4;1098:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1098:29:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1098:29:41;;;;1156:3;:7;;;:9;;;;;;;;;;;;;;;;;;;;;;;8::-1;5:2;;;30:1;27;20:12;5:2;1156:9:41;;;;8::-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1156:9:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1156:9:41;;;;;;;;;;;;;;;;1142:24;;1199:3;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1199:29:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1199:29:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1199:29:41;;;;;;;;;;;;;;;;1180:48;;1267:3;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1267:22:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1267:22:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1267:22:41;;;;;;;;;;;;;;;;1242:47;;1304:3;:19;;;1324:10;;;;;;;;;;;1336:3;1341:8;1304:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1304:46:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1304:46:41;;;;1365:3;:20;;;1386:10;;;;;;;;;;;1398:3;1403:14;1419:4;1365:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1365:59:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1365:59:41;;;;1463:10;;;;;;;;;;;:31;;;1495:3;1463:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:36:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1463:36:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1463:36:41;;;;;;;;;;;;;;;;1439:60;;1518:37;1550:3;1518:37;;;;;;;;;;;;;;;;;;;;;;1666:3;:20;;;1687:10;;;;;;;;;;;1699:3;1704:14;1666:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1666:53:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1666:53:41;;;;1733:3;:27;;;1761:3;1766:14;1733:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1733:48:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1733:48:41;;;;1882:3;:20;;;1903:10;;;;;;;;;;;1915:3;1920:8;1882:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1882:47:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1882:47:41;;;;1943:3;:20;;;1964:4;1970:3;1975:8;1943:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1943:41:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1943:41:41;;;;1998:3;:19;;;2018:5;2025:3;2030:8;1998:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1998:41:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1998:41:41;;;;2053:3;:24;;;2078:5;2085:3;2090:8;2053:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2053:46:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2053:46:41;;;;984:1126;2125:23;2143:3;2125:23;;;;;;;;;;;;;;;;;;;;;;2166:3;2159:10;;860:1316;;;;;;;;:::o;302:42::-;;;;;;;;;;;;;:::o;246:25::-;;;;;;;;;;;;;:::o;220:1958::-;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"../kernel/IKernel.sol\";\nimport \"../kernel/Kernel.sol\";\nimport \"../kernel/KernelProxy.sol\";\n\nimport \"../acl/IACL.sol\";\nimport \"../acl/ACL.sol\";\n\nimport \"./EVMScriptRegistryFactory.sol\";\n\n\ncontract DAOFactory {\n    IKernel public baseKernel;\n    IACL public baseACL;\n    EVMScriptRegistryFactory public regFactory;\n\n    event DeployDAO(address dao);\n    event DeployEVMScriptRegistry(address reg);\n\n    constructor(IKernel _baseKernel, IACL _baseACL, EVMScriptRegistryFactory _regFactory) public {\n        // No need to init as it cannot be killed by devops199\n        if (address(_regFactory) != address(0)) {\n            regFactory = _regFactory;\n        }\n\n        baseKernel = _baseKernel;\n        baseACL = _baseACL;\n    }\n\n    /**\n    * @param _root Address that will be granted control to setup DAO permissions\n    */\n    function newDAO(address _root) public returns (Kernel) {\n        Kernel dao = Kernel(new KernelProxy(baseKernel));\n\n        if (address(regFactory) == address(0)) {\n            dao.initialize(baseACL, _root);\n        } else {\n            dao.initialize(baseACL, this);\n\n            ACL acl = ACL(dao.acl());\n            bytes32 permRole = acl.CREATE_PERMISSIONS_ROLE();\n            bytes32 appManagerRole = dao.APP_MANAGER_ROLE();\n\n            acl.grantPermission(regFactory, acl, permRole);\n\n            acl.createPermission(regFactory, dao, appManagerRole, this);\n\n            EVMScriptRegistry reg = regFactory.newEVMScriptRegistry(dao);\n            emit DeployEVMScriptRegistry(address(reg));\n\n            // Clean up permissions\n            // First, completely reset the APP_MANAGER_ROLE\n            acl.revokePermission(regFactory, dao, appManagerRole);\n            acl.removePermissionManager(dao, appManagerRole);\n\n            // Then, make root the only holder and manager of CREATE_PERMISSIONS_ROLE\n            acl.revokePermission(regFactory, acl, permRole);\n            acl.revokePermission(this, acl, permRole);\n            acl.grantPermission(_root, acl, permRole);\n            acl.setPermissionManager(_root, acl, permRole);\n        }\n\n        emit DeployDAO(address(dao));\n\n        return dao;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/factory/DAOFactory.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/factory/DAOFactory.sol",
    "exportedSymbols": {
      "DAOFactory": [
        10090
      ]
    },
    "id": 10091,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9892,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:41"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "../kernel/IKernel.sol",
        "id": 9893,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 10249,
        "src": "25:31:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "../kernel/Kernel.sol",
        "id": 9894,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 10748,
        "src": "57:30:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
        "file": "../kernel/KernelProxy.sol",
        "id": 9895,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 10830,
        "src": "88:35:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 9896,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 7682,
        "src": "125:25:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "../acl/ACL.sol",
        "id": 9897,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 7167,
        "src": "151:24:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
        "file": "./EVMScriptRegistryFactory.sol",
        "id": 9898,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 10198,
        "src": "177:40:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          10829
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10090,
        "linearizedBaseContracts": [
          10090
        ],
        "name": "DAOFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 9900,
            "name": "baseKernel",
            "nodeType": "VariableDeclaration",
            "scope": 10090,
            "src": "246:25:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IKernel_$10248",
              "typeString": "contract IKernel"
            },
            "typeName": {
              "contractScope": null,
              "id": 9899,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10248,
              "src": "246:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$10248",
                "typeString": "contract IKernel"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9902,
            "name": "baseACL",
            "nodeType": "VariableDeclaration",
            "scope": 10090,
            "src": "277:19:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IACL_$7681",
              "typeString": "contract IACL"
            },
            "typeName": {
              "contractScope": null,
              "id": 9901,
              "name": "IACL",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7681,
              "src": "277:4:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IACL_$7681",
                "typeString": "contract IACL"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9904,
            "name": "regFactory",
            "nodeType": "VariableDeclaration",
            "scope": 10090,
            "src": "302:42:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
              "typeString": "contract EVMScriptRegistryFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 9903,
              "name": "EVMScriptRegistryFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10197,
              "src": "302:24:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                "typeString": "contract EVMScriptRegistryFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9908,
            "name": "DeployDAO",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9907,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9906,
                  "indexed": false,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 9908,
                  "src": "367:11:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9905,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "367:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "366:13:41"
            },
            "src": "351:29:41"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9912,
            "name": "DeployEVMScriptRegistry",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9910,
                  "indexed": false,
                  "name": "reg",
                  "nodeType": "VariableDeclaration",
                  "scope": 9912,
                  "src": "415:11:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9909,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "415:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "414:13:41"
            },
            "src": "385:43:41"
          },
          {
            "body": {
              "id": 9942,
              "nodeType": "Block",
              "src": "527:231:41",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 9927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9922,
                          "name": "_regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9918,
                          "src": "612:11:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 9921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "604:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 9923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "604:20:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "636:1:41",
                          "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": 9924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "628:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 9926,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "628:10:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "604:34:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9933,
                  "nodeType": "IfStatement",
                  "src": "600:89:41",
                  "trueBody": {
                    "id": 9932,
                    "nodeType": "Block",
                    "src": "640:49:41",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9928,
                            "name": "regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9904,
                            "src": "654:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9929,
                            "name": "_regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9918,
                            "src": "667:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "src": "654:24:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        },
                        "id": 9931,
                        "nodeType": "ExpressionStatement",
                        "src": "654:24:41"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9934,
                      "name": "baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9900,
                      "src": "699:10:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$10248",
                        "typeString": "contract IKernel"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9935,
                      "name": "_baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9914,
                      "src": "712:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$10248",
                        "typeString": "contract IKernel"
                      }
                    },
                    "src": "699:24:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$10248",
                      "typeString": "contract IKernel"
                    }
                  },
                  "id": 9937,
                  "nodeType": "ExpressionStatement",
                  "src": "699:24:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9938,
                      "name": "baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9902,
                      "src": "733:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$7681",
                        "typeString": "contract IACL"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9939,
                      "name": "_baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9916,
                      "src": "743:8:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$7681",
                        "typeString": "contract IACL"
                      }
                    },
                    "src": "733:18:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "id": 9941,
                  "nodeType": "ExpressionStatement",
                  "src": "733:18:41"
                }
              ]
            },
            "documentation": null,
            "id": 9943,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9914,
                  "name": "_baseKernel",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "446:19:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IKernel_$10248",
                    "typeString": "contract IKernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9913,
                    "name": "IKernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10248,
                    "src": "446:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$10248",
                      "typeString": "contract IKernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9916,
                  "name": "_baseACL",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "467:13:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$7681",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9915,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7681,
                    "src": "467:4:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9918,
                  "name": "_regFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "482:36:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                    "typeString": "contract EVMScriptRegistryFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9917,
                    "name": "EVMScriptRegistryFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10197,
                    "src": "482:24:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                      "typeString": "contract EVMScriptRegistryFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "445:74:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 9920,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "527:0:41"
            },
            "scope": 10090,
            "src": "434:324:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10088,
              "nodeType": "Block",
              "src": "915:1261:41",
              "statements": [
                {
                  "assignments": [
                    9951
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9951,
                      "name": "dao",
                      "nodeType": "VariableDeclaration",
                      "scope": 10089,
                      "src": "925:10:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$10747",
                        "typeString": "contract Kernel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9950,
                        "name": "Kernel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10747,
                        "src": "925:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$10747",
                          "typeString": "contract Kernel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9958,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9955,
                            "name": "baseKernel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9900,
                            "src": "961:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IKernel_$10248",
                              "typeString": "contract IKernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IKernel_$10248",
                              "typeString": "contract IKernel"
                            }
                          ],
                          "id": 9954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "945:15:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_IKernel_$10248_$returns$_t_contract$_KernelProxy_$10829_$",
                            "typeString": "function (contract IKernel) returns (contract KernelProxy)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 9953,
                            "name": "KernelProxy",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 10829,
                            "src": "949:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_KernelProxy_$10829",
                              "typeString": "contract KernelProxy"
                            }
                          }
                        },
                        "id": 9956,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "945:27:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KernelProxy_$10829",
                          "typeString": "contract KernelProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KernelProxy_$10829",
                          "typeString": "contract KernelProxy"
                        }
                      ],
                      "id": 9952,
                      "name": "Kernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10747,
                      "src": "938:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Kernel_$10747_$",
                        "typeString": "type(contract Kernel)"
                      }
                    },
                    "id": 9957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "938:35:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$10747",
                      "typeString": "contract Kernel"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "925:48:41"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 9965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9960,
                          "name": "regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9904,
                          "src": "996:10:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 9959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "988:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 9961,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "988:19:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1019:1:41",
                          "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": 9962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1011:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 9964,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1011:10:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "988:33:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10078,
                    "nodeType": "Block",
                    "src": "1084:1026:41",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9977,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9902,
                              "src": "1113:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9978,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "1122:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9974,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1098:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 9976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10346,
                            "src": "1098:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$7681_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 9979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1098:29:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9980,
                        "nodeType": "ExpressionStatement",
                        "src": "1098:29:41"
                      },
                      {
                        "assignments": [
                          9982
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9982,
                            "name": "acl",
                            "nodeType": "VariableDeclaration",
                            "scope": 10089,
                            "src": "1142:7:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ACL_$7166",
                              "typeString": "contract ACL"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 9981,
                              "name": "ACL",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7166,
                              "src": "1142:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9988,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9984,
                                  "name": "dao",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9951,
                                  "src": "1156:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Kernel_$10747",
                                    "typeString": "contract Kernel"
                                  }
                                },
                                "id": 9985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "acl",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10609,
                                "src": "1156:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$7681_$",
                                  "typeString": "function () view external returns (contract IACL)"
                                }
                              },
                              "id": 9986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1156:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              }
                            ],
                            "id": 9983,
                            "name": "ACL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7166,
                            "src": "1152:3:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ACL_$7166_$",
                              "typeString": "type(contract ACL)"
                            }
                          },
                          "id": 9987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1152:14:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$7166",
                            "typeString": "contract ACL"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1142:24:41"
                      },
                      {
                        "assignments": [
                          9990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9990,
                            "name": "permRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 10089,
                            "src": "1180:16:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9989,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1180:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9994,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9991,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1199:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 9992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "CREATE_PERMISSIONS_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5880,
                            "src": "1199:27:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 9993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1199:29:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1180:48:41"
                      },
                      {
                        "assignments": [
                          9996
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9996,
                            "name": "appManagerRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 10089,
                            "src": "1242:22:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9995,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1242:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10000,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9997,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1267:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 9998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "APP_MANAGER_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10281,
                            "src": "1267:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 9999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1267:22:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1242:47:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10004,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1324:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10005,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1336:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10006,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "1341:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10001,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1304:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6103,
                            "src": "1304:19:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1304:46:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10008,
                        "nodeType": "ExpressionStatement",
                        "src": "1304:46:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10012,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1386:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10013,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1398:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10014,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9996,
                              "src": "1403:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10015,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "1419:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10009,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1365:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6082,
                            "src": "1365:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (address,address,bytes32,address) external"
                            }
                          },
                          "id": 10016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1365:59:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10017,
                        "nodeType": "ExpressionStatement",
                        "src": "1365:59:41"
                      },
                      {
                        "assignments": [
                          10019
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10019,
                            "name": "reg",
                            "nodeType": "VariableDeclaration",
                            "scope": 10089,
                            "src": "1439:21:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                              "typeString": "contract EVMScriptRegistry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10018,
                              "name": "EVMScriptRegistry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 9287,
                              "src": "1439:17:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                                "typeString": "contract EVMScriptRegistry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10024,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10022,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1495:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10020,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1463:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            "id": 10021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newEVMScriptRegistry",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10196,
                            "src": "1463:31:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Kernel_$10747_$returns$_t_contract$_EVMScriptRegistry_$9287_$",
                              "typeString": "function (contract Kernel) external returns (contract EVMScriptRegistry)"
                            }
                          },
                          "id": 10023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1463:36:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                            "typeString": "contract EVMScriptRegistry"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1439:60:41"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10027,
                                  "name": "reg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10019,
                                  "src": "1550:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                ],
                                "id": 10026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1542:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1542:12:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10025,
                            "name": "DeployEVMScriptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9912,
                            "src": "1518:23:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1518:37:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10030,
                        "nodeType": "EmitStatement",
                        "src": "1513:42:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10034,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1687:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10035,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1699:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10036,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9996,
                              "src": "1704:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10031,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1666:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6160,
                            "src": "1666:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1666:53:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10038,
                        "nodeType": "ExpressionStatement",
                        "src": "1666:53:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10042,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1761:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10043,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9996,
                              "src": "1766:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10039,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1733:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removePermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6200,
                            "src": "1733:27:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32) external"
                            }
                          },
                          "id": 10044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1733:48:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10045,
                        "nodeType": "ExpressionStatement",
                        "src": "1733:48:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10049,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1903:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10050,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1915:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10051,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "1920:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10046,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1882:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10048,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6160,
                            "src": "1882:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1882:47:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10053,
                        "nodeType": "ExpressionStatement",
                        "src": "1882:47:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10057,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "1964:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10058,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1970:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10059,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "1975:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10054,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1943:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6160,
                            "src": "1943:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1943:41:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10061,
                        "nodeType": "ExpressionStatement",
                        "src": "1943:41:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10065,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9945,
                              "src": "2018:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10066,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "2025:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10067,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "2030:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10062,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1998:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6103,
                            "src": "1998:19:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1998:41:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10069,
                        "nodeType": "ExpressionStatement",
                        "src": "1998:41:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10073,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9945,
                              "src": "2078:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10074,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "2085:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10075,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "2090:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10070,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "2053:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6180,
                            "src": "2053:24:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2053:46:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10077,
                        "nodeType": "ExpressionStatement",
                        "src": "2053:46:41"
                      }
                    ]
                  },
                  "id": 10079,
                  "nodeType": "IfStatement",
                  "src": "984:1126:41",
                  "trueBody": {
                    "id": 9973,
                    "nodeType": "Block",
                    "src": "1023:55:41",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9969,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9902,
                              "src": "1052:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9970,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9945,
                              "src": "1061:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9966,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1037:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 9968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10346,
                            "src": "1037:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$7681_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 9971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1037:30:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9972,
                        "nodeType": "ExpressionStatement",
                        "src": "1037:30:41"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10082,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9951,
                            "src": "2143:3:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$10747",
                              "typeString": "contract Kernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$10747",
                              "typeString": "contract Kernel"
                            }
                          ],
                          "id": 10081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2135:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2135:12:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10080,
                      "name": "DeployDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9908,
                      "src": "2125:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 10084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2125:23:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10085,
                  "nodeType": "EmitStatement",
                  "src": "2120:28:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10086,
                    "name": "dao",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9951,
                    "src": "2166:3:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$10747",
                      "typeString": "contract Kernel"
                    }
                  },
                  "functionReturnParameters": 9949,
                  "id": 10087,
                  "nodeType": "Return",
                  "src": "2159:10:41"
                }
              ]
            },
            "documentation": "@param _root Address that will be granted control to setup DAO permissions",
            "id": 10089,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newDAO",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9945,
                  "name": "_root",
                  "nodeType": "VariableDeclaration",
                  "scope": 10089,
                  "src": "876:13:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9944,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "876:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:15:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 9949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9948,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10089,
                  "src": "907:6:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$10747",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9947,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10747,
                    "src": "907:6:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$10747",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "906:8:41"
            },
            "scope": 10090,
            "src": "860:1316:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 10091,
        "src": "220:1958:41"
      }
    ],
    "src": "0:2179:41"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/factory/DAOFactory.sol",
    "exportedSymbols": {
      "DAOFactory": [
        10090
      ]
    },
    "id": 10091,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9892,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:41"
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/IKernel.sol",
        "file": "../kernel/IKernel.sol",
        "id": 9893,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 10249,
        "src": "25:31:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/Kernel.sol",
        "file": "../kernel/Kernel.sol",
        "id": 9894,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 10748,
        "src": "57:30:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelProxy.sol",
        "file": "../kernel/KernelProxy.sol",
        "id": 9895,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 10830,
        "src": "88:35:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/IACL.sol",
        "file": "../acl/IACL.sol",
        "id": 9896,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 7682,
        "src": "125:25:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
        "file": "../acl/ACL.sol",
        "id": 9897,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 7167,
        "src": "151:24:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/factory/EVMScriptRegistryFactory.sol",
        "file": "./EVMScriptRegistryFactory.sol",
        "id": 9898,
        "nodeType": "ImportDirective",
        "scope": 10091,
        "sourceUnit": 10198,
        "src": "177:40:41",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          10829
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10090,
        "linearizedBaseContracts": [
          10090
        ],
        "name": "DAOFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 9900,
            "name": "baseKernel",
            "nodeType": "VariableDeclaration",
            "scope": 10090,
            "src": "246:25:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IKernel_$10248",
              "typeString": "contract IKernel"
            },
            "typeName": {
              "contractScope": null,
              "id": 9899,
              "name": "IKernel",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10248,
              "src": "246:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IKernel_$10248",
                "typeString": "contract IKernel"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9902,
            "name": "baseACL",
            "nodeType": "VariableDeclaration",
            "scope": 10090,
            "src": "277:19:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IACL_$7681",
              "typeString": "contract IACL"
            },
            "typeName": {
              "contractScope": null,
              "id": 9901,
              "name": "IACL",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7681,
              "src": "277:4:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IACL_$7681",
                "typeString": "contract IACL"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9904,
            "name": "regFactory",
            "nodeType": "VariableDeclaration",
            "scope": 10090,
            "src": "302:42:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
              "typeString": "contract EVMScriptRegistryFactory"
            },
            "typeName": {
              "contractScope": null,
              "id": 9903,
              "name": "EVMScriptRegistryFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10197,
              "src": "302:24:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                "typeString": "contract EVMScriptRegistryFactory"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9908,
            "name": "DeployDAO",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9907,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9906,
                  "indexed": false,
                  "name": "dao",
                  "nodeType": "VariableDeclaration",
                  "scope": 9908,
                  "src": "367:11:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9905,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "367:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "366:13:41"
            },
            "src": "351:29:41"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9912,
            "name": "DeployEVMScriptRegistry",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9910,
                  "indexed": false,
                  "name": "reg",
                  "nodeType": "VariableDeclaration",
                  "scope": 9912,
                  "src": "415:11:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9909,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "415:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "414:13:41"
            },
            "src": "385:43:41"
          },
          {
            "body": {
              "id": 9942,
              "nodeType": "Block",
              "src": "527:231:41",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 9927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9922,
                          "name": "_regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9918,
                          "src": "612:11:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 9921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "604:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 9923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "604:20:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "636:1:41",
                          "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": 9924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "628:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 9926,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "628:10:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "604:34:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9933,
                  "nodeType": "IfStatement",
                  "src": "600:89:41",
                  "trueBody": {
                    "id": 9932,
                    "nodeType": "Block",
                    "src": "640:49:41",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9928,
                            "name": "regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9904,
                            "src": "654:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9929,
                            "name": "_regFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9918,
                            "src": "667:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                              "typeString": "contract EVMScriptRegistryFactory"
                            }
                          },
                          "src": "654:24:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        },
                        "id": 9931,
                        "nodeType": "ExpressionStatement",
                        "src": "654:24:41"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9934,
                      "name": "baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9900,
                      "src": "699:10:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$10248",
                        "typeString": "contract IKernel"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9935,
                      "name": "_baseKernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9914,
                      "src": "712:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$10248",
                        "typeString": "contract IKernel"
                      }
                    },
                    "src": "699:24:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$10248",
                      "typeString": "contract IKernel"
                    }
                  },
                  "id": 9937,
                  "nodeType": "ExpressionStatement",
                  "src": "699:24:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9938,
                      "name": "baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9902,
                      "src": "733:7:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$7681",
                        "typeString": "contract IACL"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9939,
                      "name": "_baseACL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9916,
                      "src": "743:8:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IACL_$7681",
                        "typeString": "contract IACL"
                      }
                    },
                    "src": "733:18:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "id": 9941,
                  "nodeType": "ExpressionStatement",
                  "src": "733:18:41"
                }
              ]
            },
            "documentation": null,
            "id": 9943,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9914,
                  "name": "_baseKernel",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "446:19:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IKernel_$10248",
                    "typeString": "contract IKernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9913,
                    "name": "IKernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10248,
                    "src": "446:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$10248",
                      "typeString": "contract IKernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9916,
                  "name": "_baseACL",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "467:13:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IACL_$7681",
                    "typeString": "contract IACL"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9915,
                    "name": "IACL",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7681,
                    "src": "467:4:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IACL_$7681",
                      "typeString": "contract IACL"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9918,
                  "name": "_regFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "482:36:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                    "typeString": "contract EVMScriptRegistryFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9917,
                    "name": "EVMScriptRegistryFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10197,
                    "src": "482:24:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                      "typeString": "contract EVMScriptRegistryFactory"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "445:74:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 9920,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "527:0:41"
            },
            "scope": 10090,
            "src": "434:324:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10088,
              "nodeType": "Block",
              "src": "915:1261:41",
              "statements": [
                {
                  "assignments": [
                    9951
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9951,
                      "name": "dao",
                      "nodeType": "VariableDeclaration",
                      "scope": 10089,
                      "src": "925:10:41",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Kernel_$10747",
                        "typeString": "contract Kernel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9950,
                        "name": "Kernel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10747,
                        "src": "925:6:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Kernel_$10747",
                          "typeString": "contract Kernel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9958,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9955,
                            "name": "baseKernel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9900,
                            "src": "961:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IKernel_$10248",
                              "typeString": "contract IKernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IKernel_$10248",
                              "typeString": "contract IKernel"
                            }
                          ],
                          "id": 9954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "945:15:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_IKernel_$10248_$returns$_t_contract$_KernelProxy_$10829_$",
                            "typeString": "function (contract IKernel) returns (contract KernelProxy)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 9953,
                            "name": "KernelProxy",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 10829,
                            "src": "949:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_KernelProxy_$10829",
                              "typeString": "contract KernelProxy"
                            }
                          }
                        },
                        "id": 9956,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "945:27:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KernelProxy_$10829",
                          "typeString": "contract KernelProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KernelProxy_$10829",
                          "typeString": "contract KernelProxy"
                        }
                      ],
                      "id": 9952,
                      "name": "Kernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10747,
                      "src": "938:6:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Kernel_$10747_$",
                        "typeString": "type(contract Kernel)"
                      }
                    },
                    "id": 9957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "938:35:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$10747",
                      "typeString": "contract Kernel"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "925:48:41"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 9965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9960,
                          "name": "regFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9904,
                          "src": "996:10:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                            "typeString": "contract EVMScriptRegistryFactory"
                          }
                        ],
                        "id": 9959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "988:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 9961,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "988:19:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1019:1:41",
                          "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": 9962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1011:7:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 9964,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1011:10:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "988:33:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10078,
                    "nodeType": "Block",
                    "src": "1084:1026:41",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9977,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9902,
                              "src": "1113:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9978,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "1122:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9974,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1098:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 9976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10346,
                            "src": "1098:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$7681_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 9979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1098:29:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9980,
                        "nodeType": "ExpressionStatement",
                        "src": "1098:29:41"
                      },
                      {
                        "assignments": [
                          9982
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9982,
                            "name": "acl",
                            "nodeType": "VariableDeclaration",
                            "scope": 10089,
                            "src": "1142:7:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ACL_$7166",
                              "typeString": "contract ACL"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 9981,
                              "name": "ACL",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7166,
                              "src": "1142:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9988,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9984,
                                  "name": "dao",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9951,
                                  "src": "1156:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Kernel_$10747",
                                    "typeString": "contract Kernel"
                                  }
                                },
                                "id": 9985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "acl",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10609,
                                "src": "1156:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IACL_$7681_$",
                                  "typeString": "function () view external returns (contract IACL)"
                                }
                              },
                              "id": 9986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1156:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              }
                            ],
                            "id": 9983,
                            "name": "ACL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7166,
                            "src": "1152:3:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ACL_$7166_$",
                              "typeString": "type(contract ACL)"
                            }
                          },
                          "id": 9987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1152:14:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ACL_$7166",
                            "typeString": "contract ACL"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1142:24:41"
                      },
                      {
                        "assignments": [
                          9990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9990,
                            "name": "permRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 10089,
                            "src": "1180:16:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9989,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1180:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9994,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9991,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1199:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 9992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "CREATE_PERMISSIONS_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5880,
                            "src": "1199:27:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 9993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1199:29:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1180:48:41"
                      },
                      {
                        "assignments": [
                          9996
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9996,
                            "name": "appManagerRole",
                            "nodeType": "VariableDeclaration",
                            "scope": 10089,
                            "src": "1242:22:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9995,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1242:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10000,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9997,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1267:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 9998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "APP_MANAGER_ROLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10281,
                            "src": "1267:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 9999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1267:22:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1242:47:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10004,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1324:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10005,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1336:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10006,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "1341:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10001,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1304:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6103,
                            "src": "1304:19:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1304:46:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10008,
                        "nodeType": "ExpressionStatement",
                        "src": "1304:46:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10012,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1386:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10013,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1398:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10014,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9996,
                              "src": "1403:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10015,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "1419:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10009,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1365:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6082,
                            "src": "1365:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (address,address,bytes32,address) external"
                            }
                          },
                          "id": 10016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1365:59:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10017,
                        "nodeType": "ExpressionStatement",
                        "src": "1365:59:41"
                      },
                      {
                        "assignments": [
                          10019
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10019,
                            "name": "reg",
                            "nodeType": "VariableDeclaration",
                            "scope": 10089,
                            "src": "1439:21:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                              "typeString": "contract EVMScriptRegistry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10018,
                              "name": "EVMScriptRegistry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 9287,
                              "src": "1439:17:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                                "typeString": "contract EVMScriptRegistry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10024,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10022,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1495:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10020,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1463:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            "id": 10021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newEVMScriptRegistry",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10196,
                            "src": "1463:31:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Kernel_$10747_$returns$_t_contract$_EVMScriptRegistry_$9287_$",
                              "typeString": "function (contract Kernel) external returns (contract EVMScriptRegistry)"
                            }
                          },
                          "id": 10023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1463:36:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                            "typeString": "contract EVMScriptRegistry"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1439:60:41"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10027,
                                  "name": "reg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10019,
                                  "src": "1550:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EVMScriptRegistry_$9287",
                                    "typeString": "contract EVMScriptRegistry"
                                  }
                                ],
                                "id": 10026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1542:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1542:12:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10025,
                            "name": "DeployEVMScriptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9912,
                            "src": "1518:23:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1518:37:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10030,
                        "nodeType": "EmitStatement",
                        "src": "1513:42:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10034,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1687:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10035,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1699:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10036,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9996,
                              "src": "1704:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10031,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1666:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6160,
                            "src": "1666:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1666:53:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10038,
                        "nodeType": "ExpressionStatement",
                        "src": "1666:53:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10042,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1761:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10043,
                              "name": "appManagerRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9996,
                              "src": "1766:14:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10039,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1733:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "removePermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6200,
                            "src": "1733:27:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32) external"
                            }
                          },
                          "id": 10044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1733:48:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10045,
                        "nodeType": "ExpressionStatement",
                        "src": "1733:48:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10049,
                              "name": "regFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9904,
                              "src": "1903:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10050,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1915:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10051,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "1920:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_EVMScriptRegistryFactory_$10197",
                                "typeString": "contract EVMScriptRegistryFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10046,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1882:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10048,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6160,
                            "src": "1882:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1882:47:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10053,
                        "nodeType": "ExpressionStatement",
                        "src": "1882:47:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10057,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "1964:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10058,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1970:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10059,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "1975:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_DAOFactory_$10090",
                                "typeString": "contract DAOFactory"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10054,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1943:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "revokePermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6160,
                            "src": "1943:20:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1943:41:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10061,
                        "nodeType": "ExpressionStatement",
                        "src": "1943:41:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10065,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9945,
                              "src": "2018:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10066,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "2025:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10067,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "2030:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10062,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "1998:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "grantPermission",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6103,
                            "src": "1998:19:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1998:41:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10069,
                        "nodeType": "ExpressionStatement",
                        "src": "1998:41:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10073,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9945,
                              "src": "2078:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10074,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "2085:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10075,
                              "name": "permRole",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9990,
                              "src": "2090:8:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10070,
                              "name": "acl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9982,
                              "src": "2053:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ACL_$7166",
                                "typeString": "contract ACL"
                              }
                            },
                            "id": 10072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPermissionManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6180,
                            "src": "2053:24:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32) external"
                            }
                          },
                          "id": 10076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2053:46:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10077,
                        "nodeType": "ExpressionStatement",
                        "src": "2053:46:41"
                      }
                    ]
                  },
                  "id": 10079,
                  "nodeType": "IfStatement",
                  "src": "984:1126:41",
                  "trueBody": {
                    "id": 9973,
                    "nodeType": "Block",
                    "src": "1023:55:41",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9969,
                              "name": "baseACL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9902,
                              "src": "1052:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9970,
                              "name": "_root",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9945,
                              "src": "1061:5:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IACL_$7681",
                                "typeString": "contract IACL"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9966,
                              "name": "dao",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9951,
                              "src": "1037:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Kernel_$10747",
                                "typeString": "contract Kernel"
                              }
                            },
                            "id": 9968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10346,
                            "src": "1037:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IACL_$7681_$_t_address_$returns$__$",
                              "typeString": "function (contract IACL,address) external"
                            }
                          },
                          "id": 9971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1037:30:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9972,
                        "nodeType": "ExpressionStatement",
                        "src": "1037:30:41"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10082,
                            "name": "dao",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9951,
                            "src": "2143:3:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Kernel_$10747",
                              "typeString": "contract Kernel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Kernel_$10747",
                              "typeString": "contract Kernel"
                            }
                          ],
                          "id": 10081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2135:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2135:12:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10080,
                      "name": "DeployDAO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9908,
                      "src": "2125:9:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 10084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2125:23:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10085,
                  "nodeType": "EmitStatement",
                  "src": "2120:28:41"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10086,
                    "name": "dao",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9951,
                    "src": "2166:3:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$10747",
                      "typeString": "contract Kernel"
                    }
                  },
                  "functionReturnParameters": 9949,
                  "id": 10087,
                  "nodeType": "Return",
                  "src": "2159:10:41"
                }
              ]
            },
            "documentation": "@param _root Address that will be granted control to setup DAO permissions",
            "id": 10089,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "newDAO",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9945,
                  "name": "_root",
                  "nodeType": "VariableDeclaration",
                  "scope": 10089,
                  "src": "876:13:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9944,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "876:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:15:41"
            },
            "payable": false,
            "returnParameters": {
              "id": 9949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9948,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10089,
                  "src": "907:6:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Kernel_$10747",
                    "typeString": "contract Kernel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9947,
                    "name": "Kernel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10747,
                    "src": "907:6:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Kernel_$10747",
                      "typeString": "contract Kernel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "906:8:41"
            },
            "scope": 10090,
            "src": "860:1316:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 10091,
        "src": "220:1958:41"
      }
    ],
    "src": "0:2179:41"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-03-29T09:45:33.517Z",
  "devdoc": {
    "methods": {
      "newDAO(address)": {
        "params": {
          "_root": "Address that will be granted control to setup DAO permissions"
        }
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}